用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/killvxk/cybersecurity-skills-zh --skill recovering-deleted-files-with-photorec命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | recovering-deleted-files-with-photorec |
| description | 使用 PhotoRec 基于文件签名的数据雕刻(File Carving)引擎,从磁盘镜像和存储介质中恢复已删除文件,无论文件系统是否损坏。 |
| domain | cybersecurity |
| subdomain | digital-forensics |
| tags | ["forensics","file-recovery","photorec","file-carving","data-recovery","evidence-recovery"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
# 在 Debian/Ubuntu 上安装 TestDisk(包含 PhotoRec)
sudo apt-get install testdisk
# 在 RHEL/CentOS 上安装
sudo yum install testdisk
# 在 macOS 上安装
brew install testdisk
# 验证安装
photorec --version
# 创建输出目录结构
mkdir -p /cases/case-2024-001/recovered/{all,documents,images,databases}
# 验证取证镜像
file /cases/case-2024-001/images/evidence.dd
ls -lh /cases/case-2024-001/images/evidence.dd
# 对取证镜像启动 PhotoRec
photorec /cases/case-2024-001/images/evidence.dd
# 交互菜单操作步骤:
# 1. 选择磁盘镜像:evidence.dd
# 2. 选择分区表类型:[Intel] 表示 MBR,[EFI GPT] 表示 GPT
# 3. 选择要扫描的分区(或选"No partition"扫描整个磁盘)
# 4. 选择文件系统类型:[ext2/ext3/ext4] 或 [Other] 表示 NTFS/FAT
# 5. 选择扫描范围:[Free](仅未分配空间)或 [Whole](整个分区)
# 6. 选择输出目录:/cases/case-2024-001/recovered/all/
# 7. 按 C 确认并开始恢复
# 直接扫描设备(使用写保护器时)
sudo photorec /dev/sdb
# 非交互模式,指定特定文件类型
photorec /d /cases/case-2024-001/recovered/documents/ \
/cmd /cases/case-2024-001/images/evidence.dd \
partition_table,options,mode,fileopt,search
# 仅恢复特定文件类型
photorec /d /cases/case-2024-001/recovered/documents/ \
/cmd /cases/case-2024-001/images/evidence.dd \
options,keep_corrupted_file,enable \
fileopt,everything,disable \
fileopt,doc,enable \
fileopt,docx,enable \
fileopt,pdf,enable \
fileopt,xlsx,enable \
search
# 仅恢复图像文件
photorec /d /cases/case-2024-001/recovered/images/ \
/cmd /cases/case-2024-001/images/evidence.dd \
fileopt,everything,disable \
fileopt,jpg,enable \
fileopt,png,enable \
fileopt,gif,enable \
fileopt,bmp,enable \
fileopt,tif,enable \
search
# 恢复数据库文件
photorec /d /cases/case-2024-001/recovered/databases/ \
/cmd /cases/case-2024-001/images/evidence.dd \
fileopt,everything,disable \
fileopt,sqlite,enable \
fileopt,dbf,enable \
search
# PhotoRec 将文件输出到 recup_dir.1、recup_dir.2 等目录
ls /cases/case-2024-001/recovered/all/
# 按类型统计恢复文件数量
find /cases/case-2024-001/recovered/all/ -type f | \
sed 's/.*\.//' | sort | uniq -c | sort -rn > /cases/case-2024-001/recovered/file_type_summary.txt
# 按扩展名将恢复文件整理到各目录
cd /cases/case-2024-001/recovered/all/
for ext in jpg png pdf docx xlsx pptx zip sqlite; do
mkdir -p /cases/case-2024-001/recovered/sorted/$ext
find . -name "*.$ext" -exec cp {} /cases/case-2024-001/recovered/sorted/$ext/ \;
done
# 为所有恢复文件生成 SHA-256 哈希值
find /cases/case-2024-001/recovered/all/ -type f -exec sha256sum {} \; \
> /cases/case-2024-001/recovered/recovered_hashes.txt
# 生成带元数据的文件列表
find /cases/case-2024-001/recovered/all/ -type f \
-printf "%f\t%s\t%T+\t%p\n" | sort > /cases/case-2024-001/recovered/file_listing.txt
# 使用文件签名验证文件完整性
find /cases/case-2024-001/recovered/all/ -type f -exec file {} \; \
> /cases/case-2024-001/recovered/file_signatures.txt
# 查找扩展名与签名不匹配的文件
while IFS= read -r line; do
filepath=$(echo "$line" | cut -d: -f1)
filetype=$(echo "$line" | cut -d: -f2-)
ext="${filepath##*.}"
if [[ "$ext" == "jpg" ]] && ! echo "$filetype" | grep -qi "JPEG"; then
echo "MISMATCH: $filepath -> $filetype"
fi
done < /cases/case-2024-001/recovered/file_signatures.txt > /cases/case-2024-001/recovered/mismatches.txt
# 使用 NSRL 哈希集比对过滤已知良性文件
hashdeep -r -c sha256 /cases/case-2024-001/recovered/all/ | \
grep -vFf /opt/nsrl/nsrl_sha256.txt > /cases/case-2024-001/recovered/unknown_files.txt
# 删除零字节和损坏的文件
find /cases/case-2024-001/recovered/all/ -type f -empty -delete
find /cases/case-2024-001/recovered/all/ -name "*.jpg" -exec jpeginfo -c {} \; 2>&1 | \
grep "ERROR" > /cases/case-2024-001/recovered/corrupted_images.txt
| 概念 | 描述 |
|---|---|
| 文件雕刻(File carving) | 使用文件头/尾签名从原始数据中恢复文件 |
| 文件签名 | 文件开头的魔术字节,用于标识文件类型(例如 JPEG 为 FF D8 FF) |
| 未分配空间(Unallocated space) | 未分配给任何活动文件的磁盘扇区;可能包含已删除数据 |
| 碎片文件(Fragmented files) | 存储在非连续扇区的文件;更难完整雕刻 |
| 簇/块大小(Cluster/Block size) | 文件系统上的最小分配单元;影响雕刻粒度 |
| 文件尾(File footer) | 标记文件结束的字节序列(并非所有格式都有文件尾) |
| 数据残留(Data remanence) | 删除后残留的数据,直到扇区被覆写才消失 |
| 误报(False positives) | 匹配签名但包含损坏或不完整数据的雕刻制品 |
| 工具 | 用途 |
|---|---|
| PhotoRec | 支持 300+ 种文件格式的开源文件雕刻工具 |
| TestDisk | 用于分区恢复和修复的配套工具 |
| Foremost | 最初由美国空军 OSI 开发的替代文件雕刻工具 |
| Scalpel | 基于 Foremost 的高性能文件雕刻工具 |
| hashdeep | 递归哈希计算和审计工具 |
| jpeginfo | JPEG 文件完整性验证 |
| file | 通过魔术字节识别文件类型的 Unix 工具 |
| exiftool | 从恢复的图像和文档文件中提取元数据 |
场景 1:从嫌疑人 USB 驱动器恢复已删除证据 使用 dcfldd 对 USB 驱动器进行镜像,运行 PhotoRec 针对文档和图像格式进行恢复,按文件类型整理,对所有恢复文件计算哈希值,与已知恶意哈希集比对,从图像中提取 GPS 和时间戳元数据信息。
场景 2:格式化硬盘恢复 在整个已格式化分区上以"Whole"模式运行 PhotoRec,恢复所有文件类型,预期因文件碎片化导致较高误报率,使用签名检查验证恢复文件,为证据链建立编目和哈希记录。
场景 3:监控摄像头存储卡 从存储卡镜像恢复已删除视频文件(AVI、MP4、MOV),使用定向文件类型选择加快恢复速度,验证视频文件可播放,提取帧时间戳,在案件笔记中记录恢复情况。
场景 4:证据驱动器上的文件系统损坏 当文件系统元数据被破坏时,PhotoRec 完全绕过文件系统直接从原始扇区雕刻,尽可能多地恢复数据,接受文件名和目录结构将丢失的现实,在审查过程中根据内容重命名文件。
PhotoRec 恢复摘要:
源镜像: evidence.dd(500 GB)
分区: NTFS(分区 2)
扫描模式: 仅空闲空间
已恢复文件: 4,523 个
文档: 234 个(doc:45,docx:89,pdf:67,xlsx:33)
图像: 2,145 个(jpg:1,890,png:198,gif:57)
视频: 34 个(mp4:22,avi:12)
压缩包: 67 个(zip:45,rar:22)
数据库: 12 个(sqlite:8,dbf:4)
其他: 2,031 个
已恢复数据: 12.4 GB
损坏文件: 312 个(已标记待审查)
输出目录: /cases/case-2024-001/recovered/all/
哈希清单: /cases/case-2024-001/recovered/recovered_hashes.txt