当前位置: 首页 > news >正文

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

固件逆向分析实验报告-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

在这里插入图片描述

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

在这里插入图片描述

相关文章:

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

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

【小白包会的】使用supervisor 管理docker内多进程

使用supervisor 管理docker内多进程 一般情况下,一个docker是仅仅运行一个服务的 但是有的情况中,希望一个docker中运行多个进程,运行多个服务,也就是一个docker容器执行多个服务。 调研了一下,发现可以通过**super…...

使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法

使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法 一、问题现象:二、出现原因三、解决方法:1、升级Navicat版本:2、使用低版本的postgreSQL:3、修改Navicat的dll二进制文件:navicat版本15nav…...

IDEA 未启用lombok插件的Bug

项目中maven已引用了lombok依赖,之前运行没有问题的,但有时启动会提示: java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: com.sun.proxy.$Proxy8 Lombok support…...

认识GO--gRPC的metadata

参考: 写给go开发者的gRPC教程-metadata-CSDN博客https://blog.csdn.net/kevin_tech/article/details/129395177?ops_request_misc%257B%2522request%255Fid%2522%253A%25221f2f2e26f48c755c33344ccb171a49fc%2522%252C%2522scm%2522%253A%252220140713.130102334…...

2024年安徽省职业院校技能大赛信息安全管理与评估

一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高职组 赛项归属:电子信息大类 二、竞赛目标 通过赛项检验参赛选手熟悉信息安全行业标准规范和信息 安全测试员新职…...

Perl 引用

Perl 引用 Perl,作为一种灵活而强大的编程语言,广泛用于系统管理、网络编程、GUI开发等领域。在Perl编程中,引用(References)是一个核心概念,它允许变量引用其他数据,从而创建复杂的数据结构&a…...

RT-Thread启动过程 :从汇编开始的启动流程

这个系列参考了《嵌入式实时操作系统RT-Thread设计与实现》,会详细介绍RT-Thread的启动流程,即是如何从零开始在开发板上运行起一个RTOS内核的。本文将会以 ch32v307VCT6 开发板为例展开进行详细介绍。主要包括:startup.S、初始化与系统相关的…...

Scala—“==“和“equals“用法(附与Java对比)

Scala 字符串比较—""和"equals"用法 Scala 的 在 Scala 中, 是一个方法调用,实际上等价于调用 equals 方法。不仅适用于字符串,还可以用于任何类型,并且自动处理 null。 Demo: Java 的 在 J…...

$route和$router的区别

在 Vue.js 中,$route 和 $router 都是 Vue Router 提供的对象,但它们有不同的用途和功能。 1. $router $router 是 Vue Router 实例的引用,它允许你通过 JavaScript 进行路由的控制和导航。你可以通过 $router 来执行路由的操作&#xff0c…...

[工具升级问题] 钉钉(linux版)升级带来的小麻烦

本文由Markdown语法编辑器编辑完成。 1. 背景: 今日钉钉又发布了新的升级版本。由于我工作时使用的是Ubuntu 20.04版本,收到的升级推送信息是,可以升级到最新的7.6.25-Release版本。根据钉钉官方给出的历次更新版说明,这个新的版本&#xf…...

Leetcode经典题13--接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入输出示例 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1…...

yarn修改缓存位置

查看缓存位置 以下三个命令分别为:bin是yarn存储命令的二进制文件,global存储全局node_modules ,cache存储用下下载缓存,查看本机目前的目录: 查看bin目录命令:yarn global bin 查看global目录命令&…...

OpenHarmony-3.HDF input子系统(5)

HDF input 子系统OpenHarmony-4.0-Release 1.Input 概述 输入设备是用户与计算机系统进行人机交互的主要装置之一,是用户与计算机或者其他设备通信的桥梁。常见的输入设备有键盘、鼠标、游戏杆、触摸屏等。本文档将介绍基于 HDF_Input 模型的触摸屏器件 IC 为 GT91…...

RabbitMQ 消息持久化/镜像队列/lazy对时延影响

测试背景: 不同条件下RabbitMQ不同队列类型的生产时延测试: 测试环境: 机型:rabbimtq.2u4g.cluster 背景流量:1000 TPS 测试条件: 消息大小 4k,消息条数为1000条,时延取值为平均…...

【深度学习】深刻理解Swin Transformer

Swin Transformer 是一种基于 Transformer 的视觉模型,由 Microsoft 研究团队提出,旨在解决传统 Transformer 模型在计算机视觉任务中的高计算复杂度问题。其全称是 Shifted Window Transformer,通过引入分层架构和滑动窗口机制,S…...

[2015~2024]SmartMediaKit音视频直播技术演进之路

技术背景 2015年,因应急指挥项目需求,我们实现了RTMP推送音视频采集推送(采集摄像头和麦克风数据)模块,在我们做好了RTMP推送模块后,苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器,于是第一…...

