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

Car*_*ens 3 linux comparison binary-files

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

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

这两个文件的大小可以不同(例如,第一个文件可能是 500KB,而第二个文件可能是 4MB)。因此,我一直试图对第一个文件中有多少在第二个文件中进行评分,以便我可以肯定地说它是相关的或源自同一来源(文件 1 的 99% 存在于文件 2 中)。

我试过使用,cmp -l file1.bin file2.bin | wc -l但问题是我感兴趣的领域没有对齐。

我也尝试过使用,diff但是它们总是不同的。如果我能找到不同的总字节数,我可以将其从文件大小中删除,以查看剩余部分是否与我的文件匹配。

任何帮助深表感谢。

har*_*ymc 5

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

radiff2具有-c计算二进制差异的参数。它还能够 使用以下选项计算 Levenshtein 距离和两个文件之间的相似性百分比-s

$ radiff2 -s /bin/true /bin/false
similarity: 0.97
distance: 743
Run Code Online (Sandbox Code Playgroud)

有关使用的更多信息,radiff2请参阅文章 Binary diffing