固件获取主要有三类方法,一类是直接从官网上找到目标型号的设备固件下载下来便可;一类是使用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文件
主要参考资料: