比较两个不同大小的二进制文件

比较两个不同大小的二进制文件

我正在尝试比较两个二进制文件以识别其中一个。

我拥有的第一个文件包含我感兴趣的数据,可以用来识别第二个文件。第二个文件来自第三方,可能包含第一个文件中的信息(或非常相似的信息)。

两个文件的大小可能不同(例如,第一个文件可能为 500KB,而第二个文件为 4MB)。因此,我一直在尝试计算第一个文件在第二个文件中所占的比例,以便我可以肯定地说它们是相关的或来自同一来源(文件 1 的 99% 都存在于文件 2 中)。

我曾经尝试使用cmp -l file1.bin file2.bin | wc -l,但问题在于我感兴趣的区域并不一致。

我也尝试过使用,diff但它们总是不同的。如果我能找到总的不同字节数,我就可以从文件大小中减去这个数字,看看余数是否与我的文件匹配。

任何帮助深表感谢。

答案1

为了计算差异来比较二进制文件,您可以使用radiff2,您可以在 Linux 存储库中搜索它(可以在包 radare2 中找到)。

radiff2具有计算二进制差异的参数-c。它还能够计算 编辑距离 以及两个文件之间的相似度百分比,-s选项如下:

$ radiff2 -s /bin/true /bin/false
similarity: 0.97
distance: 743

有关使用的更多信息,radiff2请参阅文章 二进制差异

相关内容