c++ - 如何使用 libpcap 解析以太网数据包?

标签 c++ parsing packet libpcap

我在 C++ 中使用 libpcap 从 pcap 文件中读取数据包,例如:

rc = pcap_next_ex((pcap_t*)handle, &header, (const unsigned char**)packet);

我想解析包头(没有负载)。

例如,我如何解析给定的数据包以提取其源和目标 IP 地址?

谢谢

最佳答案

检查 libpcap 的代码示例 http://www.tcpdump.org/pcap.html

got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet); 函数中你有一个指针 *packet 指向数据包。要解析以太网 header ,您只需要使用相应的指针

ethernet = (struct sniff_ethernet*)(packet);

对于IP层

ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);

如果你想解析其他协议(protocol),你只需要定义你自己的结构。如果您想要(或不想)解析有效负载,那么您可以(或不)定义一个指向有效负载开头的指针。

关于c++ - 如何使用 libpcap 解析以太网数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6111479/

相关文章:

c - 解析文件中的字符串并创建二叉树的程序中出现段错误

javascript - 解析错误 The Keyword import is Reserved (SublimeLinter-contrib-eslint)

Java多播发送数据,不接收

C++ vtable 解析虚拟继承

c++ - 错误 MSB3073 : How do I fix this?

php - 使用正则表达式和 php 从 html 中提取 javascript 对象

将结构转换为指针

c# - 网络编程和数据包交互

c++ - 摆脱 _WIN32_WINNT 未定义。

c++ - 我正在尝试编写用于在 C++ 中添加 2 个复数的友元函数