物联网设备固件获取

时间:2024-02-22 09:44:55

固件获取主要有三类方法,一类是直接从官网上找到目标型号的设备固件下载下来即可;一类是使用Telnet或者ssh从目标设备中获取固件;最后一类是需要使用一些硬件工具和软件工具,从开发板上的flash芯片中或者通过UART和JTAG调试接口将固件提取下来。

 

1)网上下载

D-Link路由器固件      ZOL驱动下载网站上也可以找到其他品牌路由器的固件,点击链接

TP-Link路由器固件

华硕ASUS路由器固件(输入产品型号,找到固件下载即可)      eg.RT-AC88U

腾达Tenda路由器固件(输入产品型号)      eg.AC23

小米路由器固件(ROM)

小蚁智能摄像头固件(但是这个下载下来不晓得文件是什么格式)

美国网件NETGEAR设备固件(输入产品型号,下载压缩包格式,其中是内核和根文件)   这个链接也可

 

下载得到的固件包一般是.bin格式,也有.trx格式:

.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是为一些设备支持提供的文件,使它符合一些设备的特性。

.bin格式转化为.trx格式

 

在查找资料过程中,还接触到了Openwrt这个名词:

Openwrt是嵌入式设备上运行的linux系统。OpenWrt 的文件系统是可写的,开发者无需在每一次修改后重新编译,令它更像一个小型的 Linux 电脑系统,也加快了开发速度。
无论是 ARM, PowerPC 或 MIPS 的处理器,都有很好的支持。并且附带3000左右的软件包,用户可以方便的自定义功能来制作固件,也可以方便的移植各类功能到openwrt下。

相关资料:

openwrt是什么_openwrt有什么用从零开始编译OpenWrt固件openwrt编译入门(绝对详细版)

 

2)远程登录获取固件

前提条件是有目标物联网设备,并且能正确联网。

这里使用几个工具,来对目标设备上的固件进行下载。①PuTTY,②WinSCP

PuTTY工具使用ssh协议登录目标设备服务器,并将固件文件复制到/tmp文件夹;

WinSCP工具登录目标设备后,可将/tmp中的固件下载到本地硬盘中。

参考(详细步骤):https://jingyan.baidu.com/article/870c6fc31357ebb03fe4bedd.html

 

3)硬件提取

在网络上找不到目标固件资源的情况下,可以选择从硬件下手,提取固件。一般比较常用的是下边两种:

已知固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,不会存储在RAM中。

一是从Flash芯片中读取固件:①将导线连接到芯片的引脚,通过飞线连接RT809F编程器,进行编程器软件在线读取固件【该方法比较适合大型的、成本较高、价格昂贵的工控设备,该方法不会对开发板造成破坏】;②把芯片拆焊下来,通过烧录座编程器,离线读取固件【适用于芯片引脚采用点锡丝网焊接在背面,引脚太小或没有暴露出引脚等情况】;案例和参考:链接

二是通过串口或调试接口读取固件:①bootloader读取,芯片和电脑之间通过UART串口连接通信,运行mcuisp软件,点击读Flash即可(或者使用SSCOM软件也可以);②需要用到硬件调试工具,一般可以通过下面两类调试接口,把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的硬件调试单元和外面的仿真器进行通信,既能调试又能下载。

嵌入式开发——串口 UART JTAG TTL 区别和联系

 

固件分析工具:

binwalk – 通过固件文件头来分析文件和文件系统(binwalk使用方法
file – 用来检测是否是有效的文件和文件类型
hexdump --16进制导出工具
strings --跟hexdump类似但是可以以可读的形式展示
lzma --解压LZMA文件

 

主要参考资料:

IOT设备固件介绍及提取

渗透低性能智能设备的关键技术-固件提取

物联网设备测试工具及方法简介

IoT设备固件分析教程之固件是怎么存储的