解密图像



我需要解密一个png文件。我无法打开/查看图像,因为它是加密的。当我在命令行中对图像运行file命令时,它说它是'data'类型。

我知道图像是使用异或加密的(就像一次性pad的情况一样),使用我不知道的秘密密钥。

我只有图像文件,没有其他信息。我应该怎样去寻找秘密的钥匙呢?

您还必须知道一次性pad是否与原始图像一样长。如果pad较短,那么它将被重复,直到明文结束。如果它是1到7字节长,那么它真的很容易,因为PNG文件格式的前8字节是已知的:x89PNGrnx1an.

计算key = ciphertext[0] ^ 'x89'。如果是key ^ ciphertext[1] == 'P',那么你就有钥匙了。否则,您需要在2到8中检查key ^ ciphertext[i] == knownHeader[i]i,看看是否有键的开头。根据你找到匹配的i,然后你知道垫有多长。然后,您可以计算剩余的密钥字节。

唯一剩下的就是使用整个密钥解密整个文件,并检查它是否合理。

对随机比特流进行XORing将导致实际上是随机的输出,因为每个比特的变化概率为0.5(参见Shannon, 1949)。如果您既没有密钥也没有映像,则无法恢复映像或密钥本身。

如果这是一种挑战,您可以尝试使用异或的属性来发挥您的优势。例如,如果有另一个具有相同密钥的图像XORing,并且该图像是明文并经过加密的,那么显然可以通过将未加密的图像XORing到加密的图像来找到密钥。或者你也可以试着猜那些在你的环境中很明显的键。

如果键是真正随机的,并且具有与输入相同的长度,则一次性键盘具有所有伟大的功能。例如,您的密钥可能更短且重复。

你可以利用的一个事实是,一个图像文件有一个已知的格式,所以相当多的关键位,你可以发现,如果你知道它应该是什么格式。一开始有一个神奇的数字来识别文件格式,然后根据实际的图像类型,一些字段有几个或只有一个潜在的值。让我们把它们填入正在构造的键中,看看是否有一个模式。但是,如果密钥真的是随机的,永远不会重用,并且只要映像,就不可能恢复映像文件。

相关内容

  • 没有找到相关文章

最新更新