ZIP加密壓縮破解方法Known plaintext attack通過Key推出密碼的原理是什麼?
01-03
前段時間在電腦里發現了一個加密的Zip壓縮文件,打開後發現是我很早之前加密打包的,有些好奇裡面究竟是些什麼內容,可惜密碼早就忘了,試了好幾遍我常用的密碼都錯了,無奈只好採取破解手段(好吧我承認我閑得蛋疼……)。但是以我對自己的了解,我所用的密碼肯定不會是123、abc、生日電話這樣簡單的密碼,說不定還是字母大小寫加數字加符號這樣的密碼,窮舉暴破肯定是別想了。
於是並不抱多大期望地上網查了下ZIP密碼非暴力破解的方法,沒想到真找到了一種——Known plaintext attack(文本攻擊),網上這麼說的,在擁有加密包中任意一個文件的前提下,對該文件進行同樣演算法的無加密壓縮,然後對比兩個壓縮包中相同文件,得出差異值獲取這個加密包的三個Key,壓縮包中的每個文件都是通過這三個Key進行加密壓縮的,只要得到了這三個Key就能解壓整個加密的壓縮包(這個方法只適用於ZIP的加密壓縮)。我找了找,在硬碟的某個角落總算找到了一個這個壓縮包內的文件,然後找了個支持Known plaintext attack的解密軟體(貌似只有這一個軟體支持,名字就不透露了……)用這個方法總算是把這個包給解開了(原來只是一堆我無聊收集的一些圖片ORZ……),密碼也算出來了,果然很符合我變態的習慣……我對這個方法產生了興趣,並進行了很多次嘗試,然後發現了一個問題:這個軟體只能通過Key推出10位以內的密碼,如果密碼超過了10位,那麼就無法獲取密碼,但是依舊能通過這三個Key解壓加密包。於是我想請教一下Known plaintext attack通過Key推出密碼的原理是什麼?為何軟體只支持推出10位以內的密碼,是演算法限制還是軟體本身的限制?
原理是這樣的:你輸入的密碼,首先被轉換成3個32bit的key,所以可能的key的組合是2^96,這是個天文數字,如果用暴力窮舉的方式是不太可能的,除非你的密碼比較短或者有個厲害的字典。壓縮軟體用這3個key加密所有包中的文件,這也就是說,所有文件的key是一樣的,如果我們能夠找到這個key,就能解開所有的文件。如果我們找到加密壓縮包中的任意一個文件,這個文件和壓縮包里的文件是一樣的,我們把這個文件用同樣的壓縮軟體同樣的壓縮方式進行無密碼的壓縮,得到的文件就是我們的Known plaintext。用這個無密碼的壓縮包和有密碼的壓縮包進行比較,分析兩個包中相同的那個文件,抽取出兩個文件的不同點,就是那3個key了,如此就能得到key。兩個相同文件在壓縮包中的位元組數應該相差12個byte,就是那3個key了。雖然我們還是無法通過這個key還原出密碼,但是我們已經可以用這個key解開所有的文件,所以已經滿足我的要求了,而且要以前的密碼也沒什麼用呀,我只要文件。這個軟體是:Advanced ZIP Password Recovery
很不錯方法,本地測試成功。就是比如說,源包是360壓縮成的zip,我這裡使用好壓弄的zip,不知道能不能成功
你好,請看一下這個教程http://jingyan.baidu.com/article/3052f5a1f62d6597f31f861c.html
推薦閱讀:
※情人節收到一串數字密碼 請高手翻譯 74.101.32.116.105.109.101.33?
※解密!!!有個朋友寄了個明信片給我,然後我無能為力解開這個密碼,求?
※10年後密碼會消失么?
※有哪些好玩的密碼?
※斐波列契數列在《達芬奇密碼》中到底是如何運用的?