成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

解析QQ2004的本地加密技術

2010-08-28 10:45:31來源:西部e網作者:

    我的本意是寫個暴力破解QQ本地密碼的程序,不過分析之后才發現,QQ密碼循環加密了n(n>60000)次。雖然程序還是能寫出來,不過可能需要很長時間才能算出一個短密碼,所以并沒有什么價值。唉!回去再看看自己寫的MD5算法,看看什么地方可以大幅度改進的。再不行的話,就看看能不能寫成萬臺機器聯機的形式,這個可能需要從解密算法上入手了。

  下面說明QQ本地文件加密的問題。QQ本地密碼文件保存在文件ewh.db中,加密方式是MD5和簡單位變換的結合。

  一:密碼文件結構

  密碼文件結構可以表示如下:

struct file_ewh.db
{
FileHeader *header; //文件頭
FileBlock *blocks; //文件塊數組
}

文件的圖形結構如下:
___________________________________
         
 文件頭 文件塊一 文件塊二 .......  
         
-----------------------------------

    下面我們就分別分析文件頭和文件塊的結構。

  1.文件頭。
  文件頭共6字節,第一字節固定為51('Q'),第二字節固定為44('D'),第三、四字節都為01。第5個字節開始的16位數據表示文件塊的個數。

  2.文件塊。

  文件塊的結構如下:

struct FileBlock
{
int8 type; //塊的類型(QQ里面只使用了4和7兩種)
int16 nameLen; //塊名字的長度
int8 name[nameLen];//塊的名字
int32 dataLen; //塊數據長度
int8 data[dataLen];//塊數據
}

  為了方便,這里的int8代表一個字節,余者類推。

  實際例子:

  我自己的QQ的密碼文件(不要破解我的啊!),其數據如下:

00000000: 51 44 01 01 03 00 04 03 00 bd af a8 04 00 00 00
00000010: c9 6a 09 00 07 03 00 b9 ab b4 10 00 00 00 0f c5
00000020: e9 d4 31 15 2f 12 c4 1c 0a 46 95 90 db 98 04 03
00000030: 00 a9 b5 b2 04 00 00 00 69 f4 aa 02
  總共60個字節。

  看的出來,文件中有3塊,類型分別為4,7,4。后面要說的,7代表密碼塊。

  ewh.db密碼文件的第3個文件塊的數據內容是密碼文件對應的QQ號碼。就是最后的4個字節的內容。

  大家可以隨便分析一下,看看文件結構是否符合。

    二:QQ的加密算法

  ewh.db里面保存了密碼加密后的結果。其中,第一個數據塊的數據是密碼進行MD5加密的輪次,第二個數據塊是加密后的結果。

  其加密過程簡單的描述如下:

1)設密碼為m[],加密輪次為n;
2)for(i=0;i//上面文件中的n=0x96ac9;
{
m=MD5(m);
}
3)for(i=0;i<16;i++)
{
m[i]=(!m[i])^al;//al在這里指的是密碼塊數據的長度
//上面的文件中al=10h;
}

  后記,QQ的加密算法和加密文件其實就這么簡單。由于筆者第一次實際分析程序(以前只有理論水平),所以,花了3到4天才分析清楚,分析的匯編函數可能有30-40多個吧,反正寫的筆記都有20多頁了(A4的紙張),還打印了16張代碼。

  另外,數據塊的名字也是加密過的(算法類上),上面的例子中的3個塊的名字分別為:"AST"、"EWH"和"UIN"。其實我還分析出了一些QQ的內存里面類的結構,只是沒有什么大用處,但我還是明白了加深類的層次將給解密者帶來極大的痛苦(QQ文件在內存中表示的有4層指針)。

  一點補充:

  常常有人問怎么離線看本地電腦的聊天紀錄。

  其實很簡單,把你QQ密碼文件的最后4字節修改成別人的QQ號碼,然后,拷貝這個文件到別人的號碼的目錄下覆蓋它的密碼文件就可以了。當然了,登陸的密碼就是你自己的QQ密碼了。


 

關鍵詞:QQ2004
主站蜘蛛池模板: 怀安县| 巴林右旗| 朝阳县| 淮阳县| 拜城县| 乌恰县| 屏东市| 涞水县| 文昌市| 锡林郭勒盟| 益阳市| 兴山县| 巍山| 和平区| 临泽县| 永定县| 金寨县| 吉木乃县| 兴宁市| 马关县| 名山县| 呼伦贝尔市| 依兰县| 普定县| 金堂县| 石屏县| 外汇| 桂东县| 文昌市| 德保县| 忻州市| 平武县| 社会| 沙河市| 沽源县| 措美县| 泌阳县| 普陀区| 建始县| 高雄市| 河西区|