我開發了一個應用程序,它接收來自服務器的信息,自動讀取數據包並將其保存爲數據庫中的浮點數。用1字節密鑰解碼1字節
示例: 數據接收(00 00 D0 41) - >反向順序(41 D0 00 00) - >轉換爲浮點(26.0)
最近的信息已稍有改變的,而不是發送4個字節服務器將發送5.
實施例: 0A 0C 0C 0F C0
我想出的是,第一字節是某種關鍵的,並且當此鍵是06,數據沒有被加密。
實施例: 06 00 00 D0 41
我看到的唯一鍵到目前爲止是00 06 08 0A和。
樣品義同:
06 00 00 D0 41(原始的,鍵06)
08 32 32 12 B4(編碼與鍵08)
00 EF EF 1B BF(編碼與鍵00)
0A 0C 0C C0 0F(用密鑰0A編碼)
看起來,它只是逐字節編碼,我得出這個結論是因爲在幾個數據包上,我知道原始字節是什麼,並且加密的字節保持不變。
示例:00(密鑰06)= 32(密鑰08)= EF(密鑰00)= 0C(密鑰0A)在每個數據包中。
我發現在數量上一些邏輯爲4的差異,
主要0A
00=>0C
04=>1C
08=>6C
0C=>7C
10=>CB
14=>DB
18=>2C
1C=>3C
20=>8B
24=>9B
28=>EB
2C=>FB
30=>4D
34=>5D
38=>AD
3C=>BD
我的問題是,什麼是找出加密算法的最佳方式?
- 我應該蠻力強制多個操作(XOR,旋轉和,...),看看他們是否匹配?
- 是否有算法有這種行爲?
謝謝你的回答,這是我正在尋找的答案,你能給我一些關於如何暴力的提示嗎?另外,你知道任何可以幫助我的程序嗎? – someone32
我通常不會做分析。必須有一些網站或應用程序能夠以自動方式做到這一點,但我不知道如何。也就是說,這個我可以通過筆/紙或類似的東西(用二進制而不是十六進制寫下來)弄清楚。這需要時間。 –
PS也有http://reverseengineering.stackexchange.com/ –