openwrt韌體提取方法

2021-10-03 21:19:02 字數 1134 閱讀 1509

最近遇到乙個問題,openwrt路由器網口無法聯網。

通過wifi進入到路由器系統後,逐個檔案排查,並未發現異常,而且系統引數確實未檢測到網線接入(但可用的網線確確實實是接入了的)。

cat /sys/class/net/eth0/operstate
返回值一直為down。

此時考慮是否是硬體問題,準備將路由器的韌體提取出來,燒錄到另外一台路由器。

如果按照目錄乙個個打包拿出來是不太可行的,一方面工作量大,另一方面可能會有漏掉的檔案,因此使用dd指令將系統整個firmware提取出來。

root@openwrt:/# cat /proc/mtd 

dev: size erasesize name

mtd0: 00040000 00001000 "u-boot"

mtd1: 00010000 00001000 "u-boot-env"

mtd2: 00e30000 00001000 "rootfs"

mtd3: 0060e000 00001000 "rootfs_data"

mtd4: 00170000 00001000 "kernel"

mtd5: 00010000 00001000 "art"

mtd6: 00fa0000 00001000 "firmware"

系統韌體firmware包括rootfs和kernel,因此在提取時只需提取mtd6即可。

又由於openwrt的韌體大小為16m,因此提取指令為:

dd if=/dev/mtd6 of=/tmp/test.bin bs=65536 count=250
(65536*250=16m)

提取到bin檔案後,就可以通過tftp指令將檔案推送到pc,然後燒錄到其他路由器上進行對比了。

上傳過程中發現另外乙個異常:

提取到的檔案命名是完整的16m,但是通過tftp上傳給windows10電腦後,大小變成了16m+77k,導致燒錄時大小超限。顯然是windows下的tftp server沒好好幹活,或者有些特殊的規則?

由於一般採用linux電腦搞開發,就直接用linux電腦重新接收了一遍,大小正常,燒錄ok。

本文主要是介紹韌體的提取方法。

openwrt 程式設計器韌體製作方法

使用winhex自建程式設計器韌體 我的是tp wr941n v2 1 使用winhex新建乙個8m,16m的檔案,編輯 全選,填充選塊,填充十六進製制數值 ff 2 開啟4m的原廠程式設計器韌體 或者自己備份的,包含uboot和art分割槽的 定義選塊,從0到0001ffff 複製,然後開啟新建的...

openwrt 更改預設韌體大小

編譯 mtk7620a 韌體時,增加了 php 和 nginx 服務,發現韌體不出來,經過檢查,發現預設的大小為 8m,然而,開發板的 flash 為 32m 感覺太浪費了。經過搜尋。發現是可以更改 flash韌體大小的。我的 openwrt 原始碼為 chaos calmer 1505 修改 ta...

韌體提取方法總結與手動解壓

0x01簡述 ftp協議或者是http協議的get請求 不過一般情況下使用的是下面這種燒錄器 在這裡插入描述 補充小技巧 截圖來自 0x03韌體映像檔案解壓 檢視十六進製制檔案hexdump c bin hex.out n 設定要輸出的字串含有的最少的字元數 c 輸出規範的十六進製制和ascii碼 ...