固件提取

2023-05-16

  • 前言
  • 使用工具
  • 识别芯片
  • 一. 摘取芯片
  • 二. 制作U盘编程器
  • 三. RT809H编程器读取eMMC芯片数据
  • 四.总结

前言

无处不在的物联网设备,也可能成为无所不在的安全隐患,物联网安全问题一直是困扰物联网快速发展的一大难题。作为安全研究员在研究物联网设备的安全问题时,对设备的固件进行安全分析是必要的。固件是刷写在芯片中的嵌入式系统。固件的获取途径一般有两种,1、从厂商那里申请获取设备的固件。2、从硬件中提取设备固件,需要有相应的测试设备。以下我们以提取国内一家做基于区块链的IoT设备中的固件为例。

使用工具

  • 1.风枪(温度:有铅锡熔点是183℃,拆除理想温度是185~190℃。无铅锡熔点是217℃拆除理想温度是235℃。实际操作更复杂,要多练习才能完好的把芯片取下。)
  • 2.助焊剂
  • 3.镊子
  • 4.U盘编程器
  • 5.锡珠
  • 6.植锡网
  • 7.RT809-H编程器
  • 8.放大镜

识别芯片

常见的识别芯片的方法:
1.可以通过芯片上的标签,标签中可能包含了制造商名称、型号和芯片描述
2.可以通过观察电路的设计方式,如下图(图片来自网络)

片上系统(SoC)是右侧这块最大的芯片,中间的芯片是RAM(与SOC之间的接线是弯曲的,这是为了保证所有连线有相同的长度,因为高速RAM需要准确的定时信号),最左边这片是flash(大量平行的连线用于传输并行的数据信号)。

一. 摘取芯片

首先要分辨出PCB板上的flash芯片。由于原板已经被拆解的面目全非,找不到完整的PCB板的图,所以就只有单个芯片的图
查询芯片型号找到了flash芯片,三星公司的 KLM8G1GEME -B041内存芯片 采用了eMMC技术(型号:eMMC_153)

摘取eMMC芯片是需要一个手巧,且费心力的技术活,这块板子用的还是无铅的锡来焊接的芯片,由于无铅锡比有铅锡纯度更高,所以熔点更高。但是芯片可承受的温度是不变的。

拆解芯片需要给芯片的引脚涂上助焊剂,把风枪的温度调整到350度左右,将风枪口放置在芯片上方5CM的高度来回摆动让芯片所有引脚受热均匀,注意要给周围的元器件贴上高温胶带防止被风枪吹掉或损坏。(由于经验不足,导致板子的导线都被扯了出来)


获得:废板一块,eMMC芯片一枚
废板可以用来继续联系摘取与焊接BGA芯片,而这个芯片我们就要取读取其中的固件了
读取固件这里我们有两个思路:
1. 使用这个eMMC芯片制作U盘,通过U盘编程器上的主控芯片和软件读出芯片中的数据
2. 使用RT809H编程器读出芯片中的固件

注::有铅锡和无铅锡的区别

二. 制作U盘编程器

1.清洗芯片引脚

首先把刚取下的芯片上的焊点清理干净,使引脚平整。

2.植球

然后在芯片上值上新的引脚,这个操作叫做植球。需要买来合适的钢网和锡珠才可以进行这步操作 (图片来源于网络,图中的芯片型号和测试设备中的芯片型号不同)

在芯片上抹上适量的助焊剂,助焊剂可以起到一定的固定钢网和附着锡珠的作用。
再像上图那样将钢网按照芯片引脚放在芯片上,倒上锡珠,使每个引脚上都有锡珠,用风枪把锡珠吹融化附着在芯片引脚上,植珠就完成了

3.焊接并读取U盘数据

U盘编程器

接下来要将植珠好的芯片焊接在U盘编程器上

将芯片对应编程器上的引脚放好,使用风枪吹芯片,让锡珠融化,焊接在编程器上。U盘编程器就做好了
后续使用windows系统读取U盘时发现不能识别到U盘。
因为芯片中的文件系统是ext4,后又使用Linux系统对U盘进行读写,也识别不到设备。
然后使用一款数据恢复工具去读取U盘也是识别不到。
总结:U盘编程器板子到货之后测试过没有问题,eMMC芯片后来也被证实可以读出数据。电脑识别不到设备的问题可能是编程器的主控芯片对这个并不兼容,也可能是芯片焊接有问题,因为时间问题并没有深究故障原因。

三. RT809H编程器读取eMMC芯片数据

1.安装芯片

