在raspberry pi中使用tcpdump / tshark读取WLAN链路层包

时间:2015-08-31 11:50:48

标签: linux tcpdump wlan tshark data-link-layer

我有一个覆盆子pi,一个处于监控模式的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 Individual,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

BR 斯蒂芬

1 个答案:

答案 0 :(得分: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标头)。