2015-01-08 42 views
0

我開發了一個應用程序,它接收來自服務器的信息,自動讀取數據包並將其保存爲數據庫中的浮點數。用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,旋轉和,...),看看他們是否匹配?
  • 是否有算法有這種行爲?

回答

0

我會依次回答兩個相關的問題。

  • 是的,我會蠻力使用通常的嫌疑犯的算法。不要忘記加法(模256)。
  • 這不是我知道的算法,它似乎不是編碼或加密,更多的是混淆問題。

現代加密算法不處理已知的單字節密鑰併產生與隨機無法區分的數據。它也不是編碼,至少有字節似乎超出了字符編碼所期望的字節或例如BCD編碼。

+0

謝謝你的回答,這是我正在尋找的答案,你能給我一些關於如何暴力的提示嗎?另外,你知道任何可以幫助我的程序嗎? – someone32

+0

我通常不會做分析。必須有一些網站或應用程序能夠以自動方式做到這一點,但我不知道如何。也就是說,這個我可以通過筆/紙或類似的東西(用二進制而不是十六進制寫下來)弄清楚。這需要時間。 –

+0

PS也有http://reverseengineering.stackexchange.com/ –

相關問題