知道两个二进制文件是否相同(除了时间戳)最简单的方法是什么(在Ubuntu Linux上使用图形工具或命令行)?我不需要提取差值。我只需要知道它们是否相同。
当前回答
带有以下选项的Diff将进行二进制比较,以检查文件是否完全不同,如果文件相同,则输出:
diff -qs {file1} {file2}
如果你在比较两个不同目录下同名的文件,你可以使用这种形式:
diff -qs {file1} --to-file={dir2}
OS X船长
其他回答
为了寻找闪存缺陷,我不得不写这个脚本,它显示所有包含差异的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分钟内破解了脚本。它不支持命令行参数,也不支持文件名中的空格
有一种相对简单的方法来检查两个二进制文件是否相同。
如果你在编程语言中使用文件输入/输出;您可以将这两个二进制文件的每一位存储到它们自己的数组中。
在这一点上,检查非常简单:
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
Radiff2是一个用来比较二进制文件的工具 常规diff比较文本文件。
尝试raddiff2,它是radare2反汇编程序的一部分。例如,使用以下命令:
radiff2 -x file1.bin file2.bin
您将得到非常格式化的两列输出,其中突出显示了差异。
使用sha1生成校验和:
sha1 [FILENAME1]
sha1 [FILENAME2]
推荐文章
- 如何在Python中获得所有直接子目录
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- 将一个二进制的NodeJS Buffer转换为JavaScript的ArrayBuffer
- 如何在Ruby中创建文件
- __FILE__宏显示完整路径
- 如何从另一个文件A中删除文件B中出现的行?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 如何删除文件中的特定行?
- 使用ImageMagick“Diff”图像
- Git分支之间的视觉差异
- 使用Java重命名文件
- 如何从Python包内读取(静态)文件?
- 我怎么能显示线在公共(反向差异)?
- 为什么我得到“Pickle - EOFError: run out of input”读取一个空文件?
- 写字符串到文本文件,并确保它总是覆盖现有的内容。