将芯片放好在专用座子里并将座子放在编程器上锁紧

使用软件对芯片进行自动识别


识别出了通用emmc芯片

2.读取芯片

点击面板上的读取来获取芯片中的固件

有时会出现引脚接触不良的情况,可以在锁紧板和芯片之间放一些柔软的物体来增加芯片和座子上引脚的贴合度


当进度条显示100%时,固件读取就完成了


BIN文件就是我们需要的固件,里面包含我们固件分析要用到的文件系统

四.总结

这篇文章主要总结了提取固件的一般流程:识别芯片,摘取芯片,读取芯片。
U盘编程器虽成本低,但是中间需要较多手动操作的环节,某一个环节操作不细致就有可能损坏芯片,造成损失或者出现一个很难排查的错误,排查错误本身也会造成时间成本浪费。RT809H编程器加上eMMC专用的座子,省去了使用U盘编程器的焊接步骤,也不用担心编程器是否兼容芯片,甚至可以帮你在不知道芯片型号的情况下自动识别芯片型号,提高工作效率,把精力放在固件安全分析上。后续TCC IoT安全研究团队会分享更多关于IoT设备的安全分析文章。

参考链接:https://blog.riskivy.com/iot%E7%B3%BB%E5%88%97-%E8%8A%AF%E7%89%87%E6%8F%90%E5%8F%96%E5%9B%BA%E4%BB%B6/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

固件提取 的相关文章

  • QT中的强制类型转换

    当使用C语言那种形式的强制转换 xff0c 发现QT会给出一个使用旧的方式的警告 所以在QT中使用如下类型转换 xff0c 就不会有警告 xff0c 而且这种方式的强制转换更加的安全 xff08 1 xff09 dynamic cast l
  • QT之QCharts的使用(绘制折线图)

    一 画折线图 1 修改 pro文件 在里面添加QT 43 61 charts 2 MyWidget h程序 ifndef MYWIDGET H define MYWIDGET H include lt QWidget gt 添加以下三个头文
  • 恢复经过软件处理过的U盘导致的U盘空间显示不正确等问题

    1 win 43 R xff0c 打开运行 xff0c 输入CMD xff0c 点击确定 2 在命令行中输入DISKPART并回车 xff0c 会跳出一个窗口 xff0c 这就进入了diskpart 3 在跳出的窗口diskpart 中输入
  • 关于STM32 CAN 发送失败问题解释

    首先解释一下CAN几个配置的功能 xff1a 1 CAN InitStruct CAN TTCM 61 DISABLE 这个只在某些CAN标准中使用 xff0c 就设置为DISABLE 2 CAN InitStruct CAN ABOM 6
  • VS2022调试vector无法显示详细信息

    使用vs2022调试vector发现这样的现象 xff1a 为了显示vector大小以及详细的元素 xff0c 需要编写natvis文件 span class token operator lt span span class token
  • STM32H7 PVD断电的使用

    1 遇到的问题 我使用的是STM32H747 xff0c 在初始化后发现断电后并没有进入中断 最后查找到因为STM32H747是双核CPU xff0c 在HAL库源码中 xff0c 有双核的宏定义将一些配置给屏蔽了 xff0c 因为我只用到
  • STM32H7A3 ADC+DMA使用问题

    问题1 xff1a DMA采用半字传输16位ADC值 xff0c 用于存储ADC数据的数组一定是采集数的两倍 xff0c 否则会产生ADC溢出的错误中断HAL ADC ErrorCallback xff0c 从而无法进入ADC采集完成中断H
  • STM32使用RTOS BootLoader跳转app进入异常中断问题

    一 问题描述 在boot中不使用RTOS xff0c 跳转到APP中 xff0c APP可以正常运行 但是boot中使用RTOS跳转到APP中 xff0c 程序配置完时钟后就会进入MemManage Handler错误中断 二 解决方法 1
  • STM32H7 SPI+DMA只发送一次,然后一直报busy的问题

    网上看了很多讲SPI 43 DMA问题的帖子 xff0c 有说必须发送DMA和接收DMA必须同时配置的 xff0c 有的说DMA发送前需要手动调用HAL SPI Abort函数的 首先我尝试的同时配置发送DMA和接收DMA xff0c 还是
  • STM32 EventRecorder printf不打印输出在调试窗口的问题解决

    一 添加event recorder到工程中 也可以自己移植源码到工程里面 xff0c 添加好后 xff0c 工程中会多出几个文件 xff0c 如下图所示 xff0c 我这是自己移植的源码到工程中的 xff0c 没有使用keil添加 二 初
  • linux只W25Q256驱动,使用m25p80,支持w25q系列nor flash

    1 内核编译选项增加 1 xff09 Device Drivers Memory Technology Device MTD support gt 2 Device Drivers Memory Technology Device MTD
  • STM32f103时钟系统简介

    主要是讲解怎么看懂这个图 一 内置RC振荡器 xff08 HSI RC xff09 频率是约为8MHz xff0c 因为其频率不是很稳定 其可作为系统时钟的一个选项 二 晶振振荡器 xff08 HSE OSC xff09 从图中可以看到其是
  • Keil软件仿真

    首先就是配置上面图中的debug xff0c 选择软件仿真 然后是选择芯片 xff0c 根据自己的硬件芯片选择 8号标注是进入该图中的debyg模式 1号标注 xff1a 这个是一个RST按钮 xff0c 和硬件一样是复位的功能 2号标注
  • STM32F103系列NVIC中断优先级分组讲解

    一 简介 CM3内核支持256个中断 xff0c 16个内核中断 xff0c 240个外部中断 xff0c 并且拥有256级的可编程中断设置 但是STM32只用到了CM3内核的一部分 xff0c STM32有84个中断 xff0c 包括16
  • BOM详解

    1 BOM 什么是 Browser Object Model 专门操作浏览器窗口的API 没有标准 DHTML对象模型 window 2个角色 1 代替global作为全局作用域对象 所有全局函数和全局变量都是window的成员 2 封装所
  • ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied问题解决

    Windows Anaconda python3 6 安装依赖包发生错误如下 pip install i https pypi tuna tsinghua edu cn simple r requirements txt user ERRO
  • docker的深入浅出--3.Dockerfile介绍及保留字指令的使用run、entrypoint、onbuild、add和copy关键字以及自定义镜像

    目录 一 Dockerfile介绍 1 centos镜像来理解Dockerfile 2 docker的创建流程 二 Dockerfile的保留字指令 1 自定义centos镜像 xff08 run保留字 xff09 history指令 2
  • 通过MAVROS控制仿真无人机

    首先 xff0c 在目录中建立工作区 xff0c 并进行初始化操作 mkdir p catkin ws src cd catkin ws catkin init wstool init src rosinstall generator ro
  • Jetson nano+T265+PX4实现室内定点飞行

    目录 前言 一 MAVROS的安装 二 Realsense SDK和Realsense ROS的安装 四 给予串口权限 五 在QGC中修改PX4参数 六 启动VIO节点 七 参考文献 前言 1 硬件 飞控 xff1a Pixhawk 6C
  • ros通信之topic通信机制及基于topic的节点通信

    现在的我对于节点node和节点句柄nodehandle的粗俗的理解是 xff1a 节点 xff0c 就是一个进程 xff0c 在ros的环境中叫做节点node 在计算机的工作中叫做进程 xff0c 两者是同时的 xff0c 在ros中 xf

