QQ坦白说查看好友方法攻略

需要工具:安卓手机, Packet Capture(请自行百度后下载)

首先哈,安装 Packet Capture APP,具体就不演示了哈

进入软件

这样就进入到主界面,左上角两个绿色按钮分别是抓取单一APP网络请求与抓取全部请求

抓取请求

抓取前尽可能关掉除QQ与Packet Capture以外的所有软件,提高成功率,还可以避免抓到其他无关数据

下面是重点,请严格按照如图所示操作

提前打开这个页面

切换到Packet Capture,点击右上角的绿色按钮,选择第一个然后搜索 QQ 选择QQ后开始抓取

第一次使用会提示,点击"确定"即可

 

扫描二维码关注公众号,回复: 1769805 查看本文章

绿色按钮变为红色表示正在抓取中,同时出现提示信息

然后打开 我收到的坦白说的页面 ,

进入此列表,等待一会,一定保证列表加载完全

继续点击进入,如果有下图提示,一定点击继续访问,原因是我们抓取数据时用了Packet Capture自带证书替换了原证书.

切换到Packet Capture,点击右上角的红色停止按钮,结束本次抓包,这样我们就有了一次记录,选择最近时间点击进入

重点寻找QQ发出/接收的数据包,包含坦白说列表数据的数据包大小在10KB以上,且为SSL类型
(抓到的数据包大约在30~50个左右,耐心寻找)

这个数据包很大,使劲往下翻,如果类似于发现下图中的数据,就是我们所需分析的重点内容

接下来重点分析这些数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
   "code" :0,
   "data" :{
     "list" :[
       {
         "fromNick" : "一个认识y年的男生" ,
         "fromEncodeUin" : "*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 ('\0' != *p && -1 != (rc = matchChar(*p, *(p + 1), q))) {
        p += rc;
        q++;
    }
    return 0;
}
复制代码

严正声明: 
本文中所提到的技术/方法仅能用于个人学习与交流,请勿用于商业以及其他目的;请勿进行非法操作,请勿损害他人/社会/国家利益,请遵守相关法律法规,否则由此带来的一切后果均由操作者本人承担,与本文作者无关.

猜你喜欢

转载自www.cnblogs.com/eric-ren/p/9230834.html