16 進数で記述された XOR 暗号化バイトのリスト (「cipher.txt」に含まれ、1 行に 1 バイト) があり、使用される XOR キーが 1 バイトであることを知っています。したがって、私は次のようなブルート フォース アプローチを試みています。
f = open("cipher.txt", "r")
ciphers = f.readlines()
f.close
for x in range(0, 255):
key = bin(int(x))[2:]
for line in ciphers:
w = bin(int(line, 16))[2:]
y = int(w)
z = y ^ x
print chr(z),
print ""
そこで、私の結果 (z) はバイナリのままではありません。代わりに、「10010084」のような結果が得られます。「y = int(w)」の部分を使用しないと、「unsupported operand type(s) for ^: 'str' and 'int'」というエラーが表示されますが、理由はわかりませんが、変数の定義は機能する「キー」変数に似ているためです。
私のコードには、失敗の原因となる大きな間違いが 1 つあります。誰でもアドバイスできますか?