当前位置: 首页 > 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 的节点。 打印:使用中序树遍…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...