redis 使用Lettuce 当redis挂掉重启之后 网络是怎么重新连接

Lettuce是一个高性能的Java Redis客户端,支持同步、异步和反应式编程模式 Lettuce的核心功能包括: ‌高性能‌:通过使用Netty作为底层网络通信框架,实现了非阻塞IO,提高了性能。‌丰富的API‌:提供了丰富…...

【IntelliJ IDEA 集成工具】TalkX - AI编程助手

前言 在数字化时代,技术的迅猛发展给软件开发者带来了更多的挑战和机遇。为了提高技术开发群体在繁多项目中的编码效率和质量,他们需要一个强大而专业的工具来辅助开发过程,而正是为了满足这一需求,TalkX 应运而生。 一、概述 1…...

二叉搜索树Ⅲ【东北大学oj数据结构8-3】C++

二叉搜索树 III B:在二叉搜索树II中加入delete指令,创建程序对二叉搜索树T执行如下指令。 插入 k:将key k 插入到 T 中。 find k:报告T中是否存在key k。 delete k:删除key为 k 的节点。 打印:使用中序树遍…...

2026年三维扫描仪选购指南:专业厂家如何选,这几点是关键

在工业4.0与智能制造浪潮的推动下,三维扫描技术已成为产品设计、逆向工程、质量检测等领域的核心工具。面对市场上琳琅满目的品牌与型号,如何选择一台真正适合自身需求、性能可靠的三维扫描仪,成为众多工程师、设计师和企业决策者面临的难题。…...

深入解读XDMA驱动:从/dev节点看透RK3588与FPGA的PCIe数据流(H2C/C2H通道详解)

深入解读XDMA驱动:从/dev节点看透RK3588与FPGA的PCIe数据流(H2C/C2H通道详解) 当你在RK3588开发板上执行ls /dev/xdma0_*命令时,那些神秘的字符设备节点背后隐藏着一套精密的PCIe通信体系。作为连接ARM SoC与FPGA的高速数据通道&…...

InSpec插件生态系统:扩展框架功能的完整教程

InSpec插件生态系统:扩展框架功能的完整教程 【免费下载链接】inspec InSpec: Auditing and Testing Framework 项目地址: https://gitcode.com/gh_mirrors/in/inspec InSpec作为一款强大的合规性测试框架,其真正的威力在于其可扩展的插件生态系统…...

PDF智能解析新选择:GLM-OCR支持表格/公式识别,效果惊艳

PDF智能解析新选择:GLM-OCR支持表格/公式识别,效果惊艳 1. 为什么需要新一代OCR技术 在日常办公和学术研究中,PDF文档处理一直是个令人头疼的问题。传统OCR工具在面对复杂版式、嵌套表格或数学公式时,往往表现不佳。想象一下这样…...

深入torch.cuda.Event:解锁GPU代码性能瓶颈的精准计时器

1. 为什么你需要torch.cuda.Event? 在GPU编程的世界里,时间就是金钱。你可能遇到过这样的情况:明明优化了算法,但训练速度就是上不去;或者发现某个操作耗时异常,却找不到具体原因。这时候,传统的…...

终极指南:NanoVG渲染管线深度解析与抗锯齿技术实战

终极指南:NanoVG渲染管线深度解析与抗锯齿技术实战 【免费下载链接】nanovg Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations. 项目地址: https://gitcode.com/gh_mirrors/na/nanovg NanoVG是一款基于OpenGL的轻量级抗锯…...

矩阵分解(1)-- 从高斯消元到对称正定:LU、LDLT与Cholesky分解的算法演进与应用场景

1. 矩阵分解:为什么我们需要它? 想象一下你面前有一堆积木,乱七八糟地堆在一起。如果你想快速找到其中某一块积木,可能需要翻找很久。但如果有人帮你把这些积木按照颜色、形状分类摆放整齐,找起来就会容易得多。矩阵分…...

从LaMa到BrushNet:盘点图像修复(Inpainting)领域的关键模型与实战数据集

1. 图像修复技术的前世今生 第一次接触图像修复技术是在2015年,当时我正参与一个老照片修复项目。那些泛黄的老照片上布满了裂痕和污渍,传统Photoshop修复需要耗费数小时。直到发现深度学习可以自动完成这项任务,我才意识到这项技术将彻底改变…...

Unity渲染流水线中的NDC空间:从齐次裁剪到屏幕坐标的完整转换指南

Unity渲染流水线中的NDC空间:从齐次裁剪到屏幕坐标的完整转换指南 在Unity引擎的渲染流水线中,理解NDC(归一化设备坐标)空间的作用至关重要。这个看似抽象的概念,实际上决定了3D场景如何最终呈现在2D屏幕上。对于想要深…...

OpenCore Legacy Patcher实用指南:让老旧Mac焕发新生

OpenCore Legacy Patcher实用指南:让老旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果不断推进macOS系统更新,…...