什么?小米专属 Wi-Fi 标识居然靠字符串匹配?—— 普通路由器白嫖小米标指南
本文最后更新于 37 天前,其中的信息可能已经有所发展或是发生改变。

前言です。事情的起因是作者最近在折腾手机当 CPE(就是那种拿 5G 手机插 USB 给全家供网的骚操作),测着测着速突然盯着 MIUI 的 Wi-Fi 列表发呆——为什么「黑可实验室」旁边有个专属的小米标,而隔壁 OpenWrt 的「小猫看世界」就只有个光秃秃的 Wi-Fi 图标?

作者一开始信誓旦旦地跟朋友说:「肯定是看 BSSID 的 OUI 啦,小米给自家路由注册了一堆 MAC 段,手机端维护一张白名单就完事了」。

然后作者把 HyperOS 的 Settings 拆了,发现判定逻辑压根不看 BSSID,当场被打脸。🤡 不仅被打脸,这个判定还宽松得离谱——宽松到任何路由器都能白嫖。不改白不改,开整!

测试环境

项目 配置详情
被反编译对象 HyperOS Settings(小米手机系统设置,Wi-Fi 列表的徽标就是它画的)
小米路由 小米路由器 BE3600(内部型号 RD16,WPA2-PSK,5G 信道 44)
对照组 CMCC RAX3000M 刷 ImmortalWrt(SSID「小猫看世界」,sae-mixed)
逆向工具 adb + jadx 1.5.6(字符串定位 → 单 dex 反编译,两分钟出人话)
抓包工具 iw scan(Linux,MT7922 网卡)

准备材料

  • 一部小米手机(HyperOS,型号随意,能连 adb 就行)
  • 一台电脑(我不到啊,我就喜欢 Linux)
  • jadx 一位(推荐 jadx,别的反编译器都玩不明白 r8 的 lambda 命名,截止 2026 年 9 月 9 日)
  • 良好的网络环境(GitHub 直连不动,你知道我在说什么👁)
  • 极强的动手 / 思考 / 搜索能力

适用人群

会用 Linux 和 adb,此教程并不适合小白。

先把判定逻辑挖出来

思路很清晰:Wi-Fi 列表的图标是 Settings 画的,那就从它下手。把 Settings.apk 拉下来,先 strings 撒网找关键词 XiaoMiRouter、xiaomi_router,锁到 classes4.dex(Wi-Fi 相关的代码都住这),再丢给 jadx 单文件反编译——然后就看到了 com.android.settings.wifi.XiaomiRouterUtils,判定函数 isXiaomiRouter() 明明白白:

// 遍历扫描结果里的每个 Vendor Specific IE(ID 221 = 0xDD):
if (IE长度 > 3 && OUI == 00:17:92)                          → 小米路由
if (IE长度 > 6 && OUI == 80:AD:16 && 后3字节 == 01 01 01)     → 小米路由
if (IE原始字节转小写后包含 "xiaomi")                          → 小米路由

什么?!就这么点?就这么点。判定只看广播帧里的 Vendor Specific 信息元素,SSID 什么都不看,BSSID 的 OUI 什么都不看。作者那个「小米维护 OUI 白名单」的推测直接卒。

三条规则逐个考证

规则 OUI 归属 考据结果
00:17:92 Falcom Wireless Comunications GmbH(德国,2006-04 注册) 和小米毫无关系,纯历史遗留。疑似早期某批小米硬件用了这家的模块,或者是写代码时抄来的老列表
80:AD:16 + 01 01 01 Xiaomi Communications(2017-12-11 注册) 小米自家的路由私有 IE 格式,货真价实
字节流包含 “xiaomi” —— 小米官方路由命中的就是这条!BE3600 的 WPS IE(OUI 00:50:F2)里写着 Manufacturer: xiaomi 和 Device name: XiaoMiRouter,整段字节一转小写就中招

我嘞个豆,小米路由靠的是「WPS 字段里恰好有小米俩字」这种巧合式匹配,而不是什么专门的识别协议。那普通路由器白嫖起来就是改一个字符串的事。

实操:hostapd / OpenWrt

规则 3 是子串匹配,那最短路径就是广播一个内容为 xiaomi 的 221 号 IE。xiaomi 的 ASCII 十六进制是 78 69 61 6f 6d 69,整个 IE 长这样:

dd 06 78 69 61 6f 6d 69
│  │  └── "xiaomi" 的 ASCII
│  └── IE 长度 = 6
└── IE 类型 = 0xDD(221,Vendor Specific)

hostapd 配置(Padavan / 梅林 / OpenWrt 底层都是它):

# /etc/hostapd/hostapd.conf
vendor_elements=dd067869616f6d69

OpenWrt 一条命令:

uci set wireless.default_radio1.vendor_elements='dd067869616f6d69'
uci commit wireless
wifi reload

验证(主机上扫一下):

$ iw dev wlan0 scan | grep -A1 'Vendor specific'
    Vendor specific: OUI 00:00:00, data: 78 69 61 6f 6d 69

然后掏出小米手机刷新 Wi-Fi 列表——小米标就这么白嫖到手了😋。

⚠️Tips

  • IE 长度(06)要和 payload 对得上,算错了整段 IE 直接被驱动丢掉,白忙活;
  • 这是纯显示层标记:米家绑定、远程管理、路由器 App 配网统统不生效,别指望白嫖出个小家;
  • 两个 BSSID(2.4G/5G)最好都加,因为判定是对整组扫描结果做的,漏一个频段偶尔会翻车。

