小米路由器4A 刷入 Breed 与 Padavan

背景

之前实现了校园网内的笔记本远程唤醒。当时确实以为自己成功了,直到第二天。

第二天一醒来我就拿出平板准备远程唤醒床下的笔记本,开始过上小康生活。但是却失败了。这让我非常纳闷。

查询资料过后,推测原因应该是学校的路由器没有将笔记本的mac和ip进行绑定,即没有进行arp绑定。

这就导致笔记本睡眠或者关机超过两分钟,ip和mac的信息就从路由器的缓存中删除了,之后想要唤醒也就不可能了。

于是我就打算在宿舍布置一台路由器,路由器因为一直开着,学校路由器就不会把信息从arp表中删除。从而实现唤醒。

过程

  1. 我买的路由器是小米路由器4A千兆版 XiaoMi Route 4A。它自带的rom其实非常不错,界面也非常美观。除了它有一个致命缺陷,它不支持arp绑定。这令我非常无语。在手机和笔记本都连在路由器的情况下,我无法唤醒笔记本,简直离谱。当然貌似能通过命令的方式手动写arp表,但是当时还想着刷机完,就没尝试,现在有点后悔了

  2. 给路由器刷机其实非常简单,首先我们得获得路由器的shell。但是坑爹的小米没有给你ssh的权限。所以一个大神直接用一个路由器管理界面的漏洞来直接get shell 2333。github仓库:acecilia/OpenWRTInvasion。按照文档说明一步步来即可 get shell。

  3. 以上的脚本不光可以get shell,同时还在路由器的21端口开放了ftp服务器,我们可以用winscp来连接路由器,方便之后的文件传输。

  4. 在终端中输入以下命令来备份路由器的eeprom虽然好像没用

    1
    dd if=/dev/mtd3 of=/tmp/eeprom.bin

    输完命令后,通过winscp把文件备份到电脑上。

  5. 下载breed的固件。链接 https://breed.hackpascal.net/breed-mt7621-pbr-m1.bin

    breed就是一个bootloader,用它来可以刷其他固件,而且有了breed就不怕路由器变砖了。长按reset的情况下接通路由器电源,等路由器灯亮了10s左右放开手,路由器就能回到只有一个breed的初始状态,开始新的刷机,十分方便。

    breed的固件可以在电脑上下好后通过winscp传到路由器的/tmp文件夹下。再输入以下指令刷入breed 固件。

    1
    cd /tmp && mtd write breed-mt7621-pbr-m1.bin Bootloader
  6. 之后路由器会自动重启,从路由器的LAN口扯出一根网线连到笔记本上,访问192.168.1.1即可进入breed控制界面。

  7. 然后去这个这个 仓库里下载 Openwrt 的breed直装版 Actions · ababwbq/Actions-OpenWrt-Xiaomi-R4A (github.com) 。直接装官网的版本会出错,估计官网是给你直接刷的,而不是通过breed来刷的。

    下载以下文件,然后解压后就可以得到Openwrt的breed直装固件了。

    zip

    openwrt bin

    这里我记得刷sysupgrade的固件即可。

  8. openwrt的页面非常好看,功能也非常丰富,但是它有一个非常奇怪的特性。

    openwrt

    因为学校上网首先需要过一遍锐捷的校园网认证。那路由器怎么过认证呢?

    正常情况下,我们可以用一台设备连接路由器的网络,然后点开一个网页,这是网页就会自动跳转到认证界面,输入账号密码过后就能认证成功。而学校的网络只能识别到一个路由器完成了校园网认证,它没法检测到路由器下的内网。所以我们这样一干实际上就把路由器给认证了。

    但是openwrt特立独行,我从LAN口接出一条网线给笔记本,结果笔记本无法跳出认证界面。如果用wifi连,能跳出来,但是一看ip,好家伙,ip是校园网的,认证的是笔记本,而不是路由器。

    这非常奇怪,现在回想起来,感觉是openwrt的默认路由模式的问题,从现象来看openwrt像是在AP(Access Point)模式,就是一台具有无线的交换机。但是我找不到如何设置模式,网上也没有这种问题的解决方案。

    当时我想到了一个解决方案,就是用我上次写的校园网自动认证脚本来让路由器过校园网认证。但是这起码得有curl命令,但是路由器默认没有curl,而下载命令需要网络。我甚至还试图用笔记本的网络来共享给路由器,结果不知道为什么不行,总之非常的折磨(

    然后就放弃了,准备刷padavan。

  9. padavan在breed里直接刷就行。固件我是用的恩山论坛这位老哥分享的 小米路由器4A千兆版刷Padavan(WIN10刷,含刷死救砖)

    padanvan固件

    padavan比openwrt好驯服多了,刷完笔记本连上LAN口网线,直接弹出了校园网认证界面,直接就把路由器给认证了。

    以下是padavan默认的信息

    • 新固件网关:192.168.123.1
    • 管理页面:http://my.router
    • 管理账号:admin/admin
    • wifi名称:pdcn
    • wifi密码:1234567890

    后台访问界面用的是HTTP Basic认证。

    my.router

    padavan管理界面

    界面没有openwrt和小米原rom好看,但是功能十分丰富。我一开始买路由器就是为了解决远程唤醒笔记本的问题,我惊喜地发现它在管理界面可以直接唤醒设备。

    网络唤醒功能

    这就十分方便了,那我们就不需要什么WOL软件,更不需要什么麻烦的端口转发了,我们唯一需要干的事就是保持我们可以访问到路由器管理界面。

    我们首先打开 高级设置->防火墙->允许从互联网设置MT7621_7603_7612_128M的开关,这样就能在校园网内访问到管理界面了。

    允许从互联网设置MT7621_7603_7612_128M

    然后我又用了实验室的主机做了管理界面的反代,再把服务内网穿透给阿里云服务器,最终实现了公网打开管理界面。

    但是这样还是不够方便,于是我用Burp抓了个包。

    burp抓包

    也就是说我们唤醒笔记本只需要发送这样一个HTTP报文就可以了,那我们如何借助手机或者平板来实现这个功能了。

    这里就要介绍无敌Burpsuite的强大功能了,分别是Copy as requestsCopy as curl command,前者可以把HTTP报文转化为python的requests请求,后者可以直接转化为shell中的curl方式。

    Copy as

    这样我就得到了两个脚本。运行任意一个就可以在公网唤醒我的笔记本。

    两个牛逼的脚本

视频演示

战术总结

刷机过程挺有趣的,学习到了许多。

解决了之前学校路由器没有arp绑定的痛点。实现了真正的随时(电脑关机或睡眠多久都没事)随地(公网唤醒)唤醒笔记本。


小米路由器4A 刷入 Breed 与 Padavan
https://wuuconix.link/2021/09/08/padavan/
作者
wuuconix
发布于
2021年9月8日
许可协议