【产品那些事】固件安全-关于OTA升级包分析

news2024/11/13 14:37:24

文章目录

  • 前言
    • 什么是OTA?
    • 升级包(固件)的类型和架构
  • 案例
    • tp-link路由器升级包
      • 怎么解包分析?
        • binwalk安装及使用
        • ubi_reader安装及使用
        • unsquashfs安装及使用
    • 某车企OTA升级包
      • 通用Android OTA解包
        • 相关分区
      • 第二层解包

前言

什么是OTA?

OTA(Over-the-Air)是一种通过无线通信网络(如Wi-Fi、蜂窝网络)远程下载和安装设备固件或软件更新的方式。这种方式广泛应用于智能手机、物联网设备、汽车电子等领域。
小米发烧友估计对此并不陌生,线刷、卡刷、各种系统的刷机包,最近的澎湃OS不知道各位米友试着刷了没有。当然还有路由器、汽车,甚至台灯等各种智能家居,都是通过OTA的方式进行升级更新。
这里笔者通过两个固件解压包分析案例,来学习固件安全相关内容。

升级包(固件)的类型和架构

二进制映像(.bin):最常见的固件格式,包含了设备运行所需的所有代码和数据,通常用于路由器、摄像头、物联网设备等。
压缩包(.zip, .tar, .gz, .xz):将多个文件打包并压缩成一个文件。
映像文件(.img):包含整个文件系统映像,通常用于嵌入式设备和操作系统镜像(Linux、Android)。
Intel HEX文件(.hex):一种文本格式的固件文件,常用于微控制器和嵌入式系统。
Motorola S-record文件(.srec, .s19):类似于Intel HEX格式的文本固件文件。
ELF文件(.elf):一种可执行和可链接格式,包含可执行代码和数据段,常用于嵌入式系统开发。
如下所示,服务商会提供多种格式固件,方便客户进行分析
在这里插入图片描述

案例

tp-link路由器升级包

固件下载链接
解压后目录结构如下,当前我们关注的还是bin文件
在这里插入图片描述

怎么解包分析?

这里以.bin格式的固件为例,因为没有明显的文件边界和结构,所以分析起来难度也相对要高些,这里我们使用binwalk来提取和解析内容

binwalk安装及使用
sudo apt-get install binwalk 	// ubuntu
brew install binwalk			// macos
# 识别包含的文件和数据结构
binwalk firmware.bin

在这里插入图片描述

# 递归提取内容
binwalk -Me firmware.bin

在这里插入图片描述
将二进制里面的ubi格式文件提取出来之后

什么是ubi格式文件?
UBI(Unsorted Block Image)是一种用于 NAND 闪存的文件系统,它提供了对闪存的磨损均衡和坏块管理。UBI 文件系统常见于嵌入式设备中,尤其是在需

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1935796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go的Mutex实现原理及演进

下面的这个是对于昨天晚上读的几篇关于go中锁的文章知识点的总结 文章目录 1. 引言1.1 并发编程的挑战1.2 Mutex 的角色1.3 Mutex 设计的演进1.4 技术追求的美妙 引言部分详细解释引言部分注意点引言部分流程图 2. Mutex 架构演进2.1 初版 Mutex 设计2.2 性能优化 - 给新人机会…

【ffmpeg】一篇文章搞定YUV

文章目录 前言YUV是什么?YUV的用途YUV采样格式采样格式是什么YUV采样格式有哪些YUV采样格式的区别 YUV与RGBRGB 颜色空间YUV 颜色空间RGB 与 YUV 的比较RGB 转 YUV 公式YUV 转 RGB 公式注意事项 YVU数据计算通用公式4:4:4 采样格式4:2:2 采样格式4:2:0 采样格式实例…

win10删除鼠标右键选项

鼠标右键菜单时,发现里面的选项特别多,找一下属性,半天找不到。删除一些不常用的选项,让右键菜单变得干净整洁。 1、按下键盘上的“winR”组合按键,调出“运行”对话框,输入“regedit”命令,点击…

达梦数据库的系统视图v$rapply_log_task

达梦数据库的系统视图v$rapply_log_task 达梦数据库的V$RAPPLY_LOG_TASK视图是一个动态性能视图,主要用于在备库上查询。该视图需要在备库上查询(DMDSC 备库需要在控制节点(重演节点)上查询),用于查询备库…

专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!

软件介绍 Adobe Acrobat Pro DC 2024绿色便携版是一款功能强大的PDF编辑和转换软件,由Adobe公司推出。它是Acrobat XI系列的后续产品,提供了全新的用户界面和增强功能。用户可以借助这款软件将纸质文件转换为可编辑的电子文件,便于传输、签署…

RocketMQ单结点安装/Dashboard安装

目录 1.安装NameServer 2.安装Broker 3.使用自带工具测试数据发送 4.使用DashBoard进行查看 5.关闭相关设备 前置条件:两台虚拟机CentOS Linux release 7.5.1804(ps:当然也可以都部署在一台机器上) RocketMq属于天生集群。需要同时启动nameServer和Broker进行…

