我有一个使用XOR算法加密的文件(如果需要的话是GIF类型)。 我唯一拥有的是加密文本,因此没有密钥或纯文本。现在,我想知道如何才能暴力破解此文件以获取(对称)密钥以最终对其进行解密。 如果我没记错的话,那应该是一个10字节的密钥。我已经研究过使用开膛手约翰,但我几乎只看到它被用来暴力破解帐户。 另外,如果相关,则我没有可以包含密钥的文件,因此它必须自行生成可能的密钥。
更新:
现在我找到了一种生成所有可能的十六进制密钥的方法,现在我将不得不再次使用xor算法对文件进行加密,以便在必要时对其进行解密。现在执行此操作将不成问题,但是当它具有正确的密钥时,如何检查要解密的加密是否起作用,因此从根本上讲它不再尝试任何进一步的操作?
答案 0 :(得分:0)
您(和@ gusto2)在使用魔术数字时是完全正确的:通过知道密钥的前6个字节为GIF89a,您可以立即获得密钥的前6个字节。
在gif specification之后,我们可以了解更多有关此键的信息。这里有一些提示,其中我从索引0开始对文件的字节编号(因此字节0-5对应于幻数):
纯文本gif文件的最后一个字节是0x3B。
魔术数字后面是一个7字节的逻辑屏幕描述符。前4个字节说明宽度和高度:如果您知道gif的宽度和高度,则可以导出密钥的其余4个未知字节。假设您不知道。
您将知道文件的字节10,因为它对应于XOR加密中的密钥字节0。解密该字节时,最高有效位是全局颜色表标志。如果该位为0,则不存在“全局颜色表”-这意味着下一个字节(字节11)是图像(字节为0x2C)块还是扩展(0x21)块。同样,您可以解密该字节(因为它对应于密钥字节1),因此您确切地知道它是什么。
图像出现在以0x2C开头并以00结尾的图像块中。
您可以采用两种方法对此进行解密:
(1)就像我上面描述的那样,手工工作。您应该能够解释这些块,并查找期望的密钥字节值0x2c,0x21、0x00和0x3b。从那里您可以找出下一步的意义,并手动得出密钥字节;或
(2)您强行强制使用最后4个字节(2 ^ 32个可能的值)。对于每个猜测,您都对候选gif图像进行解密,然后将结果馈送到gif解析器(example parser)中,以查看其是否发声。如果bar不休,那么您知道该候选人是错误的。如果没有,那么您就有可能进行真正的解密并将其保存。最后,您可以逐个查看您的真实候选者(您不会期望很多候选者),以查看哪个是正确的解密。
编辑:您说的宽度和高度分别为640和960。这意味着字节6和7将是640的小尾数表示,然后是8和9字节的小尾数表示960。您应该从中获得完整的密钥。试试看,让我们知道它是否有效。确保您正确设置了字节序!