知道两个二进制文件是否相同(除了时间戳)最简单的方法是什么(在Ubuntu Linux上使用图形工具或命令行)?我不需要提取差值。我只需要知道它们是否相同。
标准unix diff将显示文件是否相同:
diff
[me@host ~]$ diff 1.bin 2.bin Binary files 1.bin and 2.bin differ
如果该命令没有输出,则意味着文件没有差异。
使用sha1生成校验和:
sha1 [FILENAME1] sha1 [FILENAME2]
使用cmp命令。如果它们是二进制相等,这将干净地退出,或者它将打印出第一个差值发生的位置并退出。
cmp
我发现视觉二进制差异是我正在寻找的,可用的:
sudo apt install vbindiff
Arch Linux:
sudo pacman -S vbindiff
Mac OS X via MacPorts:
port install vbindiff
Mac OS X via Homebrew:
brew install vbindiff
使用cmp命令。更多信息请参考二进制文件和强制文本比较。
cmp -b file1 file2
为了找到闪存缺陷,我不得不写这个脚本,它显示了所有包含差异的1K块(不仅仅是cmp -b那样的第一个)
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分钟内破解了脚本。它不支持命令行参数,也不支持文件名中的空格
你可以使用MD5哈希函数来检查两个文件是否相同,这样你就不能看到低层次的差异,但这是一个快速比较两个文件的方法。
md5 <filename1> md5 <filename2>
如果两个MD5哈希值(命令回显)相同,则两个文件没有区别。
我最终使用hexdump将二进制文件转换为十六进制表示,然后在meld / kompare /任何其他diff工具中打开它们。我不像你,我要找的是文件中的差异。
hexdump tmp/Circle_24.png > tmp/hex1.txt hexdump /tmp/Circle_24.png > tmp/hex2.txt meld tmp/hex1.txt tmp/hex2.txt
带有以下选项的Diff将进行二进制比较,以检查文件是否完全不同,如果文件相同,则输出:
diff -qs {file1} {file2}
如果你在比较两个不同目录下同名的文件,你可以使用这种形式:
diff -qs {file1} --to-file={dir2}
OS X El Capitan
简单回答:用-s开关运行diff。
-s
长话短说:继续往下读。
举个例子。让我们先创建两个包含随机二进制内容的文件:
$ dd if=/dev/random bs=1k count=1 of=test1.bin 1+0 records in 1+0 records out 1024 bytes (1,0 kB, 1,0 KiB) copied, 0,0100332 s, 102 kB/s $ dd if=/dev/random bs=1k count=1 of=test2.bin 1+0 records in 1+0 records out 1024 bytes (1,0 kB, 1,0 KiB) copied, 0,0102889 s, 99,5 kB/s
现在让我们复制第一个文件:
$ cp test1.bin copyoftest1.bin
现在test1.bin和test2.bin应该是不同的:
$ diff test1.bin test2.bin Binary files test1.bin and test2.bin differ
... test1.bin和copyoftest1.bin应该是相同的:
$ diff test1.bin copyoftest1.bin
但是等等!为什么没有输出?!?
答案是:这是有意为之。在相同的文件上没有输出。
但是有不同的错误代码:
$ diff test1.bin test2.bin Binary files test1.bin and test2.bin differ $ echo $? 1 $ diff test1.bin copyoftest1.bin $ echo $? 0
幸运的是,现在你不必每次都检查错误代码,因为你可以使用__ABC0(或--report-identical-files)开关来让diff变得更详细:
--report-identical-files
$ diff -s test1.bin copyoftest1.bin Files test1.bin and copyoftest1.bin are identical
有一种相对简单的方法来检查两个二进制文件是否相同。
如果你在编程语言中使用文件输入/输出;您可以将这两个二进制文件的每一位存储到它们自己的数组中。
在这一点上,检查非常简单:
if(file1 != file2){ //do this }else{ /do that }
md5sum binary1 binary2
如果md5sum相同,则二进制文件相同
如
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
Radiff2是一个用来比较二进制文件的工具,类似于how . .
尝试radiff2,它是radare2反汇编程序的一部分。例如,使用以下命令:
radiff2
radare2
radiff2 -x file1.bin file2.bin
您将得到非常格式化的两列输出,其中突出显示了差异。
我最喜欢的使用xxd十六进制转储从vim包:
1)使用vimdiff (vim的一部分)
#!/bin/bash FILE1="$1" FILE2="$2" vimdiff <( xxd "$FILE1" ) <( xxd "$FILE2" )
2)使用diff
#!/bin/bash FILE1=$1 FILE2=$2 diff -W 140 -y <( xxd $FILE1 ) <( xxd $FILE2 ) | colordiff | less -R -p ' \| '
wxHexEditor是免费的,能够Diff大文件高达2^64字节(2 ExaByte)。有一个GUI。跨平台的。很多特性。
要免费获得它,请选择以下选项之一:
以下是与上面相同的建议。如果你对细节感兴趣的话。
•十六进制(Hex)编辑器。这对逆向工程很有帮助。
•跨平台。Linux, Mac OS, Windows
•易于使用的图形用户界面(GUI)
•支持非常大的文件高达2^64字节(2 ExaByte)
•并排比较两个大文件(diff)。可选的列表和搜索所有差异。
•搜索速度非常快
•使用少量的RAM
•不要创建临时文件。所以它只占用了很小的存储空间。
•黑暗或明亮的主题
15种语言
•开源。如果你不熟悉“开源”,这意味着这个软件既具有更强的安全性,又具有更强的安全性。更强的隐私。因为它的代码在GitHub的https://github.com/EUA/wxHexEditor或SourceForge的https://sourceforge.net/p/wxhexeditor/code/上公开可供审查和贡献
•吸引人的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