STP(802.1D)

802.1D:也成为生成树协议(Spanning Tree Protocol,STP),是一种工作在数据链路层的通信协议 作用:防止交换机冗余链路产生的环路,确保以太网中无环路的逻辑拓扑结构,从而避免广播风暴…

MacBook电脑远程连接Linux系统的服务器方法

一、问题简介 Windows 操作系统的电脑可使用Xshell等功能强大的远程连接软件。通过连接软件,用户可以在一台电脑上访问并控制另一台远程计算机。这对于远程技术支持、远程办公等场景非常有用。但是MacBook电脑的macOS无法使用Xshell。 在Mac上远程连接到Windows服…

昇思25天学习打卡营第18天 | 基于MindSpore的GPT2文本摘要

昇思25天学习打卡营第18天 | 基于MindSpore的GPT2文本摘要 文章目录 昇思25天学习打卡营第18天 | 基于MindSpore的GPT2文本摘要数据集创建数据集数据预处理Tokenizer 模型构建构建GPT2ForSummarization模型动态学习率 模型训练模型推理总结打卡 数据集 实验使用nlpcc2017摘要数…

详解MLOps,从Jupyter开发到生产部署

大家好,Jupyter notebook 是机器学习的便捷工具,但在应用部署方面存在局限。为了提升其可扩展性和稳定性,需结合DevOps和MLOps技术。通过自动化的持续集成和持续交付流程,可将AI应用高效部署至HuggingFace平台。 本文将介绍MLOps…

网安播报|Python 的 GitHub 核心资源库 token 意外曝光,风险巨大

1、Python 的 GitHub 核心资源库 token 意外曝光,风险巨大 网络安全专家发现了意外泄露的 GitHub token,能以最高权限访问 Python 语言、Python 软件包索引(PyPI)和 Python 软件基金会(PSF)存储库。如果该 …

如何确保微型导轨电能表的精准计量?

微型导轨电能表是一种小型化的电表,通常用于精密仪器和设备中。采用模数化设计,精确度高,具有体积小,易安装,易组装等优点。易于实现终端照明电能计量,便于照明系统加装电度表的改造。 对于用户来说&#x…

2024北京国际智能工厂及自动化展览会亮点前瞻

随着“工业创新,智造未来”的浪潮席卷而来,2024年度北京国际智能工厂及自动化与工业装配展览会定于8月1日至3日在中国国际展览中心(顺义新馆)盛大开幕。本次展会汇聚了智能制造与自动化技术的最新成果,通过三展联动的创…

ozon计算器5.0版本,ozon计算器5.0定价产品价格

在跨境电商的浩瀚星海中,俄罗斯Ozon电商平台以其庞大的市场规模和快速增长的势头,成为了众多卖家竞相布局的蓝海。然而,在这片充满机遇的土地上,如何精准定价,确保利润最大化,同时又能吸引消费者&#xff0…

【Git分支管理】分支策略 | Bug分支

目录 1.分支策略 2.特殊场景-Bug分支 2.1 master出现bug ​2.2 dev2正在开发☞stash区域 2.3 dev2正在开发master出现bug 2.3.1 fix_bug修复bug和master合并 2.3.2 dev2分支开发完和master合并 合并冲突:merge☞手动解决☞提交没有合并冲突:mer…

基于Go语言快速开发抖音小程序 提高性能、效率和降低成本开发框架 让开发变得极简单 开箱即用省时又省钱

前言 用Go语言Arco Design集成后台框架,我们把日常开发常用的基础开发成基础包,等到有项目时安装、下载基础代码就可以马上开发业务,您可以快速搭建好抖音小程序应用开发,为大家搭建抖音后台管理、抖音原生开发模板、小程序登录、…

大模型-Bert+PET实战

PET(Pattern-Exploiting Training) 背景:预训练语言模型(比如BERT)知识全面,但是没有针对下游任务做针对训练,所以效果一般,所以需要根据任务做微调。 核心思想:根据先…

langchain 简介

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 LangChain 是一个用于语言模型和应用程序开发的框架,它提供了一系列工具和组件, 帮助开发者更轻松地构建基于大型…

【JVM基础02】——组成-程序计数器解读

目录 1- 引言:程序计数器1-1 程序计数器是什么?为什么用程序计数器?(What)(Why) 2- 核心:程序计数器的原理(How)2-1 使用 javap 查看程序计数器的作用2-2 多线程下程序计数器原理举例 3- 小结:什…

Linux HOOK机制与Netfilter HOOK

一. 什么是HOOK(钩子) 在计算机中,基本所有的软件程序都可以通过hook方式进行行为拦截,hook方式就是改变原始的执行流。 二. Linux常见的HOOK方式 1、修改函数指针。 2、用户态动态库拦截。 ①利用环境变量LD_PRELOAD和预装载机…