Wireshark 在 vim 中修改十六进制后不会打开 pcap



我有一个可以在Wireshark中打开的pcap文件。我用:%!xxd以十六进制模式在 Vim 中打开了 pcap 文件,并修改了一个明文字母,例如AB.但是,在使用:%!xxd -r将文件更改回文本模式并尝试在 wireshark 中打开文件后,我收到错误(取决于我在 PCAP 中编辑的内容(:

  1. 捕获文件似乎在数据包中间被缩短了。
  2. 文件"capture.pcap"不是Wireshark理解的格式的捕获文件。

如果我以十六进制模式返回同一文件并撤消更改,即B回到A,我肯定会得到上面提到的错误2。

知道为什么在十六进制模式下仅将数据包修改一个字母会导致 wireshark 以这种方式行事吗?为什么修改回原始状态肯定会破坏 pcap 文件?

这似乎是vimxxd -r命令在末尾附加换行的问题。只是从十六进制转换然后再次转换也会触发这一点。

运行以下命令:

xxd < 51996055.pcap > 51996055.pcap.before
vim -c ':%!xxd' -c '%!xxd -r' -c ':wq' 51996055.pcap
xxd < 51996055.pcap > 51996055.pcap.after
diff 51996055.pcap.before 51996055.pcap.after

给出以下输出:

59c59
< 000003a0: 3031 3233 3435 3637                      01234567
---
> 000003a0: 3031 3233 3435 3637 0a                   01234567.

在Wireshark中打开此文件会给我您遇到的第一个错误。

运行:%!xxd本身不会vim进入十六进制模式,它只是用通过命令传递的输出替换当前缓冲区xxd.反之亦然。

有一些方法可以提高vim的十六进制编辑能力,或者你可以尝试另一个十六进制特定的编辑器,如hexedit

最新更新