【原創】winrar加密分析 | ![]() |
标 題: winrar加密分析
作 者: 天易love
時 間: 2009-10-02,06:33:10
鍊 接: http://bbs.pediy.com/showthread.php?t=98812
條件限制,用非智能手機發的,因而無法圖文并貌,請大家包涵。
一、加密檔案大體結構:
1、隻加密檔案内容時。偏移14-15h是對其後一直到檔案頭結束處也就是加密資料開始處的校驗值。檔案頭中檔案名後至檔案頭結束處是八位元組的salt和5位元組的未知區域(功能暫不詳),加密資料後緊跟固定的結束字元串c4 3d 7b 00 40 07 00。
2、頭和内容均加密時:偏移14-15h是salt2,尾部還出現一次。緊跟的是加密的檔案頭(頭中尾部是salt1和5位元組的未知區域)和加密的檔案内容(壓縮後再進行aes加密),最後就是salt2和經過aes加密的固定結束字元串。注:生成salt的函數調用了2次。
二、簡述salt算法:
1、由SystemTime得到FileTime;
2、分别對FileTime的兩個DWORD進行hash_process;
3、hash_final後得到的digest的最前面的兩個DWORD就是salt。
三、加密過程:
1、先将salt接在unicode形式的密碼後再用hash_final生成aesinit、aeskey、10輪round key。
2、壓縮好的檔案内容分組長為每一個分組128bit,開始加密前先與前一個分組xor生成一個state參與aes加密,第一個分組與aesinit進行xor。
四、隐患:
由于salt是随機産生,因而aeskey和round key也是随機的,檔案加密結果就是随機的。這個變量的使用給我們提供了利用空間。插一句,假如由加密後資料逆推得到aeskey但由于是經過hash得到,這是不可逆的,是以不可能知道密碼。唯一可行就是讓其加密過程中自己将密碼儲存到salt處最好用可逆向的加密算法處理一下,這不會有任何影響,隻是讓它多了層含義。
以上是我的一點膚淺的認識,望批評指正!
天易love
2009-10-2