组播方式进行wifi信息配置的一些要点



1.抓到的包有的是来自路由器,有的是来自手机.

           虽然都是从手机端发出的组播包,但是wifi模块抓到的包从from_ds,to_ds的标记位来看,有时候这些组播包是来自路由器端,有的是来自手机端.(TODO:从我们外行的角度看,应该都是来自手机端的,为什么会来自路由器,需要进一步进行深究.)

           来自手机端和来自路由器端的包头,地址信息是不同的.同时,收到的数据包长度也会不同.

 

 


关于包长的不同:

           实际测试发现, 来自路由器的包长会多2个字节,因为它的帧类型为QOS_DATA_FRAME=0x88. 所以对包长的计算需要在wlan_netif.c中用如下代码进行区分.

if(frame->frame_type&0x80 == 0)

           sniffer_callback(frame, datalen-30);//将包头和包长通过回调函数上传给上层

else  // QOS_DATA_FRAME,帧头多2  个字节.

                    sniffer_callback(frame, datalen-32);//将包头和包长通过回调函数上传给上层

关于mac地址的不同:

           当数据是发向路由器的:发送端地址就是实际发送设备的地址,接收端地址是路由器的mac地址(bssid),附加地址是实际的目的地址.

           当数据包发自路由器的:发送端地址就是路由器的mac地址(bssid),接收端地址是实际的目的地址,附加地址是实际的发送设备的地址.

           所以,在对抓到的包进行分析的时候,要判断fromDS和toDS标志位,然后提取出正确的源地址和路由器地址,从而判断是否是同一系列的数据包.

          


2.不同加密方式,包长不同.


         阅读”乐鑫esp8266”的抓包代码发现:假设不加密时的包长为x,那么wep加密的包长为x+8,wpa(2)-aes加密的包长为x+16,wpa(2)-aes加密的包长为x+20

比如只发一个字节,那么抓到的包长:不加密为77,wep加密为85,aes加密为93,tkip加密为97.

因此,可以根据包长来判断是何种加密方式.

 

 

参考文献:

<802.11无线网络权威指南(第二版全_非扫描)  >

 

没有更多推荐了,返回首页