小公尺路由器官方提供的韌體是自定義格式,而且刷機時要驗證rsa簽名,因此只刷自製韌體幾乎不可能。
通過對韌體工具mkxqimage的分析,基本弄清楚了韌體打包和解包的流程,如果採用自己的rsa私鑰打包韌體,然後用自己的rsa公鑰替換/usr/share/xiaoqiang/public.pem,那麼就能實現通過web介面刷自製韌體。
韌體解包
韌體工具mkxqimage完成對韌體的解包,在解包前先檢查checksum是否正確,然後利用rsa公鑰/usr/share/xiaoqiang/public.pem檢查rsa簽名,這兩個步驟通過後,根據[0x0c]的韌體型別,以及[0x10]、[0x14]、[0x18]和[0x1c]的4個偏移量拆分韌體。韌體中可能包含的內容有:
brcm4709_fac_update_nor.bin
brcm4709_nor.bin
fac_mode.bin
nvram_fac.bin
ramfsz
root.ext4.lzma
root.squashfs
upsetting.sh
upsetting_fac1.sh
upsetting_fac2.sh
upsetting_fac3.sh
vmlinuz.trx
韌體格式和解包命令詳見:小公尺路由器韌體分析
韌體打包
下面以穩定版0.4.85為例,介紹韌體修改和打包方法。
韌體解包
cd /userdisk/data
mkdir xqimage
cd xqimage
wget -o mkxqimage.tgz
tar xzf mkxqimage.tgz
wget -o brcm4709_hdr_039ef_0.4.85.bin
./mkxqimage -x brcm4709_hdr_039ef_0.4.85.bin
得到2個檔案:
-rw-r--r-- 1 root root 16646144 may 30 08:14 brcm4709_nor.bin
-rw-r--r-- 1 root root 34853955 may 30 08:14 root.ext4.lzma
前者是flash全映象,這個檔案成分比較複雜,目前不建議修改它。
後者是硬碟韌體映象,先用unlzma解壓,得到root.ext4
unlzma root.ext4.lzma
韌體修改
用mount命令載入
mount -o loop -t ext4 root.ext4 /mnt
接下來先把rsa公鑰替換掉,然後開ssh
cd /mnt/usr/share/xiaoqiang
mv public.pem public.pem.orig
cp /userdisk/data/xqimage/public.pem public.pem.new
ln -s public.pem.new public.pem
sed -i 's/ssh_en=0/ssh_en=1/g' xiaoqiang-defaults.txt
把一些關掉的web介面恢復
cd /mnt/usr/lib/lua/luci/controller/web
sed -i 's/--entry/entry/g' index.lua
如果需要,還可以對韌體進行修改,這裡就不再多說。
將上面的修改儲存回硬碟韌體映象檔案中:
cd /userdisk/data/xqimage
umount /mnt
sleep 30
# 一定要等待一會兒後再壓縮映象
韌體打包
將修改後的硬碟映象壓縮:
./lzma e -a0 root.ext4 root.ext4.lzma
./mkxqimage -o brcm4709_hdr_00000_0.4.85.bin -p ./private.pem -t 5 -f brcm4709_nor.bin -f root.ext4.lzma
公升級準備
公鑰替換
mount -o rw,remount /
cd /usr/share/xiaoqiang
mv public.pem public.pem.orig
cp /userdisk/data/xqimage/public.pem public.pem.new
ln -s public.pem.new public.pem
mount -o ro,remount /
自製韌體測試
用下面的命令測試:
cd /userdisk/data/xqimage
mkdir test
cd test
mkxqimage -x ../brcm4709_hdr_00000_0.4.85.bin
ls -l
如果解壓韌體過程中沒有出現錯誤資訊,最後列表出2個檔案,說明自製韌體打包沒問題。
-rw-r--r-- 1 root root 16646144 jun 1 12:00 brcm4709_nor.bin
-rw-r--r-- 1 root root 33188560 jun 1 12:00 root.ext4.lzma
注意:brcm4709_nor.bin檔案的大小一定是16646144。
驗證root.ext4.lzma是否正確:
cd /userdisk/data/xqimage/test
unlzma root.ext4.lzma
mount -o loop -t ext4 root.ext4 /mnt
ls -l /mnt/usr/share/xiaoqiang/public.pem*
grep ssh_en /mnt/usr/share/xiaoqiang/xiaoqiang-defaults.txt
umount /mnt
上面命令執行完畢後,應該能看到一些資訊(時間資訊會有差別):
lrwxrwxrwx 1 root root 14 jun 1 11:30 /mnt/usr/share/xiaoqiang/public.pem -> public.pem.new
-rw-r--r-- 1 root root 451 jun 1 11:30 /mnt/usr/share/xiaoqiang/public.pem.new
-rwxr-xr-x 1 root root 451 may 27 11:33 /mnt/usr/share/xiaoqiang/public.pem.orig
ssh_en=1
備份自製韌體
在計算機資源管理器中輸入: \\192.168.31.1\xiaomi\xqimage ,目錄列表中能看到brcm4709_hdr_00000_0.4.85,將該自製韌體複製到計算機上。
公升級自製韌體
登入小公尺路由器管理頁面,在「路由設定」-「高階功能」-「路由器手動公升級」介面中選中brcm4709_hdr_00000_0.4.85,點「上傳並安裝韌體」按鈕,等待數分鐘。
安裝完韌體後,ssh有可能沒有啟動,這是因為公升級韌體時將nvram項ssh_en清為0,而第一次啟動時通過defaults設定將ssh_en設定為1的動作在dropbear啟動之後。只需要重啟一下路由器,就能夠ssh登入了。
特別提醒
由於替換了路由器中的rsa公鑰,路由器不能公升級官方韌體,如果想恢復成官方韌體,只需換回原來的公鑰,方法如下:
mount -o rw,remount /
cd /usr/share/xiaoqiang
cp public.pem.orig public.pem
mount -o ro,remount /
小公尺路由器怎麼限速 小公尺路由器給裝置限速的教程
由於家裡的無線路由器有很szvcwddv多人在使用,但大家都用它來 或看電影了這樣就影響到我正常的工作了,那麼我們有沒有辦法來限制一些人的速度呢,下面就看一下如何限速吧 1 開啟瀏覽器在電腦中位址列輸入頁面,如圖所szvcwddv示 2 輸入管理員密碼後,在首頁會顯示實時網速,及連線小公尺路由器的終...
全新小公尺路由器多少錢 新小公尺路由器配置怎麼樣
小公尺路由器怎麼賣?小公尺路由器配置如何?小公尺今天下午召開了發布會,而今天到來了就是之前猜測的小公尺路由器了,那麼全新小公尺路由器多少錢?新小公尺路由器配置怎麼樣?下面小編就為大家介紹一下,來看看吧!剛剛,小公尺正式發布了全新小公尺路由器,造型和上代產品有了很大不同,採用外接雙天線,同時內建了大容...
小公尺路由器3 R3 刷韌體
1 1 首先進入路由器原聲後台 miwifi.com 1 2 在右上角,點選系統公升級 在系統版本下邊選擇手動公升級,選擇資源包裡的 miwifi r3 all 55ac7 2.11.20.bin 檔案 如下圖所示 1 3 公升級完成後,設定路由器後台密碼,這裡隨意即可。2 2 開啟以後你會看到如下...