知道两个二进制文件是否相同(除了时间戳)最简单的方法是什么(在Ubuntu Linux上使用图形工具或命令行)?我不需要提取差值。我只需要知道它们是否相同。


当前回答

wxHexEditor

wxHexEditor是免费的,能够Diff大文件高达2^64字节(2 ExaByte)。有一个GUI。跨平台的。很多特性。

要免费获得它,请选择以下选项之一:

选项:Ubuntu包 选择:SourceForge 选择:GitHub


以下是与上面相同的建议。如果你对细节感兴趣的话。

截图

强度

•十六进制(Hex)编辑器。这对逆向工程很有帮助。

•跨平台。Linux, Mac OS, Windows

•易于使用的图形用户界面(GUI)

•支持非常大的文件高达2^64字节(2 ExaByte)

•并排比较两个大文件(diff)。可选的列表和搜索所有差异。

•搜索速度非常快

•使用少量的RAM

•不要创建临时文件。所以它只占用了很小的存储空间。

•黑暗或明亮的主题

15种语言

•开源。如果你不熟悉“开源”,这意味着这个软件有更强的安全性和更强的隐私性。因为它的代码是公开的,可以在https://github.com/EUA/wxHexEditor或https://sourceforge.net/p/wxhexeditor/code/的SourceForge上对GitHub进行审查和贡献

•吸引人的GNU通用公共许可证版本2。这意味着该扩展的软件代码由友好的非营利社区拥有和支持。而不是以营利为目的的公司。https://github.com/EUA/wxHexEditor/blob/master/LICENSE

挑战

•两个代码库之间的混淆。在撰写本文时,即2021年8月,GitHub存储库似乎是最近才出现的。最近一次更新是在2021年,网址是https://github.com/EUA/wxHexEditor 相比之下,https://sourceforge.net/projects/wxhexeditor/上的SourceForge存储库是wxHexEditor的最后一次更新是2017年12月31日。

表示支持

•如果你喜欢这个应用程序,用以下方式表达你对作者和贡献者的支持:

___•捐款:https://www.paypal.com/cgi-bin/webscr?item_name=Donation+to+wxHexEditor&cmd=_donations&business=erdem.ua%40gmail.com

___•支持与票在https://sourceforge.net/projects/wxhexeditor/support

支持论坛https://sourceforge.net/p/wxhexeditor/discussion/

___•补丁在https://sourceforge.net/p/wxhexeditor/patches/

使用

•wxHexEditor 0.23

•Debian 10 Buster

•GNOME 3.30.2

其他回答

你可以使用MD5哈希函数来检查两个文件是否相同,这样你就不能看到低层次的差异,但这是一个快速比较两个文件的方法。

md5 <filename1>
md5 <filename2>

如果两个MD5哈希值(命令回显)相同,则两个文件没有区别。

有一种相对简单的方法来检查两个二进制文件是否相同。

如果你在编程语言中使用文件输入/输出;您可以将这两个二进制文件的每一位存储到它们自己的数组中。

在这一点上,检查非常简单:

if(file1 != file2){
    //do this
}else{
    /do that
}
md5sum binary1 binary2

如果md5sum相同,则二进制文件相同

E.g

md5sum new*
89c60189c3fa7ab5c96ae121ec43bd4a  new.txt
89c60189c3fa7ab5c96ae121ec43bd4a  new1.txt
root@TinyDistro:~# cat new*
aa55 aa55 0000 8010 7738
aa55 aa55 0000 8010 7738


root@TinyDistro:~# cat new*
aa55 aa55 000 8010 7738
aa55 aa55 0000 8010 7738
root@TinyDistro:~# md5sum new*
4a7f86919d4ac00c6206e11fca462c6f  new.txt
89c60189c3fa7ab5c96ae121ec43bd4a  new1.txt

标准的unix diff将显示文件是否相同:

[me@host ~]$ diff 1.bin 2.bin
Binary files 1.bin and 2.bin differ

如果该命令没有输出,则意味着文件没有差异。

为了寻找闪存缺陷,我不得不写这个脚本,它显示所有包含差异的1K块(不仅仅是cmp -b所做的第一个)

#!/bin/sh

f1=testinput.dat
f2=testoutput.dat

size=$(stat -c%s $f1)
i=0
while [ $i -lt $size ]; do
  if ! r="`cmp -n 1024 -i $i -b $f1 $f2`"; then
    printf "%8x: %s\n" $i "$r"
  fi
  i=$(expr $i + 1024)
done

输出:

   2d400: testinput.dat testoutput.dat differ: byte 3, line 1 is 200 M-^@ 240 M- 
   2dc00: testinput.dat testoutput.dat differ: byte 8, line 1 is 327 M-W 127 W
   4d000: testinput.dat testoutput.dat differ: byte 37, line 1 is 270 M-8 260 M-0
   4d400: testinput.dat testoutput.dat differ: byte 19, line 1 is  46 &  44 $

免责声明:我在5分钟内破解了脚本。它不支持命令行参数,也不支持文件名中的空格