随机推荐

  • inter realsener D435 ROS驱动安装(非源码编译)

    1 安装公钥 sudo apt key adv keyserver keys gnupg net recv key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE sudo apt key adv keys
  • 斜率与倾斜角的关系

    k 61 tan 61 atan k k 斜率 倾斜角
  • NVIDIA JETSON TX2 安装扩展SATA硬盘

    安装扩展硬盘 在dash中搜素disk 进入磁盘管理工具 xff0c 可以看到我们的扩展硬盘 点击磁盘左下角设置按钮 xff0c 进入Format Partition 为硬盘起个名字 xff0c 比如JetsonSSD 250 xff0c
  • Qt——QMessageBox类详解

    QMessageBox类提供了一个模式对话框 xff0c 用于通知用户或询问用户问题并接收答案 我们先来看下QMessageBox information函数的使用 其原型 xff1a static int QMessageBox info
  • 【UWB定位】 - DWM1000模块调试简单心得 - 3

    UWB定位 DWM1000模块调试简单心得 1 UWB定位 DWM1000模块调试简单心得 2 前俩篇介绍了简单的一基站一标签TOF方式测距 xff0c 第三篇我们来搭建一个 一标签三基站 的定位demo 目的 标签与三个基站分别测距 xf
  • 51单片机——计数器与定时器的区别

    定时器和计数器是同一器件 计数器 其共同的特点是都有一个计数脉冲输入端 每输入一个脉冲 计数器就进行加1或减1计数 若计数器件的计数脉冲的频率固定 则可利用计数实现定时 这就是定时器 若计数器件的作用仅仅是记录输入脉冲的多少 则称为计数器
  • vue 中 如何修改【数组中】【对象的值】,解决步骤如下

    原创 https segmentfault com q 1010000012375354 a 1020000012377603 vue 中 如何修改 数组中 对象的值 通过数组的变异方法 xff08 Vue数组变异方法 xff09 我们可以
  • 英伟达Jetson TX2 资源贴

    NVIDIA JETSON TX2 install packages 原创博客 xff0c 欢迎转载 xff0c 请注明博客链接 xff1a 英伟达Jetson TX2 资源贴 资源汇总 jetson tx2 GPIO 解决方案汇总 Jet
  • 研究线程锁之RLock(一)

    死锁 xff1a 是指两个或两个以上的进程或线程在执行过程中 xff0c 因争夺资源而造成的一种互相等待的现象 xff0c 若无外力作用 xff0c 它们都将无法推进下去 此时称系统处于死锁状态或系统产生了死锁 xff0c 这些永远在互相等
  • 虚拟机中使用OpenGL遇到的错误总结

    由于VMware对OpenGL的支持有限 xff0c 目前最新版本的VMware workstation15 Pro只支持到OpenGL3 3的core profile xff08 核心模式 xff09 xff0c 在有条件的前提下建议安装
  • 视觉SLAM——视觉里程计解决方案分析(间接法)

    目录 基本问题 分析各类求解方案优缺点分析 基本问题 视觉里程计是视觉SLAM技术的起点 xff0c 其核心问题同SLAM技术一样 xff0c 主要是定位与构图 xff0c 但视觉里程计解决的核心是定位问题 xff0c 也就是相机的位姿 通
  • 视觉SLAM理论——位姿的理解与间接求解

    目录 xff1a 位姿的定义位姿与变换矩阵的区别与联系位姿的求解方法 位姿的定义 在SLAM中 xff0c 位姿是世界坐标系到相机坐标系的变换 xff0c 包括旋转与平移 根据以上定义可以衍生以下几个问题 xff1a 1 世界坐标系在哪 x
  • 线性最小均方误差算法(LMSE),最小二乘法(LS)

    目录 背景正交投影引理LMSE算法LS算法直线拟合 背景 对于一个系统 xff0c 在给予一定的输入 xff0c 那么通常都会产生相对应的输出 在实际的系统中 xff0c 这样的输出必然伴随着噪声 xff0c 这样被噪声污染的输出通常是传感
  • 无人机,动力系统建模

    建模目的 无人机动力系统包括 xff1a 螺旋桨 电机 电调及电池 建模流程图如下 xff08 图片来源 多旋翼飞行器设计与控制 M 全权 xff09 xff1a 经过误差结算后 xff0c 将误差信息转换为螺旋桨的升力与转矩 xff0c
  • 寻找APM中EKF的五大公式

    EKF核心代码位置 AP NavEKF2 cpp 进入该函数 进入该函数 xff0c 然后可以看到关键部分 xff0c 也即卡尔曼五个公式的地方 下面介绍每个公式的具体位置 28状态值 首先要知道选用的状态值有哪些 xff0c 28状态值
  • 【PX4 EKF simulink仿真程序解析】(一)初始化

    PX4 EKF simulink仿真程序解析 xff08 一 xff09 初始化 整体框架如下 xff1a 进入InertialNavFliter xff0c 整体框架如下 xff1a 初始化过程包括协方差初始化 状态向量初始化 其中包括测
  • C++——三种继承方式与三种访问权限的相互组合

    三种访问权限 public 可以被任意实体访问 protected 只允许子类及本类的成员函数访问 private 只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 private 继承 组合结果 基类中 继
  • 小米路由器部分机型刷原生Openwrt系统

    小米路由器的部分机型在官网没有开发版的固件 xff0c 不支持直接开启ssh xff0c 可以通过OpenWRTInvasion工具解决 本文以小米路由器4为例 xff1a 在openwrt官网的设备列表中找到对应型号 xff0c 按照页面
  • qt的安装与卸载

    通常情况下 xff0c 有两种安装方法 xff1a 1 直接在命令行安装 sudo apt span class hljs keyword get span install qt5 span class hljs keyword defau
  • 固件提取

    前言使用工具识别芯片一 摘取芯片二 制作U盘编程器三 RT809H编程器读取eMMC芯片数据四 总结 前言 无处不在的物联网设备 xff0c 也可能成为无所不在的安全隐患 xff0c 物联网安全问题一直是困扰物联网快速发展的一大难题 作为安