gpt4 book ai didi

c++ - 如何为Wireshark转储IP数据包缓冲区/如何在C++中进行十六进制转储?

转载 作者:行者123 更新时间:2023-12-02 10:29:08 25 4
gpt4 key购买 nike

我有一个简单的uint8_t* IP数据包缓冲区,例如

45 0 0 34 0 0 40 0 40 6 6B 53 C0 A8 FF 6 AC D9 1C EE 0 4D 0 50 0 0 0 0 0 0 0 0 80 2 FD E8 A5 20 0 0 2 4 5 B4 3 3 0 4 2 0 0 0 
我想使用Wireshark进行查看。我看到可以在Wireshark上导入十六进制转储,但是如何将该缓冲区另存为十六进制转储以供Wireshark打开?
是否可以将许多IP数据包连接在一起?

最佳答案

如果可以修改数据以匹配 text2pcap 期望的格式,则可以使用该工具将数据转换为pcap(或pcapng)文件。例如:
这是您以text2pcap可接受的格式提供的数据:

0000  45 00 00 34 00 00 40 00 40 06 6B 53 C0 A8 FF 060010  AC D9 1C EE 00 4D 00 50 00 00 00 00 00 00 00 000020  80 02 FD E8 A5 20 00 00 02 04 05 B4 03 03 00 040030  02 00 00 000034  

Since this appears to start with an IPv4 header, you can generate a pcap file with a link layer header type set to LINKTYPE_RAW, the value of which is obtained from https://www.tcpdump.org/linktypes.html, as referenced in the text2pcap man page. Alternatively, you can choose to add a dummy Ethernet header to the data, in which case you can omit the link layer header type option as LINKTYPE_ETHERNET is the default value; however you do need to add the option to add the dummy Ethernet header. Here I demonstrate both methods:

Method 1: Raw IP

text2pcap -l 101 file.hex file.pcap
方法2:添加虚拟以太网 header
text2pcap -e 0x0800 file.hex file.pcap
text2pcap工具能够处理来自文件的任意数量的数据包,但是请注意手册页中要求的格式,即“请注意,最后一个字节必须跟上例中的预期下一个偏移量值一起,或后面跟一个空格或行尾字符。”
顺便说一下,尽管Wireshark始终将十六进制数据导入为pcapng文件,但Wireshark本身也可以使用"file"->“从十六进制转储导入...”功能将十六进制数据转换为pcap文件。您可以选择将文件另存为pcap,但始终会生成中间的pcapng文件。 Wireshark应该只提供一个复选框,以允许用户选择使用哪种格式,就像 text2pcap一样。我已提交Wireshark Bug 16724来解决此问题。

关于c++ - 如何为Wireshark转储IP数据包缓冲区/如何在C++中进行十六进制转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63006312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com