Block-Cipher
確定加密方法
我正在嘗試對使用密碼加密文件的程序進行逆向工程。
到目前為止,我發現文件的開頭總是用密碼加密的字元串“DecryptOK”。
密碼為“one”的“空”文件變成
ED5BDE97BB90DE1377948A31B0EECB4B4D8B
我認為會是
ED5B DE97 BB90 DE13 7794 8A31 B0EE CB4B 4D8B
又名“解密OK”。
所以我的問題是我如何從這裡繼續?我如何弄清楚正在使用什麼加密方法?
以下是我用密碼“one”加密的一些文本:
123
至3366 7FAD CAF5
abc
至3336 7FFD CAA5
cookies
至3334 7FF0 CAA9 33F7 D2D2 60AB 86EB
所以我的問題是我如何從這裡繼續?如何確定正在使用的加密方法?
從本質上講,這聽起來像您對允許您為其提供密鑰和文件的某些東西具有黑盒訪問權限,並且它使用提供的密鑰返回該文件的加密(在其周圍添加一些文件格式之後)。
您的目標是弄清楚加密是如何工作的。在實際執行此操作之前,您可能需要考慮一些法律問題,但除了法律問題之外,您還有很多選擇。
您最好的選擇是對正在進行加密的程式碼進行逆向工程。該軟體是在您的電腦上執行還是在某種硬體設備上執行?無論哪種情況,您都應該能夠通過將程式碼放入反彙程式序並進行靜態分析,或將其放入調試器並進行動態分析來獲取程式碼並對其進行逆向工程。
但是,讓我們假設您無法以任何方式訪問程式碼。也許這個黑匣子正在您無權訪問的遠端伺服器上執行。然後,您的目標是弄清楚他們使用什麼密碼(例如,AES、DES、3DES、RC4 等)以及正在使用什麼加密模式。
您可以通過詢問幾個問題並使用您的黑匣子訪問開始回答問題來開始執行此操作。
- 加密是確定性的嗎?或者換句話說,給定相同的明文(或文件)和密鑰,它是否總是返回相同的結果?
- 如果我在明文中翻轉一個位,生成的密文會如何變化?
- 如果你將密文作為明文輸入會發生什麼,你會得到原始明文嗎?換句話說,加密模式是否與它本身相反?
- 通過在不同的地方翻轉位,你能算出塊的大小嗎?根據使用的模式,您在哪裡翻轉位可以改變哪些塊實際改變?
- 其他要調查的是為什麼密文似乎總是是明文大小的兩倍?當你傳入
123
ASCII 時,它有 3 個字節,為什麼你會得到 6 個字節?是否正在進行某種編碼?這就是我建議從你所在的地方繼續的方式。