[**:
然後下圖是加密前後的對比:
會發現加密前的一堆0x55 加密後變成 0xa9 0xe9 0xda 0x52迴圈了,說明是用了4位元組的迴圈加密,然後切換成2進製研究
加密前 0x55 0x55 0x55 0x55 01010101 01010101 01010101 01010101
加密後 0xa9 0xe9 0xda 0x52 10101001 11101001 11011010 01010010
對稱逐字節加密的運算也就迴圈移位或者異或固定的數或者取反,但上面的幾組數迴圈移位和取反都不太像,就先假設是異或固定的數a b c d,接下來做填空題:
0x55 0x55 0x55 0x55 01010101 01010101 01010101 01010101
a b c d 11111100 10111100 10001111 00000111
0xa9 0xe9 0xda 0x52 10101001 11101001 11011010 01010010
得出:a b c d分別為0xfc 0xbc 0x8f 0x07 ,然後取開頭的資料驗證:
加密前 0x49 0x44 0x33 0x03 01001001 01000100 00110011 00000011
xor 0x3c 0xac 0xef 0x67 00111100 10101100 11101111 01100111
加密後 0x75 0xe8 0xdc 0x64 01110101 11101000 11011100 01100100
這次的a b c d分別為0x3c 0xac 0xef 0x67
納尼?不是固定的?wtf!
兩組a b c d低4位的數字都是 c c f 7
看來最終結果確實是xor計算來的,只是高4位的數值要複雜一些。
根據0 xor x =x的性質,我找了一組全0的加密前後的對比,
加密前 0x00 0x00 0x00 0x00 00000000 00000000 00000000 00000000
加密後 0xac 0xec 0xdf 0x57 10101100 11101100 11011111 01010111
那a b c d高4位就對應 0xa 0xe 0xd 0x5
再用開頭的資料驗證:
加密前 0x49 0x44 0x33 0x03 01001001 01000100 00110011 00000011
xor 0xac 0xec 0xdf 0x57 10101100 11101100 11011111 01010111
加密後 0xe5 0xa8 0xec 0x54 11100101 10101000 11101100 01010100
還是不對,而且發現一點:只要加密前的數的高4位=低4位,加密後的高4位都固定為0xa 0xe 0xd 0x5
這不就是xor 中的4個數的高4位嗎,由(0 xor x=x)和(x xor x=0)可知,高4位的演算法應該是這樣的:
分別取輸入數的高4位和低4位h,l, 然後取xor的高4位i 結果y= h xor l xor i
帶入前面的3組資料驗算,都對了^_^
既然加密演算法已經猜出來了,就擼碼驗證一下,看解密後的檔案的md5與快取檔名是否相等:
class結果:輸出檔案的md5與快取檔名相同,大功告成program
;using (var input = new filestream(@"
e:\kugou\temp\236909b6016c6e98365e5225f488dd7a.kgtemp
", filemode.open, fileaccess.read))
output.write(buffer,
0, length);
}output.close();
}console.writeline(
"按任意鍵退出...");
console.readkey();}}
固定要異或的key=
加密方式如下:
1.設輸入的數為x,輸出結果為y,迴圈變數為i;
2.分別取x的高4位和低4位h,l; h=x >> 4 ; l=x & 0xf;
3.分別取key[i]的高4位和低4位kh,kl;kh=key[i] >> 4;kl=key[i] & 0xf;
4.y=h ^ l ^ kh;
5.y=y<< 4 | (l ^ kl);
解密方式如下:
1.設輸入的數為x,輸出結果為y,迴圈變數為i;
2.分別取x的高4位和低4位h,l;h=x >> 4 ; l=x & 0xf;
3.分別取key[i]的高4位和低4位kh,kl;kh=key[i] >> 4;kl=key[i] & 0xf;
4.y=l ^ kl;
5.y=(h ^ kh ^ y)<<4 | y;
酷狗 kgtemp檔案加密演算法逆向
該帖 於孤心浪子 解密演算法 class program using var input new filestream e kugou temp kgtemp filemode.open,fileaccess.read output.write buffer,0,length output.clos...
從酷狗的網路紅歌說起
我比較喜歡聽歌,每次無聊的時候便會開啟酷狗來靜靜的聆聽。同時我也是乙個比較喜歡傷感情緒的人,每當耳邊響起的是小悲傷的調子,就感覺特別的能共振。當然我本身卻是乙個有點過於樂觀的人,也許喜歡悲傷的調子能夠平衡一下吧 好了,進入正題,以前聽歌都是用的電腦端的酷狗,而這一次用的卻是手機端。習慣性的我開啟了網...
爬取酷狗榜單中的top500
首先先看到top500的頁面,如下圖所示 網頁版的酷狗沒有翻頁的操作,所以不能看到後面頁數的鏈結,根據第一頁的鏈結,我們嘗試把鏈結裡面的數字1改為2,果然跳轉到第二頁去了,這樣就好辦了,每頁顯示22條歌曲,所以經過計算,需要23條url鏈結,後面自己手動建立url 具體的操作和解釋都下面 中 enc...