0

我有一个树莓派,一个处于监控模式的 WLAN 棒(Ralink Technology, Corp. RT5370)并安装了 tcpdump(+tshark)。

现在,我想从养老院患者使用的 WLAN 腕带设备读取链路层包。该设备每秒发送一次链路层数据,以便接入点使用指纹识别进行检测。这个包的内容并不重要,只需要RSSI值和设备的MAC。

现在使用我的 rPi,我想检测患者何时对自己的平门整洁,以便自动打开它。为此,Pi 需要接收这个 LLC 包,以便我可以使用相关的 RSSI 值来计算距离。

使用 Wireshark 和 Windows (Airpcap) 我可以毫无问题地阅读这些 LLC 包。输出例如:

35748 152.953461000 00:00:00_00:00:00 57:01:ff:00:00:00 LLC 62 I,N(R)=0,N(S)=0;DSAP NULL LSAP 个人,SSAP 0x1e 命令

如果我使用 tcpdump 或 tshark 在 raspbian 上做同样的事情,我根本不会收到数据。

tcpdump(命令是 sudo tcpdump llc -i wlan1)返回

tcpdump: 'llc' 仅在原始 ATM 上支持

看起来我的 linux/驱动程序无法将链路层数据传递给 tcpdump。我该如何启用它?

谢谢你的任何提示

更新

感谢 Guy Harris,我找到了解决方案

sudo tcpdump -e -i wlan1 type data

返回所有 LLC 包,并且 -e 值添加所有类型的 mac。输出是这样的,其中 TA 是设备的 MAC。我使用python逐行解析它以获取我需要的数据

02:56:21.346146 11.0 Mb/s 2462 MHz 11b -53dB signal antenna 1 RA:01:40:96:00:00:03 (oui Unknown) TA:00:18:8e:40:62:03 (oui Unknown) DA:00:00:00:00:00:00 (oui Ethernet) SA:00:00:00:00:00:00 (oui Ethernet) LLC, dsap Null (0x00) Individual, ssap OSI (0xfe) Response, ctrl 0x0b: Unnumbered, 0b, Flags [Response], length 24

布拉斯特凡

4

1 回答 1

1

tcpdump: 'llc' 仅在原始 ATM 上支持

首先,过滤器出现所有命令行标志之后,包括-i, 因此,如果您要使用过滤器在 wlan1 上进行捕获,那么您想要的是

sudo tcpdump -i wlan1 {filter}

这就是 tcpdump 的工作方式 - 过滤器位于所有命令行标志和这些标志的参数之后-i,包括,-r等。

其次,“llc”的含义非常具体——来自“pcap-filter”手册页(对于旧版本的 libpcap 和 tcpdump,它位于 tcpdump 手册页中,但 tcpdump 不理解过滤器表达式,他们libpcap 重新理解,库 tcpdump 用于捕获和读取捕获文件):

   llc    True if the packet is an ATM packet, for SunATM on Solaris,  and
          is an LLC-encapsulated packet.

在 802.11 上,所有 802.11 数据帧都有一个 802.2 LLC 标头,所以你想要

tcpdump -i wlan1 type data

这将过滤掉管理和控制帧(没有 802.2 LLC 标头)。

于 2015-09-01T01:11:00.633 回答