单片机---ESP8266Wifi SmartConfig一键配置(二)

14 篇文章 1 订阅

剧情回顾

《单片机—ESP8266Wifi SmartConfig一键配置(一)》

本章重点

根据前一章的做法,其实ESP8266的一键联网我们已经用起来了,但是我们并不清楚里面的细节,究竟SSID和密码是如何广播出来的?

通过百度其他资料,其中包含了确定SSID,信道,接收数据,分离里面的长度,从长度中截取出密码和SSID。
在这里插入图片描述

抓包

我们想用无线网卡抓取802.1x的wifi报文,看一下广播出来的数据是什么样子,这里就需要在linux下进行抓包了,因为windows上无法抓取wifi报文。
这里用的系统是kali,因为这个系统的驱动都安装好了,只需要外置一个网卡,就可以抓取。
不过这里首先要配置一下网卡,需要用到下面两个重要的命令

iw dev wlan0 interface add mon0 type monitor
ifconfig mon0 up

在这里插入图片描述

想理解为什么可以参考下面一段话

因為工作的緣故,需要去監聽無線網路的封包,特別是IEEE802.11的管理控制訊框(frame … 其實我還是比較喜歡直接叫作封包)。同事直接打開 wireshark 卻擷取 wifi 介面,卻發現聽到了一堆 ethernet 的訊框而聽不到 wifi 的訊框。為什麼呢?來看看 wireshark 的官網怎麼說:
If you’re trying to capture network traffic that’s not being sent to or from the machine running Wireshark or TShark, i.e. traffic between two or more other machines on an Ethernet segment, or are interested in 802.11 management or control packets, or are interested in radio-layer information about packets, you will probably have to capture in “monitor mode”. This is discussed below.
Without any interaction, capturing on WLAN’s may capture only user data packets with “fake” Ethernet headers. In this case, you won’t see any 802.11 management or control packets at all, and the 802.11 packet headers are"translated" by the network driver to “fake” Ethernet packet headers.
答案揭曉,原來這是因為 wifi driver 會自動把 wireless frame 轉成 ethernet frame 後再給 kernel,這樣 kernel 裏面的 protocol stack 會比較好處理。
問題是,如果我想要聽到 wifi frame 的話,要怎麼做呢?答案很簡單,將 wifi adapter 設成 monitor mode。在 wifi adapter 中,通常都有 SSID/ESSID filter,所以就算把 wifi adapter 設定成為 promiscuous mode 也沒有用,因為還是無法收到非自己加入的 SSID 的 frame。那 monitor mode 呢?我們可以看看下面這句話:
In monitor mode the SSID filter mentioned above is disabled and all packets of all SSID’s from the currently selected channel are captured.

这样就会增加出一个网卡,可以在上面抓到wifi的报文。
然后打开wireshark,就可以愉快的抓包了。
在这里插入图片描述
可是抓了过程,还是没从数据长度中发现点什么。
在这里插入图片描述

嗅探

ESP8266有一个功能,就是嗅探模式,可以继续以嗅探的方式,来接收一下smartconfig的报文,看看都是什么内容。
工作路径重新配置为下图
在这里插入图片描述
重新编译,然后烧写固件
这样一来,倒是抓取到了一部分帧,和wireshark抓到的类似
在这里插入图片描述
在这里插入图片描述

分析协议

经过两种抓包,得到了下面一些信息。

起止消息

这种广播出来的消息,开头和结尾总是有循环的一组数据在发送,wireshark中看到的是在
625~622之间循环,

在这里插入图片描述
sniff抓到的是599~596之间循环
在这里插入图片描述

中间的长度数据

应该是加密的,发送相同密码的时候,内容是基本一样的,更换了密码,长度就都变化了。看来是经过加密的数据。

其他有价值的信息就猜不到了。

在这里插入图片描述

网上找到了这篇文章《airkiss技术原理》

里面有这么一段话

为解决这两个问题,在发送链路层数据(见下节)之前,需要先发送 400ms 的前导域(400ms = 8*50ms,即如果设备端以 50ms 的频率切换信道, 则可以覆盖 8 个信道,因为一般用户环境不用监听 14 个信道,所以覆盖 8 个 信道足已)。前导域由 4 个字节组成,其值固定为{1,2,3,4}。接收方在接收到这 些前导域数据包后,利用 SNAP 包中的 Length 字段与之相减,从而获取到这 个差异值。 举个例子,接受方通过监听,在链路层截获 802.2 SNAP 格式的前导数据 包,其 Length 字段的值分别为 53,54,55,56,那差异值就能确定为 53- 1=52。之后接收方接收到数据之后都用 SNAP 包的 Length 字段值减去 52,即能 得到实际的信息数据。

这个前导域,目前还不知道怎么获得,怕不是在驱动中做的吧。或者这是个专利。别人拿不到。

另外它们用的这个格式,从报文中也看不出来
在这里插入图片描述
还有一篇文章
《Wifi SmartConfig 一键配置》,其中介绍了一些TICC3000的东西。

看来想做一个类似的功能,还是很麻烦,并不是一个简单的应用。后续再研究一下。
在这里插入图片描述

结束语

折腾了一天,没有什么实质性的突破,不过也学了一些技术,例如抓取802.1x的报文,到处收集smartconfig的资料,发现了网上的相关内容,也都是出自一两个人的手。

今天是周五了,不知道隔壁的战争还要打多久,希望平民不再伤亡吧。
也许不久的将来,人们忘记了当年的惨烈,恶魔就会降临。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖哥王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值