所需工具:安卓手机、Packet Capture (请自己在百度后下载) )。
首先,安装数据包捕获应用程序。 不具体演示
进入软件
这样进入主界面,左上角的两个绿色按钮分别是抓住一个APP网络请求和抓住所有请求
在要求他们抓住之前,重点是要尽量关闭QQ和Packet Capture以外的所有软件,以提高成功率,避免抓住其他无关的数据。 请如图所示严密操作
把这一页打开
切换到Packet Capture,单击右上角的绿色按钮,选择第一个,然后搜索QQ并选择QQ,然后开始抓取
首次使用时,系统会提示您单击“确定”(ok )
绿色按钮变成红色表示正在捕获。 此外,还会显示一条消息,打开我收到的坦率页面
进入这个名单,请稍等。 确保列表加载完整
单击以继续。 请确保单击以继续访问,如下图所示。 这是因为在检索数据时用Packet Capture的附属证书替换了原始证书。
切换到Packet Capture,点击右上角的红色停止按钮,结束这次的包。 这样,我们就有了一次记录,选择最近的时间点击进入
重点寻找QQ收发的数据包。 老实说,包含列表数据的包大小在10KB以上,是SSL类型
(抓到的数据包在30~50个左右。 请耐心地找)
这个数据包很大,只要用力向下翻,发现下图的数据,就是我们要分析的重点内容
接下来重点分析这些数据
1345679101112131516171819192021223242526272829、' data':' list':' fromnick':和' from nick ' 3: '
"*S1*oKoezon5" , "fromFaceUrl" : "man.png" , "fromGender" :0, "toUin" :1088668866, "toNick" : "" , "topicId" :666, "topicName" : "别人对你的匿名评价" , "timestamp" :1534435200 }, { "fromNick" : "一个x岁的女生" , "fromEncodeUin" : "*S1*oKoezon5" , "fromFaceUrl" : "woman.png" , "fromGender" :1, "toUin" :1088668866, "toNick" : "" , "topicId" :666, "topicName" : "别人对你的匿名评价" , "timestamp" :1534435200 } ] } }参数名含义备注fromNick对方所显示的匿名昵称e.g."一个认识3年的男生"
"一个南京的女生"fromEncodeUin编码后的对方QQ重点,从这里入手fromFaceUrl对方头像图片文件fromGender对方性别0为男,1为女toUin你的QQ号toNick你的昵称似乎都是空topicId话题ID话题索引topicName话题名称e.g. "我身边的最强大脑"
"将来能干一番大事"
"拥有迷人的长发"
也是对方给你发送的第一条消息timestamp时间戳1970年1月1日(UTC/GMT的午夜)开始所经过的秒数
1.去除*S1*这四个字符
结果变为 oKoezon5
现在我们就得到数据了,接下来使用解密工具解密即可,将数据粘贴进去即可
Z实验室在线解密工具
解密源码如下
C++ Code
#include <memory.h>#include <iostream>static char* table[] = { "oe", "oK", "ow", "oi", "7e", "7K", "7w", "7i", "Ne", "NK", "n", "6", "-", "o", "v", "4", "C", "S", "c", "E", "z", "5", "A", "i", "P", "k", "s", "l", "F", "q"};int matchChar(char a, char b, char* mNum);int decode(char* src, char * buf);int main() { /*待解码fromEncodeUin放在这里,注意不要包含*S1*这四个字符*/ char str[30] = { "oKoezon5" }; char buf[30]; memset(buf, 0, 30); decode(str, buf); std::cout << "解码结果:n" << buf << std::endl; return 0;}int matchChar(char a, char b, char* mNum) { if (NULL == mNum) return -1; int i; if ('o' == a) { i = 0; while (i < 4) { if (table[i][1] == b) { *mNum = i % 10 + 48; return 2; } i++; } /*增加多条特殊情况,if语句太多了-_-*/ if ('n' == b) { *mNum = 0 + 48; return 2; } if ('z' == b) { *mNum = 3 + 48; return 2; } *mNum = 3 + 48; return 1; } else if ('7' == a) { i = 4; while (i < 8) { if (table[i][1] == b) { *mNum = i % 10 + 48; return 2; } i++; } if ('v' == b) { *mNum = 5 + 48; return 2; } if ('z' == b) { *mNum = 7 + 48; return 2; } return -1; } else if ('N' == a) { i = 8; while (i < 10) { if (table[i][1] == b) { *mNum = i % 10 + 48; return 2; } i++; } if ('v' == b) { *mNum = 9 + 48; return 2; } if ('n' == b) { *mNum = 8 + 48; return 2; } return -1; } i = 10; while (i < 30) { if (table[i][0] == a) { *mNum = i % 10 + 48; return 1; } i++; } return -1;}int decode(char* src, char * buf) { if (NULL == src || NULL == buf) { return -1; } char* p = src; char* q = buf; int rc = 0; while (' ' != *p && -1 != (rc = matchChar(*p, *(p + 1), q))) { p += rc; q++; } return 0;}严正声明:
本文中所提到的技术/方法仅能用于个人学习与交流,请勿用于商业以及其他目的;请勿进行非法操作,请勿损害他人/社会/国家利益,请遵守相关法律法规,否则由此带来的一切后果均由操作者本人承担,与本文作者无关.
转载于:https://www.cnblogs.com/eric-ren/p/9230834.html