将无头设备连接到 WiFi 网络

将无头设备连接到 WiFi 网络

因此,我有一台带有 wifi 模块的空调,可以进行远程控制。

我试图理解,这个 AC 如何能够连接到我的网络,因为它没有创建任何自托管 Wifi 网络,而且我的手机也没有连接到我的 Wifi 网络以外的任何地方。

事实:

  • 我的手机蓝牙已禁用。
  • 我的手机没有连接到任何其他网络(如状态栏中的图标所示)
  • 我重置了 AC,但 AC 无法再连接到我的网络 - 直到我再次使用该应用程序。
  • 我使用的安卓应用程序是“AC Freedom”

从我使用名为“数据包捕获”的 Android 应用程序通过数据包嗅探进行的检查来看,当我的手机尝试与 AC 通信时,它会向我的网络的多播(?) 发送许多 UDP 包。

一些数据包被发送到套接字地址:224.0.0.251:80,,224.0.0.251:16680255.255.255.255:15000

空调不知怎么就神奇地连接到了我的 wifi。这怎么可能?是否有我不知道的 WiFi 协议?此外,空调能够与外部服务器(他们的服务器)“对话”,我能够远程管理空调 - 无需通过 Wifi 连接到本地网络。

猜测:AC 扫描 wifi 网络并捕获流量,能够识别数据包 - 解密它们(因为有效载荷是已知的)并连接到 wifi。这有点科幻,但这是我能想到的唯一方法。

答案1

检查你的智能手机和空调使用一种叫做无线网络直连。这将直接连接它们,而不使用“你的 Wifi”(即你家用路由器上的 Wifi 接入点)


好的,所以我下载了“AC Freedom”APK(一些随机版本,似乎有几个版本),用它解压apktool,然后查看了一下。

有许多libBL*.so库,其中一个是libNetworkAPI.so。查看这些库可以找到对“Broadlink API”的引用,并且可以在 Google 上搜索各种 Java 库,这些库显然是Python 库。

那里的描述提到了“设备处于 AP”模式。

似乎还有一些 DES 加密内容、“BLJSON”等等。

因此,所有这一切看起来就像您的空调基于此 Broadlink 技术(并且您的最后一条评论证实了这一点),有自己的接入点,并且使用此 AP 进行加密和验证的交换。

没有任何迹象表明“让我们入侵用户的 Wifi”(这是不可能的)。

至于为什么您的 Android 应用程序无法接收此 AP,我不知道 - 也许它是一个隐藏的 SSID。


有一个非常简单的测试可以确定你的空调是否正在使用“你的 wifi”:

彻底关闭家用路由器。如果您的智能手机仍能与空调通信,则说明它没有使用家用路由器。即使您看不到它使用什么进行通信。


再次阅读 Python 库文档:

设置

为了控制设备,您需要将其连接到本地网络。如果您已经使用 Broadlink 应用程序配置了设备,则此步骤不是必需的。

  • 将设备置于 AP 模式。
  • 长按重置按钮,直到蓝色 LED 快速闪烁。
  • 再次长按,直到蓝色 LED 缓慢闪烁。
  • 手动连接到名为 BroadlinkProv 的 WiFi SSID。

使用设置功能将设备连接到您的本地网络。

broadlink.setup('myssid','mynetworkpass',3)

安全模式选项为(0 = 无、1 = WEP、2 = WPA1、3 = WPA2、4 = WPA1/2)

所以它的作用是告诉 Broadlink 设备设置它自己的 AP,然后它连接到这个 AP,然后你给它你的 wifi 的 SSID 和密码。以及加密方法。当它获得你的 wifi 的 SSID 和密码后(因为你自愿提供),是的,它可以连接到你的 wifi。

而“如果您已经使用 Broadlink 应用程序配置了设备,则无需执行此步骤。”这句话似乎暗示 Broadlink 应用程序也在这样做。要么询问您的 SSID 和密码,要么从智能手机数据中获取。

那么,您是否已使用 Broadlink 应用程序完成这些步骤?如果是,则您的空调已连接到 Wifi,并且可以在您的家庭网络中正常通信,是的,那么它可以通过多播进行通信224.0.0.251

相关内容