一种让智能设备链接无线路由器的方法

如今的手机,电脑,平板等若是要链接无线路由器比较方便,直接扫描无线wifi,输入密码就能够了。但是如今智能家居愈来愈多,若是遇到一个摄像头,智能插座这种没输入设备又没显示屏的东西,想让它链接无线路由器可就不是很容易的事了。网络

 

考虑到手机发送的数据包数据内容都会被加密,并且设备又不具有解密功能,因此没法直接与设备通讯。可是IP地址是不会被加密的,因此咱们能够利用本地管理组播地址239.0.0.0~239.255.255.255为运载体,将信息编码到地址内部,一次发送两个字节。那么若是咱们把须要发送的数据编码,而后再写到IP地址相似239.X.A.B,X做为一个识别标识,A,B做为实际数据,另外发送数据时会将实际发送的长度也发送出去,那么长度咱们能够做为A,B两个字节所在buffer中的索引,而实际发送内容因为对咱们没用因此咱们填空。此时发送数据,设备开启监听模式,若是抓到相似这样的IP地址的包,此时无论实际收到的数据只从IP地址中拿到数据并重组,理论上就能够收到咱们须要的数据了。数据结构

发送端伪代码以下:分布式

uint8_t d0 = buffer[index];
uint8_t d1 = (index+1)<tot_len?payload[index+1]:0;
char destIP[16];
snprintf(destIP, sizeof(destIP), "239.200.%d.%d", d0, d1);
send(sock, destIP, index);

 

理论基础就是这些,实际要作仍是须要一些细化。其实无线电波所遵循的802.11协议分为如下三种类帧:ui

1)控制帧:一般与数据帧搭配使用,负责区域的清空(RTS/CTS协议(Request To Send/Clear To Send))、信道的取得、收到数据后确认编码

2)管理帧:负责监督,用来加入或退出无线网络以及处理接入点之间关联的转移事宜(beacon)加密

3)数据帧:用于传输数据。spa

 

而咱们须要的数据帧,数据帧的标识头数据结构以下:code

在图上的数据中,咱们关心的数据有如下几个:blog

Type与Subtype:制定使用帧类型(控制帧、数据帧、管理帧),而咱们此时关心的是数据帧索引

Address1:帧接收端

Address2:发送端的地址

Address3:供接入点与分布式系统过滤之用 (即路由器的MAC地址)(这三个地址会根据帧的转播方向不同排列顺序也不同)

ToDs和FromDS表明帧的传播方向,从中咱们能够看出,帧的传播方向不同后面的address排列顺序也不同。而咱们须要的组播包则是手机发送给路由器的包,也就是上面提到的TO AP红色的这一类型。

有了以上的信息,咱们能够根据帧的类型,传播方向过滤掉大部分无用帧和不须要的数据帧,而且咱们能够根据路由器的MAC也就是BSSID,发送端的MAC地址也就是SA创建起一个对应关系表,此时拿到实际数据就相对容易多了。

咱们用手机发送数据包,设备开启监听模式抓包,而后解析数据的方式拿到帐号密码。因为智能设备抓无线网络的数据包和咱们在电脑上抓包有些不同,它能够抓到在当前信道全部包以及相邻甚至相隔信道上的部分包,目前的无线网络频率分为2.4G和5G两类频道,而智能设备目前大多数都是在2.4G的频道上。在中国大陆,2.4G又具体分为13个信道,通常状况下每一个信道的频宽是22MHZ,固然也能够在路由器中修改。默认状况下每一个频宽之间都是有重叠的。而设备开启监听模式,而且在1到13折个13个信道中间来回切换,若是抓到手机发送的标识数据那么就能够锁定信道而且开始抓包重组数据。

相关文章
相关标签/搜索