酷狗快取檔案kgtemp的加密方式

2022-01-29 18:33:55 字數 2586 閱讀 7078

[**:

然後下圖是加密前後的對比:

會發現加密前的一堆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

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();}}

結果:輸出檔案的md5與快取檔名相同,大功告成

固定要異或的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...