彩蛋

  • 同一个文件里还躺着 wx / dp / mt / nm 四个指示器——微信连Wi-Fi、大众点评、美团、糯米的门户标,老网民的青春回来了(这段历史见下节,考证过是真的);
  • Wi-Fi 详情页里的「管理路由器」按钮,逻辑是打开 http://<当前网关>,取不到网关就回落 http://192.168.31.1(小米默认地址),抄作业的时候顺手把 WPS 的 UUID 写成了 87654321-9abc-def0-1234-<MAC后6位>,确实好笑。

感谢名单

  • 感谢 @skylot(jadx 作者),字符串定位 → 单 dex 反编译的工作流纯属他赏饭;
  • 感谢 maclookup.app 和 uic.io,OUI 归属查证全靠这俩;
  • 感谢 miot-spec(小米米家产品库),xiaomi.router.rd16 → BE3600 的型号对号入座就是在这查的。
  • 感谢 opencode 的 Omen Alpha 模型——「字符串定位 → 单 dex 反编译」的活儿是它干的,HyperOS 判定逻辑的定位、OUI 考证、商户 Wi-Fi 历史考据和本文初稿,也全是它操刀,作者本人主要负责说「干得好」和「重写一版」。

历史小故事:商户 Wi-Fi 大战(2014–2018)

wx / dp / mt / nm 这四个化石不是小米瞎画的,它们对应一场真实存在过的商战——「商户 Wi-Fi」大战。查证过雷锋网 2014–2015 年的报道和界面新闻的回顾,时间线大致如下:

  • 2014-11:「微信连 Wi-Fi」悄然上线(雷锋网原话「图穷匕现」),玩法是商家买微信认证路由 → 顾客扫码关注公众号 → 免密上网,商家涨粉、微信拿走线下入口;2015-03 申请入口全量开放。张小龙亲手定的方向,首批服务商有迈外迪、潮 WiFi 这些名字。
  • 巨头站队:阿里 1 亿元投树熊网络(2014-08);腾讯和大众点评 3 亿元投迈外迪(2014-12);百度领投 16WiFi;360 领投聚玩网络 1.2 亿。半年内 20 多家创业团队拿到融资,跟共享单车一个剧本。美团、大众点评、百度糯米(nm 就是谁)也都推出过自家的商户 Wi-Fi 门户。
  • 其实小米也下过场:迈外迪的 B 轮就是小米投的,2014-03 的 MIUI 更新里就内置过「免费 Wi-Fi」功能,到迈外迪网点自动连。所以 MIUI 的 Wi-Fi 徽标文化不是 2014 年才有的,是本身就出身这个行业。
  • 死亡:2018 年初 iOS 11.3 砍掉了 Portal 页唤起微信的能力——苹果用户连上商户 Wi-Fi 后既不能唤起微信认证也不能扫码,微信连 Wi-Fi 的核心链路当场断气。再加上《网络安全法》要求公共场所上网实名(微信 API 只能拿 openid,给不了实名)、流量资费跳水,整个行业卒。2017-11 迈外迪转型新零售,16WiFi 砍掉 11 座城市,80% 的从业者消失。
  • 幸存者:这场大战唯一活着走出废墟的徽标就是「小米标」——因为它不掺和商业变现,就是个纯装饰,反而活得最久,久到今天我们还能拿 OpenWrt 白嫖。

所以严格来说,你今天在 OpenWrt 上广播 dd067869616f6d69 干的事,和 2015 年商家广播「微信连 Wi-Fi」IE 干的事是同一件事:在 Wi-Fi 列表里骗一个 logo。只不过他们骗来的是流量,我们骗来的是乐子。

参考来源

  • 雷锋网:《图穷匕现,微信连WI-FI悄然上线》(2014-11-20)——leiphone.com
  • 雷锋网:《微信来了,商用WiFi的日子是更好了还是更坏了?》(2014-11-20)——leiphone.com
  • 雷锋网:《“微信连WiFi”申请入口正式开放,扫码即可上网》(2015-03-06)——leiphone.com
  • 界面新闻 · JMedia(锌财经):《Wi-Fi的前生后世:致敬永不停歇的商业探索》——jiemian.com
  • 晰数塔:《你还记得商业Wi-Fi吗?》(2019-11-30)——xishuta.cn
  • 笨驴信息:《微信WiFi还能走多久?微信Wi-Fi功能最新测试结果分析》(2018)——imfirewall.com
  • 驱动中国:《“微信连Wi-Fi”蕴含商机》(2014-11-26)——qudong.com

判定逻辑与 IE 抓包为本文作者逆向实测;OUI 归属查证自 maclookup.app 与 uic.io,机型与认证信息查证自 miot-spec 与 CMIIT ID 2024-5036。

授权

本文(含逆向结论、配置片段与历史考据)以 CC BY-SA 4.0 授权发布:转载请署名「新毛知识库 / Hakudesu」,并以相同方式共享。所引新闻报道版权归原作者所有。

声明

本文仅为逆向研究记录。标识骗得来,功能骗不来,米家绑定该失败还是失败。另外这匹配宽松到什么程度呢——你甚至可以在 IE 里写「不是小米」然后它也中招,因为 contains(“xiaomi”)……哦不对,「不是小米」里确实有小米。行了,就写到这。

评论

  1. 1 周前
    2026-10-08 17:33:16

    已严肃在Asus Router和OpenWRT上复现😋

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