原文:http://www.zhihu.com/question/33559283
如何用mt7620方案的rt2860v2驱动实现wifi探针功能,网上能搜到一些方法,但是讲的好模糊?
如何用mt7620方案的rt2860v2驱动,实现wifi探针功能,网上能搜到一些方法,但是讲的好模糊,真心看不懂,求懂的或者做过的大侠细讲一下,贴出源码,或者邮件我devinsh@163.com,万分感谢!
wifi探针,要获取station发送的probe request帧和信号强度么?如果是的话:
完成这个要考虑两件事情,一是如何获取到,二是如何传递给处理程序
1.获取
rt2860v2的源码你有的,找到对应的处理probe request帧的函数APPeerProbeReqAction,再里面取对应的变量就可以了
+ PFRAME_802_11 pFramelxd = (PFRAME_802_11)Elem->Msg;
+ //printk(KERN_INFO "mac is %pM, signal is %d
", pFramelxd->Hdr.Addr2, Elem->Signal);
但是要注意一点,如果这样取Signal,值是0。因为这版驱动强制给Signal赋值为0,这个需要你看下代码改下。如果你不需要获取信号强度,那就不用管了。
2.传递
数据传递给用户空间的应用程序,可以通过netlink或者/proc,具体自己google搞定就可以了
升级到9后,mac随机化更严格了,貌似任何情况下发出的probe request 帧都使用随机mac地址。
因此就无法获取到真实的mac地址了:<