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


需要工具:安卓手機, Packet Capture(請自行百度后下載)

 

首先哈,安裝 Packet Capture APP,具體就不演示了哈

進入軟件

這樣就進入到主界面,左上角兩個綠色按鈕分別是抓取單一APP網絡請求與抓取全部請求

抓取請求

抓取前盡可能關掉除QQ與Packet Capture以外的所有軟件,提高成功率,還可以避免抓到其他無關數據

下面是重點,請嚴格按照如圖所示操作

提前打開這個頁面

 

 

切換到Packet Capture,點擊右上角的綠色按鈕,選擇第一個然后搜索 QQ 選擇QQ后開始抓取

 

第一次使用會提示,點擊"確定"即可

 

綠色按鈕變為紅色表示正在抓取中,同時出現提示信息

然后打開 我收到的坦白說的頁面 ,

進入此列表,等待一會,一定保證列表加載完全

繼續點擊進入,如果有下圖提示,一定點擊繼續訪問,原因是我們抓取數據時用了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;
}
復制代碼

 

嚴正聲明: 
本文中所提到的技術/方法僅能用於個人學習與交流,請勿用於商業以及其他目的;請勿進行非法操作,請勿損害他人/社會/國家利益,請遵守相關法律法規,否則由此帶來的一切后果均由操作者本人承擔,與本文作者無關.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM