智能设备安全-固件逆向分析

news2025/7/13 18:21:07

固件逆向分析实验报告-20241022

使用固件常用逆向分析工具,对提供的固件进行文件系统提取,并记录逆向分析实验过程,提交实验报告(报告要求图文并茂,对涉及到的关键步骤附截图说明)。具体任务如下:

任务一 固件文件系统手动提取:熟悉file、strings、hexdump、dd、unsquashfs等命令或工具,掌握手动提取固件文件系统方法,对提供的miwifi_r1350_firmware_c56d8_1.0.29.bin文件进行逆向,获取文件系统squashfs-root;

任务二 固件文件系统自动提取:熟悉binwalk逆向工具的使用方法,对提供的miwifi_r1350_firmware_c56d8_1.0.29.bin文件实现文件系统的自动提取,获取文件系统squashfs-root。

注:如国科大在线无法提交报告,可在简答题框中输入简要回答,正式报告发送至老师邮箱

报告命名方式:APK逆向分析实验报告-姓名-学号-提交时间

文章目录

  • 固件逆向分析实验报告-20241022
    • 任务一 固件文件系统手动提取
      • 创建并进入文件夹
      • 上传实验文件
      • 使用file命令查看文件类型
      • 使用strings命令
      • 加入参数-n 10
      • 使用hexdump命令查看
        • 加入-C参数显示ASCII字符
        • 加入查询条件: | grep "hsqs"
      • 使用dd命令提取
      • 使用unsquashfs对其进行提取
    • 任务二 固件文件系统自动提取
      • 使用binwalk -e

任务一 固件文件系统手动提取

创建并进入文件夹

从官网下载Kail,输入默认的账号密码Kali进入虚拟机。

在桌面打开终端,使用mkdir创建xiaomi文件夹并进入。
在这里插入图片描述

上传实验文件

将需要进行提取的文件上传至指定文件夹
在这里插入图片描述

使用file命令查看文件类型

从结果可以看出,目前只知道它是数据文件
在这里插入图片描述

使用strings命令

可以看到当没有添加-n 10时打印了很多结果

在这里插入图片描述

加入参数-n 10

通过加入-n 10找到并输出了所有NUL终止符序列

使用hexdump命令查看

在终端中使用hexdump命令

hexdump miwifi_r1350_firmware_c56d8_1.0.29.bin

可以看到输出了很多内容

加入-C参数显示ASCII字符
hexdump miwifi_r1350_firmware_c56d8_1.0.29.bin -C 

可以看到在右侧多了ASCII字符的显示

加入查询条件: | grep “hsqs”
hexdump miwifi_r1350_firmware_c56d8_1.0.29.bin -C | grep "hsqs"

可以看到这样的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中,HSQS(Hierarchical Storage Queue System)指的是一个专为高性能计算和大数据存储设计的文件系统。它通常用于需要高吞吐量和低延迟的场景,例如科学计算、数据分析和机器学习。

这里通过添加查询条件查看文件系统的头部特征,判断出使用的时什么文件系统,得到文件系统的起始地址:0x12029C

使用dd命令提取

dd if=miwifi_r1350_firmware_c56d8_1.0.29.bin bs=1 skip=1180316 of=filesystem_mi.squashfs

