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

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...