在 vim 中修改十六进制后,Wireshark 不会打开 pcap
Wireshark wont open pcap after modifying hex in vim
我有一个可以在 Wireshark 中打开的 pcap 文件。我用 :%!xxd
以十六进制模式在 Vim 中打开 pcap 文件并修改了一个明文字母,例如A
到 B
。但是,在使用 :%!xxd -r
将文件更改回文本模式并尝试在 wireshark 中打开文件后,我得到了(取决于我在 PCAP 中编辑的内容),错误:
- 捕获文件似乎在数据包中间被剪短了。
- 文件 "capture.pcap" 不是 Wireshark 可以理解的格式的捕获文件。
如果我以十六进制模式回到同一个文件并撤消更改,即 B
回到 A
,我肯定会得到上面提到的错误 2。
知道为什么仅在十六进制模式下将数据包修改一个字母会导致 wireshark 以这种方式运行吗?还有为什么修改回原来的状态肯定会破坏pcap文件?
这似乎是 vim
或 xxd -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 to improve vim
's hex editting abilities, or you could try another hex specific editor, like hexedit
.
我有一个可以在 Wireshark 中打开的 pcap 文件。我用 :%!xxd
以十六进制模式在 Vim 中打开 pcap 文件并修改了一个明文字母,例如A
到 B
。但是,在使用 :%!xxd -r
将文件更改回文本模式并尝试在 wireshark 中打开文件后,我得到了(取决于我在 PCAP 中编辑的内容),错误:
- 捕获文件似乎在数据包中间被剪短了。
- 文件 "capture.pcap" 不是 Wireshark 可以理解的格式的捕获文件。
如果我以十六进制模式回到同一个文件并撤消更改,即 B
回到 A
,我肯定会得到上面提到的错误 2。
知道为什么仅在十六进制模式下将数据包修改一个字母会导致 wireshark 以这种方式运行吗?还有为什么修改回原来的状态肯定会破坏pcap文件?
这似乎是 vim
或 xxd -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 to improve vim
's hex editting abilities, or you could try another hex specific editor, like hexedit
.