在 linux 中从 Pcap 文件的数据包中插入、删除和修改字节

问题描述

我需要一种方法来插入、删除修改 pcap 文件包中的十六进制数据字节。是否有 tshark 命令或任何其他方法来执行此操作。

00292c0: 900b 0000 0018 5a82 5a82 a57e 5a82 a57e  ......Z.Z..~Z..~
00292d0: a57e a57e 5a82 5a82 a57e 5a82 a57e 5a82  .~.~Z.Z..~Z..~Z.
00292e0: a57e 5a82 5a82 5a82 a57e a57e 5a82 a57e  .~Z.Z.Z..~.~Z..~

假设我想将数据的前 4 个字节从 900b 0000 修改为 801b 0101 或删除一个字节或在 a57e 之后的末尾添加一组额外的字节?我该怎么做?

解决方法

有多种方法可以修改数据包数据。例如:

  • 您可以使用 hex editor。有很多所以搜索并使用适合您的任何一种。也许看看这个 Comparison of hex editors 来帮助指导你。我还要指出,Notepad++ 有一个十六进制编辑器插件,以防您感兴趣。
  • 您可以使用诸如 WireEdit 之类的工具。
  • 在 Wireshark 中,您可以通过“文件 -> 导出数据包解析 -> 作为纯文本...”使用 数据包格式将数据包导出为纯文本文件> 选项设置为导出数据包字节,然后根据需要使用任何文本编辑器修改数据包数据。之后,您可以使用 text2pcap 将修改后的文本文件转换回二进制 pcap 文件,然后可以将其加载回 Wireshark,或者您可以使用 Wireshark 的内置功能直接导入包含修改后的文本文件您之前通过“File -> Import From Hex Dump...”导出的数据包的十六进制转储。 注意,在编辑数据包时,尤其是在添加/删除字节时,您可能还需要进行其他调整,以使数据包仍然有意义。这是因为数据包数据中往往嵌入了长度字段,因此您需要确保新长度与数据匹配。您可能需要在多个地方进行更改。如果您关心正确的校验和/CRC,那么您可能还需要调整这些字段。
  • 来自 Wireshark Tools 维基页面 Capture file editors and/or anonymizers 部分的其他可能解决方案。