๐ฌ SOP RECOVERY โ Open Source Only (SystemRescue / Kali Live)
Environment: SystemRescue Live USB / Kali Linux Live / Parrot OS Live Filosofi: Semua tool gratis, semua open source, semua bisa dijalankan dari USB tanpa install. Target: HDD, SSD, NVMe, USB Flash, Memory Card, DVR/CCTV storage
Golden Rule โ Tidak Boleh Dilanggar
JANGAN pernah kerja di drive original. Imaging dulu โ kerja di image. Satu kesalahan di drive rusak = data hilang permanen.
Peta Alur Keseluruhan
DRIVE TARGET MASUK
โ
โผ
[FASE 0] Identifikasi & Write-Block
โ
โผ
[FASE 1] Imaging โ hasilkan .dd
โ
โโโ Drive sehat โ dd / dc3dd
โโโ Drive rusak โ ddrescue (bisa resume)
โ
โผ
[FASE 2] Analisis Image
โ
โโโ File system intact โ TestDisk / PhotoRec
โโโ Deleted file โ fls (Sleuth Kit) / extundelete
โโโ DVR/CCTV video โ FFmpeg + manual carving
โโโ Deep scan โ Autopsy / bulk_extractor
โ
โผ
[FASE 3] Recovery & Output
โ
โโโ Copy file yang berhasil ke drive destination
Tools yang Tersedia di SystemRescue (Pre-installed)
| Tool | Fungsi | Sudah Ada di SystemRescue? |
|---|---|---|
ddrescue | Imaging drive rusak, bisa resume | โ |
dd | Imaging dasar | โ |
testdisk | Recovery partisi + file | โ |
photorec | File carving tanpa metadata | โ |
fsck | Repair file system | โ |
fdisk / lsblk | Identifikasi partisi | โ |
ntfs-3g | Mount NTFS read-only | โ |
hexedit | Hex editor manual | โ |
strings | Ekstrak teks dari binary | โ |
grep | Pattern search | โ |
ffmpeg | Video repair & carving | โ ๏ธ Install dulu |
autopsy | GUI forensik | โ Pakai Kali/Parrot |
bulk_extractor | Scan data sensitif | โ Pakai Kali/Parrot |
foremost | File carving | โ ๏ธ Install dulu |
scalpel | File carving custom | โ ๏ธ Install dulu |
# Install tool tambahan di SystemRescue (session aktif, tidak persistent)
pacman -Sy --noconfirm ffmpeg foremost scalpel sleuthkit bulk-extractorFASE 0 โ Identifikasi & Persiapan
0.1 Lihat Semua Drive yang Terdeteksi
# Tampilkan semua drive fisik
lsblk -d -o NAME,SIZE,MODEL,ROTA,TRAN
# ROTA=1 โ HDD | ROTA=0 โ SSD/NVMe
# Detail lengkap dengan serial number
lsblk -o NAME,SIZE,MODEL,SERIAL,MOUNTPOINT
# Cek kondisi SMART
smartctl -a /dev/sdX
# Perhatikan: Reallocated_Sector_Ct, Pending_Sector, Uncorrectable_Sector
# Jika nilai ini tinggi โ drive rusak, paksa ddrescue bukan dd biasa0.2 Write-Block Software (Jika Tidak Punya Hardware Write-Blocker)
# Set drive target ke read-only SEBELUM apapun
blockdev --setro /dev/sdX
# Verifikasi โ harus output: 1
blockdev --getro /dev/sdX
# Mount read-only jika perlu lihat isi
mkdir -p /mnt/target
mount -o ro /dev/sdX1 /mnt/target0.3 Hash Baseline โ Sidik Jari Drive Original
# Hash drive original sebelum imaging
sha256sum /dev/sdX | tee evidence_hash_original.txt
# Catat juga info drive
hdparm -I /dev/sdX | tee drive_info.txt
smartctl -a /dev/sdX | tee smart_report.txtFASE 1 โ Imaging (Buat Salinan Forensik)
1A โ Drive Sehat (Tidak Ada Bad Sector)
# Buat folder evidence
mkdir -p /mnt/evidence/CASE-001/
# Opsi 1: dd biasa (cepat, tidak ada error handling)
dd if=/dev/sdX \
of=/mnt/evidence/CASE-001/disk.dd \
bs=4M \
status=progress \
conv=noerror,sync
# Opsi 2: dc3dd (hashing on-the-fly, lebih forensic-grade)
dc3dd if=/dev/sdX \
of=/mnt/evidence/CASE-001/disk.dd \
hash=sha256 \
log=/mnt/evidence/CASE-001/imaging.log1B โ Drive Rusak / Bad Sector (WAJIB ddrescue)
# Pass 1: Ambil semua yang bisa diambil tanpa retry
ddrescue -f -n \
/dev/sdX \
/mnt/evidence/CASE-001/disk.dd \
/mnt/evidence/CASE-001/rescue.log
# Pass 2: Retry sektor yang gagal (lebih agresif, 3x retry)
ddrescue -d -r3 \
/dev/sdX \
/mnt/evidence/CASE-001/disk.dd \
/mnt/evidence/CASE-001/rescue.log
# Pass 3: Jika masih ada yang gagal, coba dengan trim
ddrescue -d -r1 -T 30s \
/dev/sdX \
/mnt/evidence/CASE-001/disk.dd \
/mnt/evidence/CASE-001/rescue.log
# Cek hasil โ berapa sektor yang berhasil vs gagal
ddrescuelog -t /mnt/evidence/CASE-001/rescue.logKenapa ddrescue Bukan dd untuk Drive Rusak?
dddenganconv=noerrortetap maju linear โ jika ketemu bad sector, dia isi dengan nol dan lanjut. Masalahnya: HDD rusak bisa hang berjam-jam di satu bad sector.ddrescuejauh lebih cerdas: skip area rusak dulu, ambil yang sehat, baru kembali retry area rusak. Bisa resume jika PC mati di tengah jalan via log file.
1C โ Verifikasi Image
# Hash image yang sudah jadi
sha256sum /mnt/evidence/CASE-001/disk.dd | tee evidence_hash_image.txt
# Bandingkan โ harus identik jika drive sehat
# Jika drive rusak, hash AKAN berbeda (bad sector diisi nol)
diff evidence_hash_original.txt evidence_hash_image.txtFASE 2A โ Analisis General (File Recovery)
2A.1 Identifikasi Struktur Image
# Lihat partisi dalam image
fdisk -l /mnt/evidence/CASE-001/disk.dd
# Atau dengan mmls (Sleuth Kit) โ lebih detail
mmls /mnt/evidence/CASE-001/disk.dd
# Identifikasi file system
file /mnt/evidence/CASE-001/disk.dd
fsstat -o [OFFSET] /mnt/evidence/CASE-001/disk.dd2A.2 Mount Image untuk Analisis
# Hitung offset partisi (start sector ร 512)
# Contoh: start sector 2048 โ offset = 2048 ร 512 = 1048576
mkdir -p /mnt/analysis/p1
mount -o ro,loop,offset=1048576 \
/mnt/evidence/CASE-001/disk.dd \
/mnt/analysis/p1
# Untuk multiple partisi โ pakai kpartx
kpartx -av /mnt/evidence/CASE-001/disk.dd
# Hasilkan: /dev/mapper/loop0p1, loop0p2, dll
mount -o ro /dev/mapper/loop0p1 /mnt/analysis/p12A.3 TestDisk โ Recovery Partisi & File Terhapus
# Jalankan TestDisk di image
testdisk /mnt/evidence/CASE-001/disk.ddMenu TestDisk:
1. [Intel/PC] โ partition table type
2. [Analyse] โ scan struktur partisi
3. [Quick Search] โ cari partisi yang hilang
4. [Deeper Search] โ jika Quick Search gagal
5. [List] โ browse file yang bisa direcovery
6. Tekan C untuk copy file โ tentukan destination
2A.4 PhotoRec โ File Carving (Tanpa Struktur Folder)
# Jalankan PhotoRec
photorec /mnt/evidence/CASE-001/disk.ddSetting PhotoRec:
1. Pilih image
2. [File Opt] โ pilih tipe file yang mau dicari
Untuk DVR: aktifkan AVI, MP4, H264
3. [Search] โ pilih file system type
4. Tentukan folder output
5. Tunggu โ PhotoRec scan seluruh image
2A.5 Foremost / Scalpel โ File Carving Custom
# Foremost โ cari file spesifik
foremost -t jpg,pdf,doc,mp4,avi \
-i /mnt/evidence/CASE-001/disk.dd \
-o /mnt/analysis/foremost_out/
# Scalpel โ carving dengan konfigurasi custom
# Edit /etc/scalpel/scalpel.conf untuk aktifkan tipe file
# Uncomment baris yang dibutuhkan
scalpel /mnt/evidence/CASE-001/disk.dd \
-o /mnt/analysis/scalpel_out/2A.6 Sleuth Kit โ Analisis File System Level Rendah
# List semua file termasuk yang terhapus
fls -r -p -d /mnt/evidence/CASE-001/disk.dd > deleted_files.txt
# Extract file berdasarkan inode number
# (lihat inode dari output fls)
icat /mnt/evidence/CASE-001/disk.dd [INODE_NUMBER] > recovered_file.ext
# Statistik file system
fsstat /mnt/evidence/CASE-001/disk.dd
# Info inode spesifik
istat /mnt/evidence/CASE-001/disk.dd [INODE_NUMBER]FASE 2B โ DVR / CCTV Video Recovery (Open Source)
DVR menyimpan video dalam format proprietary โ bukan MP4/AVI biasa. Tapi di level bytes, semua video H.264/H.265 punya signature yang bisa dicari.
2B.1 Identifikasi Format DVR
# Cek signature bytes di image โ cari header video
# H.264 NAL unit start: 00 00 00 01
# H.264 SPS: 00 00 00 01 67
# H.265/HEVC: 00 00 00 01 40
hexdump -C /mnt/evidence/CASE-001/disk.dd | grep "00 00 00 01" | head -20
# Atau pakai strings untuk cari metadata
strings /mnt/evidence/CASE-001/disk.dd | grep -i "hikvision\|dahua\|xmeye\|dvr\|nvr" | head -202B.2 Scalpel โ Custom Config untuk Video DVR
# Edit /etc/scalpel/scalpel.conf
# Tambahkan baris ini untuk H.264 raw stream:
nano /etc/scalpel/scalpel.conf# H.264 raw stream (DVR format)
# Format: extension case size header footer
h264 y 500000000 \x00\x00\x00\x01\x67 \xff\xe0
# MP4 container
mp4 y 500000000 \x00\x00\x00\x20\x66\x74\x79\x70 \x00\x00\x00\x00
# AVI container (beberapa DVR pakai ini)
avi y 500000000 RIFF....AVI\x20 \x00\x00\x00\x00
# MKV
mkv y 500000000 \x1a\x45\xdf\xa3 \x00\x00\x00\x00
# Jalankan Scalpel dengan config custom
scalpel /mnt/evidence/CASE-001/disk.dd \
-c /etc/scalpel/scalpel.conf \
-o /mnt/analysis/dvr_carved/2B.3 FFmpeg โ Repair & Convert Video DVR
# Coba repair video yang corrupt
ffmpeg -i input_corrupt.mp4 \
-c copy \
-avoid_negative_ts make_zero \
output_repaired.mp4
# Convert raw H.264 stream ke MP4
ffmpeg -f h264 \
-i raw_stream.h264 \
-c copy \
output.mp4
# Extract video dari container DVR proprietary
ffmpeg -i dvr_file.dav \
-c copy \
output.mp4
# Repair dengan ignore error
ffmpeg -err_detect ignore_err \
-i corrupt_video.mp4 \
-c copy \
output_fixed.mp4
# Batch convert semua file hasil carving
for f in /mnt/analysis/dvr_carved/h264/*.h264; do
ffmpeg -f h264 -i "$f" -c copy "${f%.h264}.mp4" 2>/dev/null
done2B.4 Manual Hex Carving โ Last Resort DVR
# Cari offset awal video H.264 di image
grep -oaP "(?<=\x00\x00\x00\x01\x67)." /mnt/evidence/CASE-001/disk.dd \
| hexdump -C | head
# Gunakan dd untuk ekstrak segmen tertentu
# Contoh: video dimulai di offset 1073741824 (1GB), ukuran ~500MB
dd if=/mnt/evidence/CASE-001/disk.dd \
of=/mnt/analysis/segment.h264 \
bs=1 \
skip=1073741824 \
count=524288000
# Convert hasil ekstrak
ffmpeg -f h264 -i /mnt/analysis/segment.h264 \
-c copy /mnt/analysis/segment.mp42B.5 Bulk Extractor โ Scan Cepat Seluruh Image
# Install dulu jika belum ada
pacman -Sy --noconfirm bulk-extractor
# Scan image โ temukan semua data menarik
bulk_extractor \
-o /mnt/analysis/bulk_out/ \
/mnt/evidence/CASE-001/disk.dd
# Output yang dihasilkan:
# bulk_out/jpeg.txt โ lokasi semua JPEG di image
# bulk_out/url.txt โ semua URL yang pernah diakses
# bulk_out/email.txt โ semua alamat email
# bulk_out/video.txt โ referensi ke file video (jika ada)FASE 3 โ Output & Dokumentasi
3.1 Copy File Recovery ke Destination
# Pastikan destination punya ruang cukup
df -h /mnt/destination/
# Copy dengan preserve timestamp
cp -a /mnt/analysis/recovered/ /mnt/destination/CASE-001-recovered/
# Atau rsync untuk progress yang jelas
rsync -av --progress \
/mnt/analysis/recovered/ \
/mnt/destination/CASE-001-recovered/3.2 Generate Laporan Sederhana
# Buat laporan otomatis
cat > /mnt/evidence/CASE-001/report.txt << EOF
===================================
RECOVERY REPORT
===================================
Date : $(date)
Case : CASE-001
Tool : SystemRescue + Open Source
DRIVE INFO:
$(cat drive_info.txt | grep -E "Model|Serial|Capacity")
SMART STATUS:
$(smartctl -H /dev/sdX | grep "overall-health")
HASH ORIGINAL : $(cat evidence_hash_original.txt)
HASH IMAGE : $(cat evidence_hash_image.txt)
IMAGING METHOD : ddrescue
RESCUE LOG : $(ddrescuelog -t rescue.log 2>/dev/null)
FILES RECOVERED:
$(find /mnt/analysis/recovered/ -type f | wc -l) files
VIDEO FRAGMENTS:
$(find /mnt/analysis/dvr_carved/ -name "*.mp4" | wc -l) video segments
===================================
EOF
cat /mnt/evidence/CASE-001/report.txtQuick Reference โ Cheat Sheet
# โโโ IDENTIFIKASI โโโ
lsblk -d -o NAME,SIZE,MODEL,ROTA
smartctl -a /dev/sdX
# โโโ WRITE BLOCK โโโ
blockdev --setro /dev/sdX
# โโโ IMAGING SEHAT โโโ
dd if=/dev/sdX of=disk.dd bs=4M status=progress conv=noerror,sync
# โโโ IMAGING RUSAK โโโ
ddrescue -f -n /dev/sdX disk.dd rescue.log # Pass 1
ddrescue -d -r3 /dev/sdX disk.dd rescue.log # Pass 2
# โโโ ANALISIS โโโ
testdisk disk.dd # Recovery partisi + file
photorec disk.dd # File carving
fls -r -p -d disk.dd # List deleted files
# โโโ DVR/CCTV โโโ
foremost -t avi,mp4 -i disk.dd -o ./out/ # Carving video
ffmpeg -f h264 -i raw.h264 -c copy output.mp4 # Convert H264
ffmpeg -err_detect ignore_err -i bad.mp4 -c copy fixed.mp4 # RepairAnti-Pattern โ Jangan Lakukan Ini
| โ Salah | โ Benar |
|---|---|
dd langsung ke drive rusak tanpa log | ddrescue dengan log file โ bisa resume |
| Mount drive original RW | blockdev --setro dulu, mount -o ro |
| Skip hashing | Hash sebelum dan sesudah imaging |
| Simpan image di drive yang sama | Image ke drive berbeda / eksternal |
| Panic saat I/O error | ddrescue dirancang untuk ini โ biarkan jalan |
| PhotoRec langsung ke drive original | PhotoRec dari image, bukan original |
๐ Lihat Juga
- Data Recovery โ perbandingan tools commercial vs open source
- SOP HPA Exorcism โ prosedur HPA/DCO sebelum imaging
- Tools Penting โ hierarki data recovery Level 0โ7
- Embedded Systems โ flash forensics NAND level
SOP Recovery Open Source | SystemRescue ยท ddrescue ยท TestDisk ยท PhotoRec ยท FFmpeg ยท DVR Carving