this file中的60个字符的字符串之一已通过单字符XOR加密。
找到它。
(#3的代码应该有帮助。)
挑战在于找到文件的哪一行是XOR加密的,什么是乱码。有一行是加密的。每行应该是60个字符(除了我找到一个58个字符行)。
出于某种原因,我在每行读取61个字符,58个字符行为59个字符,最后一行为60个字符。为什么是这样?我认为这是新行字符,但当我使用line[0:-1]
时,我没有成功解密。
这是我的python代码:
import binascii
def XORBreak(h):
en = binascii.unhexlify(h)
for key in range(256):
de = ''.join(chr(b ^ key) for b in en)
if de.isprintable():
print(de)
with open("TestFile_Challenge04_CSIS463.txt") as f:
for line in f:
XORBreak(line)
答案 0 :(得分:0)
首先,您应该使用.strip
删除空格(换行符等),例如:
for line in file
xor_decrypt(line.strip())
而不是盲目地删除一行的最后一个字符。
现在,您的代码几乎可以正常运行,但由于某种原因无法找到正确的字符串:'\n'
不可打印:
>>> '\n'.isprintable()
False
因此,包含换行符的任何字符串上的isprintable
将返回False
。
您可以使用类似any(c.isprintable() or c == '\n' for c in de)
的内容。