我必须以某种方式均衡两个非常相似的文件以获得相同的md5哈希值。我从这项工作中汲取灵感, https://natmchugh.blogspot.co.at/2015/05/how-to-make-two-binaries-with-same-md5.html?m=1
但我必须处理Postscript文件。我的文件看起来像这样:
在哪个块中我必须添加一些数据才能获得相同的文件,并获得相同的哈希值。
答案 0 :(得分:0)
两位研究人员Magnus Daum和Stefan Lucks在2005年展示了一对具有相同MD5哈希但内容不同的PostScript文件。请参阅Attacking Hash Functions by Poisoned Messages, "The Story of Alice and her Boss"。
他们的一对PostScript语言文件是手工制作的,具有以下形式:
%!PS-Adobe-1.0
%%BoundingBox: 0 0 612 792
(ËB¶jfiM‡’â_¯Âú¡ß/ ∑ó
F~™¿T>±˚Em3¸S‡[ԆɣxRÌZ3Œ6ô
únEZRÑyÎ/ΩïıWÂv:Ïø™Ÿ µsY»2Ù},π£v‘6 ˝Ô;É°Ú}Î 6SÜÿk»ÙîÙNa|ÑÄ`œoîµê)(ËB¶jfiM‡’â_¯Âú¡ß/ ∑ó
F~™¿T>±˚Em3¸S‡[ԆɣxRÌZ3Œ6ô
únEZRÑyÎ/ΩïıWÂv:Ïø™Ÿ µsY»2Ù},π£v‘6 ˝Ô;É°Ú}Î 6SÜÿk»ÙîÙNa|ÑÄ`œoîµê)eq{
% Code to print innocent document
}{
% Code to print evil document
}ifelse
showpage
请注意,代码有两个字符串,由括号()
分隔,并测试它们是否相等。如果它们相同,则文件打印无辜文档。否则,它会打印出邪恶的文件。
打印恶意文档的PostScript语言文档在第一个字符串中的八位字节序列略有不同:
(ËB¶jfiM‡’â_¯Âú¡ß/ ∑
F~™¿T>±˚Em3¸S‡[Ô†É#yRÌZ3Œ6ô
únE⁄RÑyÎ/ΩïıWÂv:Ïø™Ÿ µsYH2Ù},π£v‘6 ˝Ô;É°Ú}Î 6SÜXk»ÙîÙNa|ÑÄ`œÔîµê)
两个文件都具有相同的MD5摘要a25f7f0b29ee0b3968c860738533a4b9
。
由于您的文件包含二进制数据和各种其他内容,因此他们使用的结构不适合您。相反,您可以尝试在文件的早期部分插入这样的字符串。将它放在文件开头处的文档结构约定(以%
开头的行)之后。
(0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789) pop
然后使用散列冲突查找工具来识别需要替换的字符串体内哪些八位字节,以及其他八位字节,以使一个PostScript语言文件与另一个的md5哈希匹配。 / p>
哪个工具会发现哈希冲突不是特定于PostScript的问题,因此超出了此答案的范围。