这条命令是使用 dd 工具从一个二进制文件中提取特定部分,其中:

  • dd: 这是一个用于低级别复制和转换文件的命令行工具。
  • if=miwifi_r1350_firmware_c56d8_1.0.29.bin: 设定输入文件(input file),这里是一个名为 miwifi_r1350_firmware_c56d8_1.0.29.bin 的固件文件。
  • bs=1: 设定块大小(block size)为 1 字节。这意味着 dd 将以字节为单位进行读写。
  • skip=1180316: 设定在读取输入文件之前跳过的字节数。在这个例子中,dd` 将跳过前 1180316字节。
  • of=filesystem_mi.squashfs: 设定输出文件(output file),提取的内容将保存到 filesystem_mi.squashfs 文件中。

这条命令的作用是从 miwifi_r1350_firmware_c56d8_1.0.29.bin 文件中跳过前 1180316字节,然后将后续的内容提取并保存到 filesystem_mi.squashfs 文件中。通常,这种操作用于从固件中提取特定的文件系统或数据。

其中1180316这个值可以通过计算器获得。

在这里插入图片描述

使用file查看得知文件系统的详细信息:

在这里插入图片描述

使用unsquashfs对其进行提取

在这里插入图片描述

得到文件系统squashfs-root:

在这里插入图片描述

任务二 固件文件系统自动提取

使用binwalk -e

在这里插入图片描述

可以看到和手动提取一样:

在这里插入图片描述

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

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

相关文章

图形编辑器基于Paper.js教程17:图像转gcode前的处理,灰度,黑白,抖动

好久没有正经写博客了,前一段时间一直在备考中级项目管理,再加上项目开发只有自己一个人,每天忙的飞起。有闲暇时间也不想写,其中一部分原因也是因为很多简单问题,AI就能回答的很好。而对复杂的问题,也不是…

AI大模型学习笔记|人工智能的发展历程、智能体的发展、机器学习与深度学习的基本理论

学习链接:冒死上传!价值2W的大模型入门到就业教程分享给大家!轻松打造专属大模型助手,—多模态、Agent、LangChain、ViT、NLP_哔哩哔哩_bilibili 百度网盘自己整理的笔记: 通过网盘分享的文件:1-人工智能的…

qt 设置系统缩放为150%,导致的文字和界面的问题

1 当我们设置好布局后,在100%的设置里面都是正常的,但是当我们修改缩放为150%后,字体图标,界面大小就出现问题了,这就需要我们设置一些参数。 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QCoreAppl…

linux-15 关于shell(十四)printenv,hash,环境变量

此前没有用过linux,可能有些觉得很奇怪,就觉得我们在这敲来敲去命令干什么?为什么不使用双击这种方式来操作?大家知道,在Windows里面,其实我们双击也无非就是告诉我们shell需要将这个命令发送在内核上启动的…

虚拟机如何使用物理机的公私钥

一、生成公私钥(如果没有的话) 使用如下指令生成 生成RSA公私钥 ssh-keygen 生成EdDSA公私钥 ssh-keygen -t ed25519 Windows目录 linux会直接生成在当前目录下。 二、导出 一般都是从windows系统导入到linux系统。 可以直接将公私钥文件复制到虚拟机…

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情况下我们在开发系统的时候都是使用一个数据源,但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大,便会一个项目对应多个数据源…

前端报错npm ERR cb() never called问题

环境使用node版本v14.21.3&#xff0c;npm版本6.14.18 1.问题描述 1.1使用npm install后报错 npm ERR! cb() never called!npm ERR! This is an error with npm itself. Please report this error at: npm ERR! ? ? <https://npm.community>npm ERR! A complete log…

C++ STL Cookbook STL算法

目录 std::copy 将容器元素合并为一个字符串 使用 std::sort 对容器进行排序 使用 std::transform 修改容器 在容器中查找项目 使用 std::sample 采样数据集 (写在前面&#xff1a;笔者前段时间备战考试和比赛了&#xff0c;现在回来继续更新) STL实际上提供了非常非常丰…

SpringBoot【十】mybatis之xml映射文件>、<=等特殊符号写法!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 在利用mybatis进行开发的时候&#xff0c;编写sql时可能少不了>、<等比较符号&#xff0c;但是在mapper映射文件中直接使用是不行的&#xff0c;会报错&#xff0…

单元测试SpringBoot

添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定

每天40分玩转Django:简介和环境搭建

Django简介和环境搭建 一、课程概述 学习项目具体内容预计用时Django概念Django框架介绍、MVC/MTV模式、Django特点60分钟环境搭建Python安装、pip配置、Django安装、IDE选择45分钟创建项目项目结构、基本配置、运行测试75分钟实战练习创建个人博客项目框架60分钟 二、Djang…

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法&#xff0c;包括字符串、选项、多行文本、布尔值和git分支参数的配置&#xff0c;以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…

Windows安装WSL子系统及docker,以及WSL和docker配置、使用及问题解决

在Windows操作系统中,Ubuntu子系统(也称为Windows Subsystem for Linux, WSL)为开发者提供了一个在Windows环境下运行Linux环境的平台。然而,有时用户在按照Ubuntu子系统或者使用WSL时,可能会遇到各种问题,下面总结一下解决方式。 想要在Windows上安装Docker(实际上是基…

Linux中的线程

目录 线程的概念 进程与线程的关系 线程创建 线程终止 线程等待 线程分离 原生线程库 线程局部存储 自己实现线程封装 线程的优缺点 多线程共享与独占资源 线程互斥 互斥锁 自己实现锁的封装 加锁实现互斥的原理 死锁 线程同步 线程的概念 回顾进程相关概念 …

shell编程(完结)

shell编程&#xff08;完结&#xff09; 声明&#xff01; 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其…

ctfshow-web 151-170-文件上传

151. 我们首先想到就是上传一句话木马。但是看源代码限制了png。 &#xff08;1&#xff09;改前端代码。 这里是前端限制了上传文件类型&#xff0c;那我们就改一下就好了嘛,改成php。 这里直接修改不行&#xff0c;给大家推荐一篇简短文章&#xff0c;大家就会了&#xff08…

Docker的初识

目录 1. 容器技术发展史1.1 Jail 时代1.2 云时代1.3 云原生时代1.3.1 Google & Docker 竞争1.3.2 k8s 成为云原生事实标准 2. 虚拟化和容器化的概念2.1 什么是虚拟化、容器化2.2 为什么要虚拟化、容器化&#xff1f;2.3 虚拟化实现方式2.3.1 应用程序执行环境分层2.3.2 虚拟…

Jenkins流水线初体验(六)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六) 一、Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤…

链式设计模式——装饰模式和职责链模式

一、装饰模式 1、概述 动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活。 ConcreteComponent &#xff1a;是定义了一个具体的对象&#xff0c;可以给这个对象添加一些职责&#xff1b;Decorator &#xff1a;装饰抽象…

JavaEE多线程案例之阻塞队列

上文我们了解了多线程案例中的单例模式&#xff0c;此文我们来探讨多线程案例之阻塞队列吧 1. 阻塞队列是什么&#xff1f; 阻塞队列是⼀种特殊的队列.也遵守"先进先出"的原则. 阻塞队列是⼀种线程安全的数据结构,并且具有以下特性: 当队列满的时候,继续⼊队列就会…