3

我有两个相同的 .fit 图像。

Linux@Linux:~/imgs/ImageTesting# sha256sum hexd_ss.fit ss.fit

dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0 hexd_ss.fit dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0

我改变了一点 hexd_ss.fit

Linux@Linux:~/imgs/ImageTesting# vi hexd_ss.fit

0000 0000

0000 0001

所以我有两个不同的文件大小和不同的哈希

> Linux@Linux:~/imgs/ImageTesting# ls -l total 9344
> -rw-r--r-- 1 root root 4781261 Jun 16 15:45 hexd_ss.fit
> -rw-r--r-- 1 root root 4781260 Jun 16 15:33 ss.fit
> 

Linux@Linux:~/imgs/ImageTesting# sha256sum hexd_ss.fit ss.fit

f3277110043b4170c111fa7d4291aa7df23de68c9e504259ae6158e5133faf1a hexd_ss.fit dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0s

但是当我像以前一样再次更改那个位 0 时,它的大小和两个不同的哈希值保持不变。

改变后

> 0000 0001  to > 0000 0000

Linux@Linux:~/imgs/ImageTesting# ls -l

-rw-r--r-- 1 root root 4781261 Jun 16 15:47 hexd_ss.fit
-rw-r--r-- 1 root root 4781260 Jun 16 15:33 ss.fit

即使我将两个零字节更改为两个一字节,大小也保持不变。作为,

0000 1111

Linux@Linux:~/imgs/ImageTesting# ls -l

-rw-r--r-- 1 root root 4781261 Jun 16 15:47 hexd_ss.fit
-rw-r--r-- 1 root root 4781260 Jun 16 15:33 ss.fit

所以我的问题是——

  1. 为什么不能反转 HexEdit ?
  2. 如何或以其他方式将编辑反转为原点?
4

1 回答 1

5

我用 , 打开了我的 python3.5 二进制文件vi python3.5,然后做了:%!xxd, :%!xxd -r, :wq... 并最终得到了一个大 1 字节的文件。请注意我什至没有编辑任何内容。你应该使用

vi -b <file>

vi...打开二进制文件,或者当你打开它们时它们会被转换:P

我的 python3.5 二进制文件0a附加了一个 - 换行符。去掉这个字节后,文件又和原来一模一样了。

于 2016-06-16T14:57:11.507 回答