mcpField
R
recovering-deleted-files-with-photorec

recovering-deleted-files-with-photorec

github.com/mukul975安全35.2k36 次安装8 周前更新
代码仓库

关于 recovering-deleted-files-with-photorec

一份面向数字取证场景的 PhotoRec 文件恢复技能,指导从磁盘镜像或存储设备中雕刻已删除文件。涵盖针对性恢复、整理和验证流程。

主要功能

  1. 01从原始扇区恢复文件
  2. 02按文件类型定向扫描
  3. 03整理并分类恢复文件
  4. 04检查文件签名与完整性

适用场景

  1. 01从取证镜像恢复已删除文档
  2. 02从格式化硬盘恢复文件
  3. 03从存储卡恢复监控视频
  4. 04文件系统损坏时提取数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill recovering-deleted-files-with-photorec

安装后在 Claude Code 中输入/recovering-deleted-files-with-photorec确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

使用 PhotoRec 恢复已删除文件

适用场景

  • 从取证磁盘镜像或存储设备中恢复已删除文件时
  • 文件系统已损坏、被格式化或被覆盖时
  • 调查过程中需要恢复文档、图像、视频或数据库时
  • 文件系统元数据不可用,但原始数据扇区仍完好时
  • 从存储卡、USB 驱动器和硬盘恢复文件时

前提条件

  • 已安装 PhotoRec(属于 TestDisk 套件的一部分)
  • 取证磁盘镜像或直接设备访问权限(只读)
  • 足够的输出存储空间(可能大于源设备)
  • 处理原始介质时需使用写阻断器
  • 访问设备需要 root/sudo 权限
  • 了解目标文件类型以便进行定向恢复

工作流

第 1 步:安装 PhotoRec 并准备环境
# Install TestDisk (includes PhotoRec) on Debian/Ubuntu
sudo apt-get install testdisk

# On RHEL/CentOS
sudo yum install testdisk

# On macOS
brew install testdisk

# Verify installation
photorec --version

# Create output directory structure
mkdir -p /cases/case-2024-001/recovered/{all,documents,images,databases}

# Verify the forensic image
file /cases/case-2024-001/images/evidence.dd
ls -lh /cases/case-2024-001/images/evidence.dd
第 2 步:以交互模式运行 PhotoRec
# Launch PhotoRec against a forensic image
photorec /cases/case-2024-001/images/evidence.dd

# Interactive menu steps:
# 1. Select the disk image: evidence.dd
# 2. Select partition table type: [Intel] for MBR, [EFI GPT] for GPT
# 3. Select partition to scan (or "No partition" for whole disk)
# 4. Select filesystem type: [ext2/ext3/ext4] or [Other] for NTFS/FAT
# 5. Choose scan scope: [Free] (unallocated only) or [Whole] (entire partition)
# 6. Select output directory: /cases/case-2024-001/recovered/all/
# 7. Press C to confirm and begin recovery

# For direct device scanning (with write-blocker)
sudo photorec /dev/sdb
第 3 步:使用命令行选项运行 PhotoRec 进行定向恢复
# Non-interactive mode with specific file types
photorec /d /cases/case-2024-001/recovered/documents/ \
   /cmd /cases/case-2024-001/images/evidence.dd \
   partition_table,options,mode,fileopt,search

# Recover only specific file types using photorec command mode
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

# Recover only image files
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

# Recover database files
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
第 4 步:整理并编目已恢复的文件
# PhotoRec outputs files into recup_dir.1, recup_dir.2, etc.
ls /cases/case-2024-001/recovered/all/

# Count recovered files by type
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

# Sort recovered files into directories by extension
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

# Generate SHA-256 hashes for all recovered files
find /cases/case-2024-001/recovered/all/ -type f -exec sha256sum {} \; \
   > /cases/case-2024-001/recovered/recovered_hashes.txt

# Generate file listing with metadata
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
第 5 步:验证并筛选已恢复的文件
# Verify file integrity using file signatures
find /cases/case-2024-001/recovered/all/ -type f -exec file {} \; \
   > /cases/case-2024-001/recovered/file_signatures.txt

# Find files with mismatched extension/signature
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

# Filter out known-good files using NSRL hash comparison
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

# Remove zero-byte and corrupted files
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

关键概念

概念描述
文件雕刻利用文件头/尾签名从原始数据中恢复文件
文件签名文件开头的魔数字节,用于标识其类型(例如 JPEG 的 FF D8 FF)
未分配空间未分配给任何活动文件的磁盘扇区;可能包含已删除数据
碎片化文件存储在非连续扇区中的文件;完整雕刻难度更大
簇/块大小文件系统上的最小分配单元;影响雕刻粒度
文件尾部标记文件结束的字节序列(并非所有格式都有尾部)
数据残留删除后残留在扇区中直到被覆盖的数据
误报与签名匹配但包含损坏或部分数据的雕刻产物

工具与系统

工具用途
PhotoRec开源文件雕刻工具,支持 300 多种文件格式
TestDisk用于分区恢复和修复的配套工具
Foremost最初由美国空军 OSI 开发的替代文件雕刻工具
Scalpel基于 Foremost 的高性能文件雕刻工具
hashdeep递归哈希计算与审计工具
jpeginfoJPEG 文件完整性验证
file通过魔数字节识别文件类型的 Unix 工具
exiftool从恢复的图像和文档文件中提取元数据

常见场景

场景 1:从嫌疑人 USB 驱动器恢复已删除证据 使用 dcfldd 对 USB 驱动器进行镜像,运行 PhotoRec 针对文档和图像格式进行恢复,按文件类型整理,对所有恢复文件进行哈希计算,与已知恶意哈希集进行比对,从图像中提取元数据以获取 GPS 和时间戳信息。

场景 2:格式化硬盘恢复 对整个格式化分区以“Whole”模式运行 PhotoRec,恢复所有文件类型,由于文件碎片化,预期误报率较高,通过签名检查验证恢复的文件,编目并哈希以建立证据链。

场景 3:监控摄像头存储卡 从存储卡镜像中恢复已删除的视频文件(AVI、MP4、MOV),使用定向文件类型选择以加快恢复速度,验证视频文件可播放,提取帧时间戳,在案件笔记中记录恢复过程。

场景 4:证据驱动器上的损坏文件系统 当文件系统元数据被破坏时,PhotoRec 完全绕过文件系统并从原始扇区进行雕刻,恢复尽可能多的数据,接受文件名和目录结构将丢失的事实,在审查过程中根据内容重命名文件。

输出格式

PhotoRec Recovery Summary:
  Source Image:     evidence.dd (500 GB)
  Partition:        NTFS (Partition 2)
  Scan Mode:        Free space only

  Files Recovered:  4,523
    Documents:      234 (doc: 45, docx: 89, pdf: 67, xlsx: 33)
    Images:         2,145 (jpg: 1,890, png: 198, gif: 57)
    Videos:         34 (mp4: 22, avi: 12)
    Archives:       67 (zip: 45, rar: 22)
    Databases:      12 (sqlite: 8, dbf: 4)
    Other:          2,031

  Data Recovered:   12.4 GB
  Corrupted Files:  312 (flagged for review)
  Output Directory: /cases/case-2024-001/recovered/all/
  Hash Manifest:    /cases/case-2024-001/recovered/recovered_hashes.txt

评论

支持 Markdown