我有一个pcap文件,可以在Wireshark中打开。我使用:%!xxd
以十六进制模式在Vim中打开了pcap文件,并修改了明文字母,例如A
至B
。但是,在使用:%!xxd -r
将文件更改回文本模式并尝试在Wireshark中打开文件后,出现两种情况(取决于我在PCAP中编辑的内容):
如果我以十六进制模式返回到同一文件并撤消更改,即从B
回到A
,我肯定会遇到上述错误2。
有什么主意为什么只在十六进制模式下用一个字母修改数据包会导致Wireshark表现这种方式?为什么修改回原始状态肯定会破坏pcap文件?
答案 0 :(得分:1)
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可以提高vim
的十六进制编辑能力,或者您可以尝试使用另一种特定于十六进制的编辑器,例如hexedit
。