2011-12-22 80 views
3

我有一個二進制數據文件,需要從中檢索一些數據。從試驗和錯誤以及十六進制編輯器的幫助下,我已經確定了我需要的文本區域,但我不確定正在使用哪種編碼。這個二進制字符串是什麼編碼?

每個字符使用兩個字節,但在我的樣本集中,第二個字節總是空的。

1F00 : a 
1C00 : b 
1A00 : d 
1B00 : e 
1900 : g 
1600 : h 
1700 : i 
1500 : k 
1200 : l 
1000 : n 
1100 : o 
0E00 : p 
0F00 : q 
0C00 : r 
0D00 : s 
0A00 : t 
0B00 : u 
0800 : v 
0900 : w 

5000 : . 
5E00 : <- space 

3F00 : A 
3C00 : B 
3D00 : C 
3A00 : D 
3B00 : E 
2D00 : S 

例如,單詞Hello被表示爲

16 00 1B 00 12 00 12 00 11 00 

顯然,奇怪的是,的0x41不是A,而字母甚至不是連續的。有可能是一些奇怪的密碼正在被使用,但我懷疑它。

Joop Eggen找到了下面的解決方案 - 一個簡單的xor!

+1

似乎是一個替代密碼。 '1200'總是'L'嗎? – Blender 2011-12-22 02:20:41

+0

我猜測這是某種特殊編碼,可能與舊的打印機方案或鍵盤佈局有關。這不是EBCDIC(與打孔卡片佈局有關),但有其他幾十個。 – 2011-12-22 02:25:41

+0

http://stackoverflow.com/questions/760572/human-friendly-binary-encoding - 有編碼方案(一些RFC驅動,一些很模糊),只使用某些字母,以避免混淆。你的不匹配我熟悉的任何東西,但你可能會有一些想法。在閱讀Base32上所有不同的變體後,我很感興趣。 – 2011-12-22 02:27:49

回答

2

您可能已經看到它了,但可以看到xorring。 這是一個窮人的加密,每一個字符爲INT:

code = (plain^0x7e) << 8 
+0

啊哈 - 就是這樣!我只是用二進制文件寫出其中的一些,看是否有簡單的事情發生。非常感謝! – grantcox 2011-12-22 03:16:46

0

如果你在Linux上嘗試使用enca(它檢測字符集和文本文件的編碼,也可以將它們轉換爲其他編碼)。

+0

我不是在linux上,但是我想過類似的東西,並且懷疑它會起作用 - 因爲我只是從二進制文件的中間拉出一個塊,沒有任何頭文件數據等等。而且,由於示例數據我已經很簡單了(雙字節編碼中的所有單字節)也不是很有用。 – grantcox 2011-12-22 02:46:43

0

肯定是有一個規律:

04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 
a                            x a 
b                         x    b 
c                          x   c 
d                       x      d 
e                        x     e 
f                     x        f 
g                      x       g 
h                   x          h 
i                    x         i 
j                 x            j 
k                  x           k 
l               x              l 
m                x             m 
n             x                n 
o              x               o 
p           x                  p 
q            x                 q 
r         x                    r 
s          x                   s 
t       x                      t 
u        x                     u 
v     x                        v 
w      x                       w 
x   x                          x 
y    x                         y 
z x                            z 
    04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F