【取证学习】Linux系统的证据收集和分析 解决dd备份磁盘爆掉

目录

一、实验目的

二、实验内容

三.实验仪器及器材

四、实验步骤


一、实验目的

掌握 Linux 系统下使用 dd 进行磁盘镜像备份与恢复的核心技术

熟悉取证分析中文件删除后的数据恢复流程

理解 ext2 文件系统中 inode 与数据块的关联机制。

二、实验内容

磁盘镜像构建与备份

dd 创建 100MB 虚拟磁盘镜像,格式化为 ext2 文件系统,写入测试文件 hello.txt 并记录其 inode 号。

通过 dd 整盘备份并实时压缩,验证压缩率;解压后恢复镜像。

取证场景模拟

删除测试文件 hello.txt ,制造"已删除文件"取证场景。

数据恢复验证

使用 debugfs 分析镜像,定位已删除文件的 inode (如 12 号记录),导出数据块(如 block 265 ),成功恢复 hello.txt

. 实验仪器及器材

VMware Ubuntu 20.04

四、实验步骤

首先要明确压缩、解压文件需要空间,我的虚拟机数据是放在D盘,我首先查看D盘还剩多少空间,还剩一百多个G

接着打开ubuntu 的终端,查看磁盘整体使用情况

bash 复制代码
 df -h
  • 根分区 / 只用了 5%,还有 196G 可用;

  • /home 几乎为空(113M / 265G);

  • 只有 /boot 用了 83%,但 44M 剩余也足够。

查看磁盘

bash 复制代码
lsblk
  • 只有一块物理盘 /dev/sda 500 G

  • 分区情况

    • /dev/sda1 220.6 G → 系统根分区 /

    • /dev/sda2 286 M → /boot

    • /dev/sda3 9 G → 交换分区

    • /dev/sda4 270.1 G → /home(几乎空,仅 113 M 已用)

备份 /dev/sda4/home),但因为实际物理机我只剩一百多个G,所以我根本到时候压缩这个盘之后解压没有那么多空间可以放。所以进行以下方案:
创建工作目录

mkdir -p ~/dd-lab && cd ~/dd-lab

造 100 M 空盘
dd if=/dev/zero of=disk-100M.img bs=1M count=100

2. 格式化成「最简 ext2」并指定 1 KiB 块大小(方便小 block 号)
bash 复制代码
sudo mkfs.ext2 -b 1024 -O ^extent,^dir_index,^sparse_super,^resize_inode disk-100M.img
只写一次文件 → 立即只读卸载
bash 复制代码
sudo mount -o loop disk-100M.img /mnt
echo "Hello DD+GZIP+DebugFS" | sudo tee /mnt/hello.txt
sudo umount /mnt           # 关键:卸载后内核不会再动数据
用 debugfs 内部删除(不触内核回收)
bash 复制代码
sudo debugfs -w disk-100M.img
debugfs:  rm /hello.txt
debugfs:  quit
立刻 dd + gzip 备份(不再挂载!)
bash 复制代码
dd if=disk-100M.img bs=1M status=progress | gzip > disk.gz
解压成恢复镜像
bash 复制代码
gunzip -c disk.gz > disk-restored.img
找回 inode & block 号
bash 复制代码
sudo debugfs disk-restored.img
debugfs:  lsdel

我这里是12

按 q退出,继续在debugfs界面下输入:注意有空格

bash 复制代码
debugfs:  stat <12>

记下 BLOCKS

我这里是265,记得替换成你们的

输入q退出debugfs界面,回到终端

导出真实数据(开始恢复文件)
bash 复制代码
sudo dd if=disk-restored.img of=recovered.txt bs=1024 count=1 skip=XXX

skip后面的xxx为实际的上一步的BLOCKS,比如我的就是265

查看回复的文件内容

bash 复制代码
head -c 22 recovered.txt

确实没错

清理(可选)
bash 复制代码
cd ~ && rm -rf ~/dd-lab

完整实验截图:

恭喜完成!

相关推荐
高梦轩4 小时前
MySQL高可用
android·运维·数据库
hsjcjh7 小时前
Nodemailer使用教程:在Node.js中发送电子邮件
linux·运维·node.js
摇滚侠8 小时前
如何选择 nodejs 版本,nodejs 版本号详解
学习
醇氧8 小时前
【学习】IP地址:数字世界的“门牌号”怎么读?
网络协议·学习·tcp/ip
没有梦想的咸鱼185-1037-16638 小时前
北斗高精度数据解算:破解城市峡谷/长基线/无网区难题,从毫米级定位到自动化交付——(GAMIT/GLOBK底层核心解算技术方法)
运维·arcgis·数据分析·自动化
不怕犯错,就怕不做8 小时前
linux 如何查看自己的帐号密码及samba的帐号和密码
linux·运维·服务器
实在智能RPA9 小时前
Agent 在物流行业能实现哪些自动化?——深度拆解 AI Agent 驱动的智慧物流新范式
运维·人工智能·ai·自动化
地下核武9 小时前
Ubuntu 24.04 在线安装 Qt 6.10.2 后 Qt Creator 无法启动问题记录与解决
linux·qt·ubuntu
talen_hx2969 小时前
《零基础入门Spark》学习笔记 Day 11
笔记·学习·spark