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

解析QQ2004的本地加密技術(shù)

2010-08-28 10:45:31來源:西部e網(wǎng)作者:

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

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

  一:密碼文件結(jié)構(gòu)

  密碼文件結(jié)構(gòu)可以表示如下:

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

文件的圖形結(jié)構(gòu)如下:
___________________________________
         
 文件頭 文件塊一 文件塊二 .......  
         
-----------------------------------

    下面我們就分別分析文件頭和文件塊的結(jié)構(gòu)。

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

  2.文件塊。

  文件塊的結(jié)構(gòu)如下:

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

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

  實際例子:

  我自己的QQ的密碼文件(不要破解我的。。鋽(shù)據(jù)如下:

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個字節(jié)。

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

  ewh.db密碼文件的第3個文件塊的數(shù)據(jù)內(nèi)容是密碼文件對應的QQ號碼。就是最后的4個字節(jié)的內(nèi)容。

  大家可以隨便分析一下,看看文件結(jié)構(gòu)是否符合。

    二:QQ的加密算法

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

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

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在這里指的是密碼塊數(shù)據(jù)的長度
//上面的文件中al=10h;
}

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

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

  一點補充:

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

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


 

關(guān)鍵詞:QQ2004
主站蜘蛛池模板: 大洼县| 鹤峰县| 当雄县| 芒康县| 个旧市| 肇源县| 青阳县| 兴安盟| 光山县| 邹平县| 明光市| 岑溪市| 电白县| 贵阳市| 永春县| 中阳县| 郎溪县| 和田县| 调兵山市| 梁平县| 丰镇市| 阿巴嘎旗| 小金县| 荆州市| 潼关县| 荔波县| 丹江口市| 名山县| 莫力| 大英县| 察雅县| 南部县| 白水县| 嘉善县| 龙州县| 和平区| 祁东县| 渝中区| 建阳市| 凭祥市| 古蔺县|