我有一個可執行文件,用於解密用戶輸入的二進制數據。我的任務是恢復解密算法而不看可執行文件的源代碼。我已經完成了大約50次解密嘗試,並且通過結果判斷,算法顯然很容易(類似於XOR,但更改輸入數據的一個字節通常影響輸出的兩個字節),密鑰的長度肯定是16字節,但我仍然無法恢復它。成功解密提示
所以,我的問題是:是否有成功恢復解密算法的任何提示?一些指導方針或任何其他幫助將不勝感激。
這裏有一些真實的例子,我可以看到那裏的規律性,但我無法理解整個算法。如果我輸入多於16個字節(例如17個零字節),則輸出字節序列重複。左邊是我輸入的內容,右邊是我得到的(一切都是十六進制):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 65
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 66
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 -> 93 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 75
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 -> 83 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 76
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 -> 83 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 A9 64
00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 BA 55
00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 B9 54
00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 75 A8 64
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 -> 73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 63
P.S.這不是常識中的「黑客攻擊」。我正在爲一個不明確的格式(.bmd)編寫一個3D模型查看器,但其中一些模型是加密的,所以我想實現自己的內部解密器而不是使用外部可執行文件。
對於除1和0以外的十六進制值的輸入有任何示例嗎? 「00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02」給你什麼? – 2011-03-25 18:38:52
@Null設置,是的,當然。它給了我'73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 63',我將它添加到示例列表中。 – Joulukuusi 2011-03-25 19:53:00
不發明自己的密碼是一個很好的實物教訓,因爲有人(在這種情況下@Angel和SO社區)會破壞它們。 ;) – 2011-03-28 06:22:13