【问题标题】:Wireshark wont open pcap after modifying hex in vim在vim中修改十六进制后,Wireshark不会打开pcap
【发布时间】:2018-08-24 16:13:59
【问题描述】:

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

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

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

知道为什么在十六进制模式下只用一个字母修改数据包会导致wireshark 以这种方式运行吗?还有为什么修改回原来的状态肯定会破坏pcap文件呢?

【问题讨论】:

  • 可能值得对未编辑和已编辑文件的xxd 输出进行比较,以查看究竟发生了什么变化。我的猜测是 vim 在保存时正在做一些二进制不安全的事情。

标签: wireshark pcap


【解决方案1】:

这似乎是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 传递的输出。反过来也一样。

some ways 可以提高vim 的十六进制编辑能力,或者您可以尝试其他十六进制特定的编辑器,例如hexedit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2013-09-25
    • 1970-01-01
    • 2014-09-13
    • 2013-03-31
    相关资源
    最近更新 更多