固件獲取主要有三類方法,一類是直接從官網上找到目標型號的設備固件下載下來便可;一類是使用Telnet或者ssh從目標設備中獲取固件;最後一類是須要使用一些硬件工具和軟件工具,從開發板上的flash芯片中或者經過UART和JTAG調試接口將固件提取下來。php
D-Link路由器固件 ZOL驅動下載網站上也能夠找到其餘品牌路由器的固件,點擊連接html
TP-Link路由器固件linux
華碩ASUS路由器固件(輸入產品型號,找到固件下載便可) eg.RT-AC88Ugit
騰達Tenda路由器固件(輸入產品型號) eg.AC23github
小米路由器固件(ROM)編程
小蟻智能攝像頭固件(可是這個下載下來不曉得文件是什麼格式)服務器
美國網件NETGEAR設備固件(輸入產品型號,下載壓縮包格式,其中是內核和根文件) 這個連接也可網絡
下載獲得的固件包通常是.bin格式,也有.trx格式:ssh
.bin files are for flashing from a stock firmware. .trx files are for flashing from OpenWrt. bin後綴文件通常爲十六進制經過刷寫BIOS的工具來燒錄芯片經常使用的格式,bin文件是直接能夠燒到固件裏面執行的;bin文件是從硬盤啓動所須要的,會添加相應的文件系統頭,trx是flash啓動的,要把頭去掉,因此trx會比bin小些;通常說來,trx的固件是通用的版本,bin是爲一些設備支持提供的文件,使它符合一些設備的特性。工具
在查找資料過程當中,還接觸到了Openwrt這個名詞:
Openwrt是嵌入式設備上運行的linux系統。OpenWrt 的文件系統是可寫的,開發者無需在每一次修改後從新編譯,令它更像一個小型的 Linux 電腦系統,也加快了開發速度。
不管是 ARM, PowerPC 或 MIPS 的處理器,都有很好的支持。而且附帶3000左右的軟件包,用戶能夠方便的自定義功能來製做固件,也能夠方便的移植各種功能到openwrt下。
相關資料:
openwrt是什麼_openwrt有什麼用、從零開始編譯OpenWrt固件、openwrt編譯入門(絕對詳細版)
前提條件是有目標物聯網設備,而且能正確聯網。
這裏使用幾個工具,來對目標設備上的固件進行下載。①PuTTY,②WinSCP。
PuTTY工具使用ssh協議登陸目標設備服務器,並將固件文件複製到/tmp文件夾;
WinSCP工具登陸目標設備後,可將/tmp中的固件下載到本地硬盤中。
參考(詳細步驟):https://jingyan.baidu.com/article/870c6fc31357ebb03fe4bedd.html
在網絡上找不到目標固件資源的狀況下,能夠選擇從硬件下手,提取固件。通常比較經常使用的是下邊兩種:
一是從Flash芯片中讀取固件:①將導線鏈接到芯片的引腳,經過飛線鏈接RT809F編程器,進行編程器軟件在線讀取固件【該方法比較適合大型的、成本較高、價格昂貴的工控設備,該方法不會對開發板形成破壞】;②把芯片拆焊下來,經過燒錄座編程器,離線讀取固件【適用於芯片引腳採用點錫絲網焊接在背面,引腳過小或沒有暴露出引腳等狀況】;案例和參考:連接。
二是經過串口或調試接口讀取固件:①bootloader讀取,芯片和電腦之間經過串口鏈接通訊,運行mcuisp軟件,點擊讀Flash便可;②須要用到硬件調試工具,通常能夠經過下面兩類調試接口,把Flash中的數據讀取出來:
(1)SWD接口,利用硬件:J-LINK OB或者J-LINK或者ST-LINK;利用軟件:J-LINK驅動程序自帶的J-FLASH或者ST官網提供的STVP。
(2)JTAG接口,利用硬件:J-LINK;利用軟件:J-LINK驅動自帶的J-FLASH。
串口和調試接口的區別:
能用串口下載程序的單片機,其內部通常都有boot程序的支持,boot程序將要下載的數據經過串口接收到單片機以後調用boot中的flash編程程序,寫到內部的flash中;
JTAG是一種標準的調試接口,徹底硬件實現,須要單片機內部有JTAG的硬件調試單元和外面的仿真器進行通訊,既能調試又能下載。
固件分析工具:
binwalk – 經過固件文件頭來分析文件和文件系統(binwalk使用方法)
file – 用來檢測是不是有效的文件和文件類型
hexdump --16進制導出工具
strings --跟hexdump相似可是能夠以可讀的形式展現
lzma --解壓LZMA文件
主要參考資料: