为什么hex-edit不可逆?

时间:2016-06-16 14:16:17

标签: linux vi hex-editors

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

  

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

     

dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0   hexd_ss.fit   dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0   ss.fit

我改变了一点hexd_ss.fit

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

来自

200
- SHOW HEADERS -
{

 "kind": "youtube#video",
 "etag": "\"0Fu6lI6VPLdRMlQU3wwNcowdAUs/fSl6VDWHqWRlQ_1QhmdiESxxFiY\"",
 "id": "g8X8zeL0uEQ",
 "contentDetails": {
  "duration": "PT7S",
  "dimension": "2d",
  "definition": "hd",
  "caption": "false",
  "licensedContent": false,
  "projection": "rectangular"
 }
}

0000 0000

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

0000 0001
  

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

     

f3277110043b4170c111fa7d4291aa7df23de68c9e504259ae6158e5133faf1a   hexd_ss.fit   dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0   ss.fit

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

更改后

> 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
> 

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

> 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

所以我的问题是 -

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

1 个答案:

答案 0 :(得分:5)

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

vi -b <file>

打开vi的二进制文件...或者打开它们时会转换它们:P

我的python3.5二进制文件附加了0a - 换行符。删除此字节后,该文件与原始文件完全相同。