文章目录
openwrt 安装
- Router:xiaomi R4C
- 官方固件:openwrt 23.05.5 (下图标红处)
- 官方教程
- 下载 OpenWRTInvasion
python remote_command_execution_vulnerability.py
,- 按照提示输入。路由器后台地址是
192.168.31.1
,密码就是后台密码(stok参数可以自动获取,不用记)
- 按照提示输入。路由器后台地址是
- 然后通过
telnet 192.168.31.1
登录进路由器 (User: root - No password)- cd /tmp
- 下载openwrt.bin文件,路由器中的wget无法下载https,我是先下载到本地
mtd -r write /tmp/openwrt.bin OS1
,如下图所示
接着,WiFi 信号消失,最初以为又要变砖了。去B站看了视频,发现up主用的是以太网访问了
192.168.1.1
,于是想到用网线连上路由器和电脑进行配置,果然成功了。致谢:UP主DUX2468的视频
openwrt 配置
Status | System | Network |
---|---|---|
Overview Routing Firewall System Log Processes | Administration Software Startup Scheduled Tasks | Interfaces Wirelesss Switch Routing DHCP and DNS |
开启WiFi
openwrt 安全和开启WiFi
添加WiFi密码
记得 Enable,以及Save & Apply
救砖
小米有个救砖工具,原理应该是通过网线连接电脑和路由器,将原版固件导入到Router,之前刷坏了一个R4A(刷breed后无WiFi),救砖工具没有奏效,刷 breed 有风险。
minieap
首次启动可能出现如下错误
[E] 无法打开配置文件: No such file or directory (2)
[W] 配置文件解析出错,请注意命令行参数是否完整
启动认证命令
shell
minieap -u username -p password -n eth0.2 --module rjv3 -w
- 重要文件:/etc/minieap.conf, /var/log/minieap.log
-w
会将命令行的参数更新到配置文件
编译
Reference: https://www.cnblogs.com/yellowsea/p/17152106.html
- 确定路由器的架构 Architecture(路由器后台管理会有),比如xiaomi R4C是 MT7628
- 到 OpenWrt 官网下载对应的sdk源码(我的是23.05.5),
https://downloads.openwrt.org/releases/23.05.5/targets/ramips/mt76x8/
,找到openwrt-sdk-23.05.5-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
- 在Linux环境编译:
shell
# 源码解压
xz -d <xxxx.tar.xz> # 先进行第一层解压
tar -xvf <xxxx.tar> # 再进行第二层解压
cd <解压后sdk文件夹内>
# 依赖安装
apt install libncurses5-dev zlib1g-dev gawk flex patch git-core g++ subversion
# 克隆仓库到 ./package/minieap 位置
git clone https://github.com/KumaTea/openwrt-minieap.git package/minieap
# 选择要编译的package, 会进入 UI界面
make menuconfig
依次选择Network、选中minieap(按y键选中,选中后左边会显示[*])、选择Save、ok、Exit,退出到shell即可
shell
# 开始编译
make package/minieap/compile V=s
在编译完成后,我们可以在 <sdk目录>/bin/packages/mipsel_24kc/base
目录下找到 minieap_0.93-1_mipsel_24kc.ipk
软件包。
登录到Openwrt 后台,System -> Software -> Upload Package,install
通过ssh连接到路由器,which minieap
看是否安装成功
参数帮助
shell
root@OpenWrt:/tmp# minieap -h
--kill, -k [1] 终止其他实例并退出。加任意非 0 参数表示终止其他实例后继续进行认证
--save, -w # 保存本次认证所用参数
-u <...> # 用户名
-p <...> # 密码
-n <...> # 监听的网卡, `ip a` 查看
--stage-timeout, -t <num> 单个认证阶段的超时时间 [默认5]
--wait-after-fail, -r <num> 认证失败后重新认证前的等待时间(但当服务器要求重新认证时将直接开始认证)[默认30]
--max-fail, -l <num> 最大允许认证失败次数 [默认3]
--no-auto-reauth, -x 认证掉线后不允许自动重连 [默认1]
-b <0-3> # 后台运行方式:
# 0 = 不后台 [默认]
# 1 = 后台运行,关闭输出
# 2 = 后台运行,输出到当前控制台
# 3 = 后台运行,输出到日志文件
--proxy-lan-iface, -z <...> 代理认证时的 LAN 网络界面名 [默认无]
--auth-round, -j <num> 需要认证的次数 [默认1]
--max-retries <num> 最大超时重试的次数 [默认3]
--pid-file <...> PID 文件路径,设为none可禁用 [默认/var/run/minieap.pid]
--conf-file <...> 配置文件路径 [默认/etc/minieap.conf]
--if-impl <...> 选择此网络操作模块,仅允许选择一次 [默认为第一个可用的模块]
--pkt-plugin <...> 启用此名称的数据包修改器,可启用多次、多个 [默认无]
--module <...> 同上。当命令行选项中存在 --module 或 --pkt-plugin 时,配置文件中的所有 module= 行都将被忽略
--log-file <...> 日志文件路径 [默认/var/log/minieap.log]
--script <...> 事件脚本 认证成功后运行此命令[默认无]
以下是可用的网络操作模块:
sockraw (采用RAW Socket进行通信的轻量网络接口模块)
以下是可用的数据包修改插件及其选项:
插件名称: printer (将流经此插件的数据包内容打印出来)
此插件无选项可用
插件名称: rjv3 (来自 hyrathb@GitHub 的 Ruijie V3 验证算法)
--heartbeat, -e <num> 心跳间隔秒数 [默认60]
--eap-bcast-addr, -a <0-1> Start 包广播地址: [默认BROADCAST_STANDARD]
0 = 标准地址
1 = 锐捷私有地址
--dhcp-type, -d <0-3> # 0 = 不使用 DHCP
# 1 = 二次认证
# 2 = 认证后 DHCP[默认]
# 3 = 认证前 DHCP
--dhcp-script, -c <...> 二次认证之间及认证完成后运行此命令 [默认无]
--rj-option <type>:<value>[:r] 自定义认证字段,其中 type 和 value 必须为十六进制串
如 --rj-option 6a:000102 表示新增一条类型为 0x6a、内容为 0x00 0x01 0x02的字段
:r 表示替换内置生成的字段,如 --rj-option 6f:000102:r 表示将内置算法生成的类型为 0x6f 的字段内容替换为 0x00 0x12 0x02
当命令行与配置文件中同时存在此选项时,两处的选项都将发挥作用。若认证失败,请检查配置文件中是否有错误的参数
--service <str> 自定义服务名 [默认internet]
--version-str <str> 自定义版本字符串 [默认RG-SU For Linux V1.0]
--fake-dns1 <str> 自定义主 DNS 地址(点分十进制 IPv4 格式) [默认自动获取]
--fake-dns2 <str> 自定义次 DNS 地址(IPv4 / IPv6 不限) [默认自动获取]
--fake-serial <str> 自定义硬盘序列号 [默认自动获取]
--max-dhcp-count <num> 二次认证时等待 DHCP 结果的允许超时次数 [默认3]
从 --service 到 --fake-serial(除 --fake-dns1)都是对应的 --rj-option 的简单形式,可直接使用 ASCII 字符串作为参数,不需转化为十六进制表示