Wireshark:解析数据包

发布于 2024-10-18 04:03:19 字数 156 浏览 6 评论 0原文

我想知道Wireshark如何解析802.11数据包。

例如,探测请求数据包的序列号为:2327。

在数据包详细信息中,十六进制为“70 91”,ASCII 为“p”。

那么wireshark如何从数据包中获取值“2327”呢? C中有类似的例子吗?

I am wondering how does Wireshark parse 802.11 packets.

For example, A probe request packet has a sequence number: 2327.

In the packet details, in hexadecimal it is "70 91", while in ASCII it is "p."

Then how does wireshark get the value "2327" from the packet? Is there a similar example in C?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

还在原地等你 2024-10-25 04:03:19

802.11 序列控制字段是一个 16 位小端字段,包含两个子字段 - 高 12 位包含序列号,低 4 位包含片段号。在这种情况下:

  • 序列控制 = 0x9170
  • 序列号 = 0x917 = 2327 十进制
  • 片段号 = 0x0 = 0

The 802.11 Sequence Control field is a 16 bit little-endian field that contains two subfields - the upper 12 bits contain the Sequence Number, and the lower 4 bits contain the Fragment Number. In this case:

  • Sequence Control = 0x9170
  • Sequence Number = 0x917 = 2327 decimal
  • Fragment Number = 0x0 = 0
鸠书 2024-10-25 04:03:19

@caf 是对的,无论如何我发布了关于如何提取序列号的代码..

//this is the subfields
 typedef struct seqctl_subfields
 {
    unsigned fragment:4;
    unsigned seq_num:12;
 };

 struct seqctl_fields *se = (struct seqctl_fields*)p->sc // where p is a struct of the 802.11 header,p->sc points to the sequence control field of the 802.11 header
 std::cout << se->seq_num << std::endl;

@caf was right,anyway i post the code on how i extract the Sequence Number..

//this is the subfields
 typedef struct seqctl_subfields
 {
    unsigned fragment:4;
    unsigned seq_num:12;
 };

 struct seqctl_fields *se = (struct seqctl_fields*)p->sc // where p is a struct of the 802.11 header,p->sc points to the sequence control field of the 802.11 header
 std::cout << se->seq_num << std::endl;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文