首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ppi数据包解析pcap

ppi数据包解析pcap
EN

Stack Overflow用户
提问于 2012-10-21 22:13:35
回答 1查看 1.1K关注 0票数 1

我在解析PPI帧格式的数据包时遇到了一些问题。我需要802.11+mac+phy字段,在公共字段之后,我似乎在偏移量中有一个错误。下面是我的代码:

代码语言:javascript
复制
void process_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
int offset = 0;

const struct ppi_packetheader *ppi_header = (struct ppi_packetheader *)(packet + offset);
offset += 8;

const struct ppi_fieldheader *ppi_80211_common = (struct ppi_fieldheader *)(packet + offset);
printf("common type: %d | len: %d\n", ppi_80211_common->pfh_type, ppi_80211_common->pfh_datalen);
offset += 4 + 20;

const struct ppi_fieldheader *ppi_80211_mac = (struct ppi_fieldheader *)(packet + offset);
printf("mac type: %d | len: %d\n", ppi_80211_mac->pfh_type, ppi_80211_mac->pfh_datalen);
offset += 4 + 27;

const struct ppi_fieldheader *ppi_80211_mac_phy = (struct ppi_fieldheader *)(packet + offset);
printf("mac+phy type: %d | len: %d\n", ppi_80211_mac_phy->pfh_type, ppi_80211_mac_phy->pfh_datalen);
}

公共字段的输出是正确的,它显示类型: 2,长度: 20。但是其他值是错误的,就像它对mac字段类型: 64,长度:0 (mac+phy看起来类似)一样。是小端/大端的问题,还是我的错误在哪里?我一直在研究wireshark的实现,但他们使用了一个tvb_get_letohs()函数来实现偏移量,这非常复杂……希望有人能帮上忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 17:20:56

首先,您没有查看pph_flags中的对齐位-如果设置了它,则每个字段都在4字节边界上对齐,如果清除它,则字段不一定在4字节边界上对齐。但是,802.11-Common字段的长度是4的倍数,字段头部的长度也是4的倍数,所以,虽然您应该查看该位,但这不会导致此特定问题。

是的,“数据包报头和字段报头中的多字节整数必须存储为小端字节序。”,因此可能存在字节顺序问题。然而,这适用于pfh_typepfh_datalen,所以,如果你在大端机器上,你应该字节交换这些值(这就是tvb_get_letohs()正在做的-它从做边界检查的Wireshark缓冲区中获得一个小端,短(16位)值,并将其转换为主机字节顺序;不管字段是否在“自然”字节边界上对齐,它都是有效的),您显然是在小端计算机上运行的(如果它是基于x86的PC -包括所有基于Intel的Macs您正在小端计算机上运行),因为公共字段的输出是正确的,所以这可能不会导致这个特殊的问题。

但是,第三,您没有看到ppi_header->pph_len!不能保证在PPI报头中存在任何特定的字段-您必须检查每个字段是否存在,方法是查看是否超出了PPI报头的长度。

当我在Mountain Lion上的Retina MBP上使用PPI报头捕获时,报头长度为32字节,唯一存在的字段是802.11-通用字段- 802.11n MAC+PHY扩展字段不存在(我们的网络是802.11n网络)。当您的代码认为它正在查看802.11nMAC扩展字段时,它实际上可能正在查看来自802.11数据包的802.11 MAC+PHY报头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12998608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档