智能网关还有这操作?

2018-10-30 21:12:20 +08:00
 orannge

最近接入一个智能网关的 sdk,组网流程是这样的:

长按网关 reset 键进入初始化状态,手机连接任意一个 wifi,没外网也行,手动输入 wifi 密码,然后调用 sdk 的组网方法,网关竟然就自动接入 wifi 了??好像挺多智能设备都是这么一个操作,确实挺方便的。但按一般思维,我能想到的场景是先连接网关的热点,手机输入 wifi 信息,然后调用 sdk ( sdk 通过热点跟网关 tcp 通信之类),网关再关闭热点,连上输入的 wifi ?我开始认为可能是网关改写了 wifi 密码验证模块,网关创建一个隐藏 ssid,手机尝试连接该 ssid,将 wifi 数据放在密码里传过去。

然而 AndroidManifest.xml 里的权限只有这几项:INTERNET,ACCESS_WIFI_STATE,ACCESS_NETWORK_STATE,CHANGE_WIFI_MULTICAST_STATE,也就是说不可能有加入 wifi 的操作。看了一下 sdk 好像确实只发送了 wifi 多播数据,难不成 wifi 多播不需要连 wifi 也能接收数据?我写 demo 试了并不能啊。

那么问题来了,手机到底是怎么把 wifi 数据发送给网关的?智能网关和设备之间用 ZigBee 协议通信还能理解,不用蓝牙,不用 nfc,不用扫二维码,不用 wifi,甚至不用额外权限,手机还能发送数据?!一脸懵逼.jpg

9272 次点击
所在节点    Android
17 条回复
paradislover
2018-10-30 21:36:54 +08:00
手机发送的多播数据含有你输入的 ssid 和 password 的编码,网关初始工作在 monitor 模式,在各个信道抓取特定的多播包,当成功抓取并解码 ssid 和 password 后,网关就可以连接 AP 了。
bukip
2018-10-30 21:45:58 +08:00
@paradislover 不对吧,这样应该是不能知道密码的
weyou
2018-10-30 21:50:05 +08:00
@paradislover 多播的数据也是加密的,其实重点不是这里。我猜它是将 wifi 信息隐藏在数据之前的 wifi header 信息里,然后智能网关只要侦听到这个包,把 header 里隐藏的数据按约定的算法解出来就好了
billlee
2018-10-30 21:52:17 +08:00
伪造了输入 wifi 密码的视图?
paradislover
2018-10-30 21:55:17 +08:00
@weyou 太多手段了,多播地址可以变化,多播数据的长度也可以变化,这些都是信息载体,看你怎么利用
paradislover
2018-10-30 21:57:19 +08:00
@bukip 以前做原厂 sdk 就是这么设计的
yggd
2018-10-30 21:57:38 +08:00
UDP 广播包里的长度字段是明文的,搜一下 “ Smart config 配网”
orannge
2018-10-30 22:02:24 +08:00
@paradislover 是吗,我原来以为 wifi 通道内的数据都是加密的。。
orannge
2018-10-30 22:04:17 +08:00
日志里多播地址确实是*.1.1.1 *.2.2.2 这样循环发送的
paradislover
2018-10-30 22:07:01 +08:00
@orannge 都加密了,我怎么知道你包是发给那个 mac 地址的
weyou
2018-10-30 22:07:22 +08:00
@orannge 多播地址和长度其实都是在 802.11 的 header 里的,数据部分还是加密的
kltt22
2018-10-30 22:07:43 +08:00
特意看了眼发帖时间,我以为我穿越了
orannge
2018-10-30 22:11:21 +08:00
@yggd @paradislover @weyou 感谢
@kltt22 是我不懂这一块😂
chinawrj
2018-10-30 22:11:59 +08:00
wifi 加密并不加密目标 MAC 地址,而组播地址是一一映射到 MAC 地址的,因此其他人能看到你的 IPV4 的组播地址,就算是加密
magicblr
2018-10-30 22:13:12 +08:00
SmartConfig 也就是一键配置,速度比 AP 模式快,为什么呢?请看下面分解。

所谓的 SmartConfig 就是:

手机 APP 端发送包含 WIFI 用户名 WIFI 密码的 UDP 广播包或者组播包;
智能终端的 WIFI 芯片可以接收到该 UDP 包,只要知道 UDP 的组织形式,就可以通过接收到的 UDP 包解密 出 WIFI 用户名、密码;
然后智能硬件配置到指定的 WIFI AP 上。
orannge
2018-10-30 22:17:12 +08:00
照这么说手机直接建立热点也是可以的吧
orannge
2018-10-30 22:27:51 +08:00
好吧,原来配网方式这么多,一键配置就有 SmartConfig SmartLink Airkiss

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/502736

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX