閱讀目錄
1,WEBQQ的登陸協定
2,傳說中的心跳包
3,獲得群,好友,
4實戰(盜号-外挂-廣告)
要說怎麼突然研究起WEBQQ,也是比較偶然的機會,因為前一份工作專注于B2C商城的開發,
經常,自己寫點工具,模拟一個HTTP請求來進行秒殺之類的,然後聯想到QQ的農場,牧場
有很多輔助的小工具,自己開始研究WEBQQ,時間大概是2個雙休,4天.
1,WEBQQ登陸協定
工具:火狐+firebug
1, 進入WEBQQ,
http://web.qq.com/,
通過工具分析,可以知道,通過WEB登陸,會首先GET一個請求過去
http://check.ptlogin2.qq.com/check?uin=236773862&appid=1003903&r=0.14233942252344134,我們隻詳細分析下這一個請求,看看,這個請求到底攜帶了什麼樣的資料
請求頭部這些内容,就是等會,模拟HTTP送出需要的,
這個GET請求傳回ptui_checkVC('0','!W61','\x00\x00\x00\x00\x9b\x8f\xdb\xab');這樣的字元串,其中第一個字元串,’0’代表不需要驗證碼,’!w61’這個資料,是等會登陸需要的,
第3個參數沒用,
我輸入密碼登陸,監控到這樣一個請求
http://ptlogin2.qq.com/login?u=236773862&p=C678AF49F29847C34BA8165EDE59C5A7&verifycode=quhw&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=8-38-447467&mibao_css=m_webqq&t=3&g=1,
這個不用多說了,接着用C#進行模拟就行了,其中厘清哪些是不變的就行了
String loginUrl = "http://ptlogin2.qq.com/login?u=" + qq + "&p=" + md5pass + "&verifycode=" + verifyCode + "&webqq_type=10&remember_uin=1&login2qq=0&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=6-25-303994&mibao_css=m_webqq&t=1&g=1";
不用多說了吧, md5pass這個是密碼加密後的一個參數
加密的方式,就是QQ号,密碼的明文,還有就是驗證碼,如果沒有驗證碼就是,’!w61’這個參數,至于如何加密的,其實也非常簡單,騰訊的加密肯定在用戶端加密然後傳輸的,找到相應的JS檔案,然後改寫成C#版本就行了,至于第三個參數,就是驗證碼或者是’!w61’了,
ptuiCB('0','0','http://web2.qq.com/loginproxy.html?login2qq=1&webqq_type=10','0','登入成功!', 'Zr');
登陸成功後,傳回這樣的一個格式,一旦登陸成功,我就可以拿到COOKie了
有了COOKIE,可以取出PTWEBQQ,和Skey,因為接着還會有一個POST包過去
http://d.web2.qq.com/channel/login2其中這個POST請求需要PTWEBQQ,我們構造一下,POST過去
String postData = String.Format("r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22psessionid%22%3Anull%7D&clientid={2}&psessionid=null", this.ptwebqq, this.clientid, this.clientid);
String login3 = QQ.getHtml(channelLoginUrl, "post", postData);
其中clientid是個随機數,自己定義就行了,那麼到此,登陸就完成了,我們看一下界面
1,心跳包
顧名思義,心跳包,就是維持一個長連接配接,讓WEBQQ保持線上的一種機制,.這個心跳包非常簡單
http://d.web2.qq.com/channel/poll2隻需要每隔幾秒,或者寫一個死循環也可以,,
這個位址POST
這樣一段資料,就可以了,其中必要的參數,在登陸的時候可以全部拿到,這裡值得一說的是,當POST這個資料過去後,伺服器會等大概30秒左右的時間,如果30秒,QQ沒有收到任何資訊,那麼它會自動傳回,如果有資訊會攜帶資訊傳回
實際上,這個心跳包弄清楚後,後面基本就沒難度了,自己完全可以寫一個簡單的QQ,,難道這就是所謂的長連接配接??
1,獲得群和好友
獲得群和好友,然後模拟HTTP請求,就可以聊天了。。。這裡簡單的說
對這個位址POST,然後會傳回一個JSON,自己解析吧,後面已經沒有技術含量了,體力活了
1,實戰
我記得騰訊有很多遊戲。。。同樣的方法,先寫個簡單的3366外挂,其實很簡單,就是一個get請求過去,分數什麼的自己寫吧,,把外挂上傳,其實盜個什麼QQ号的,沒一點技術含量,,
自己嘗試了下,。。。在比如說
等等吧,盜來的QQ号,有什麼用??呵呵,我個人都是拿來上傳我的外挂,然後盜更多的号,其實研究WEBQQ或者PCQQ協定的人,都是為了打廣告,我至今難于忘記,那個賣鐵觀音茶的廣告,幾乎每個人的群裡都會有這麼一個廣告。。,不光是QQ.新浪微網誌刷粉也可以這樣搞,本人精力有限,連寫這篇文章,都是趕出來的,有興趣的同僚,可以找我要源碼,或者一起研究都可以
BY
gitdnn