| name | forensic-file-analysis |
| description | Forensic analysis techniques for specific file types and software. Use this skill whenever the user needs to analyze files for forensic purposes, investigate suspicious files, extract hidden data, deobfuscate content, or examine file structures. Trigger on mentions of: file forensics, artifact analysis, deobfuscation, hidden data extraction, file format analysis, .pyc files, browser artifacts, Office documents, PDFs, images (PNG/SVG), archives (ZIP), video/audio files, Mach-O binaries, or any file type investigation. |
Forensic File Analysis
A comprehensive guide to forensic analysis techniques for specific file types and software.
Quick Reference
| File Type | Key Techniques |
|---|
| .pyc | Bytecode decompilation, string extraction |
| Browser | History, cookies, cache, downloads |
| VBS/CScript | Deobfuscation, string extraction |
| Office | Hidden metadata, embedded objects |
| PDF | Hidden layers, embedded files |
| PNG | Metadata, hidden channels |
| ZIP | Password recovery, hidden entries |
| Video/Audio | Metadata, hidden streams |
| Mach-O | Entitlements, code signing |
Python Compiled Files (.pyc)
Decompile .pyc Files
pip install uncompyle6
uncompyle6 -o output_dir file.pyc
pip install pydc
pydc file.pyc
pip install decompyle3
decmpyle3 file.pyc
Extract Strings from .pyc
strings file.pyc | grep -i "password\|api\|key\|token"
pip install pycdc
pycdc file.pyc
Analyze .pyc Metadata
xxd file.pyc | head -20
Browser Artifacts
Chrome/Chromium Artifacts
sqlite3 ~/.config/google-chrome/Default/History \
"SELECT * FROM urls ORDER BY last_visit_time DESC LIMIT 50;"
sqlite3 ~/.config/google-chrome/Default/Cookies \
"SELECT * FROM cookies;"
sqlite3 ~/.config/google-chrome/Default/History \
"SELECT * FROM downloads;"
find ~/.config/google-chrome/Default/Cache -type f -exec file {} \;
Firefox Artifacts
sqlite3 ~/.mozilla/firefox/*.default-release/places.sqlite \
"SELECT * FROM moz_historyvisits ORDER BY date DESC LIMIT 50;"
sqlite3 ~/.mozilla/firefox/*.default-release/cookies.sqlite \
"SELECT * FROM moz_cookies;"
sqlite3 ~/.mozilla/firefox/*.default-release/places.sqlite \
"SELECT * FROM moz_downloads;"
Safari Artifacts (macOS)
sqlite3 ~/Library/Safari/History \
"SELECT * FROM history_visits ORDER BY visited_at DESC LIMIT 50;"
sqlite3 ~/Library/Safari/Cookies/Cookies.db \
"SELECT * FROM cookies;"
VBS/CScript Deobfuscation
Basic Deobfuscation
strings script.vbs | grep -v "^\\s*$"
grep -v "^'" script.vbs | grep -v "^\\s*$" > cleaned.vbs
Advanced Deobfuscation
pip install vbdeobfuscator
vbdeobfuscator script.vbs
strings -n 10 script.vbs | grep -E "(http|https|ftp|cmd|powershell)"
strings script.vbs | grep -E "^.{20,}$" | head -20
Common Obfuscation Patterns
# Eval-based
Eval(StringReplace(...))
# Hex encoding
ChrW(&H41) = "A"
# Base64
Base64Decode("...")
# XOR encoding
For i = 1 To Len(str)
str = Chr(Asc(Mid(str, i, 1)) Xor key)
Next
Office File Analysis
Document Structure
unzip -l document.docx
unzip -p document.docx word/document.xml | head -100
unzip -o document.docx -d extracted/
Hidden Metadata
exiftool document.docx
pip install officeparser
officeparser document.docx
unzip -p document.docx word/document.xml | grep -i "w:vanish"
Embedded Objects
unzip -l document.docx | grep -i "embed"
unzip -p document.docx word/embeddings/embed1.bin > embedded.bin
file embedded.bin
Macros Analysis
unzip -p document.docm word/vbaProject.bin > vba.bin
pip install oletools
vba_extract.py document.docm
vba_analyze.py extracted_vba/
PDF File Analysis
Basic Analysis
pdfinfo document.pdf
pdftotext document.pdf - | head -100
pdfimages -list document.pdf
pdfimages -all document.pdf output_
Hidden Content
qpdf --show-nesting document.pdf
qpdf --object-streams=disable document.pdf cleaned.pdf
strings cleaned.pdf | grep -i "password\|secret\|key"
pdfdetach -list document.pdf
pdfdetach -saveall document.pdf
JavaScript Extraction
pdfid document.pdf
pip install pdf-parser
pdf-parser document.pdf
strings document.pdf | grep -A 20 "\/JS"
Metadata Analysis
exiftool document.pdf
pdfinfo -box document.pdf
PNG Tricks
Metadata Extraction
exiftool image.png
ztxt image.png
pngcheck -v image.png
Hidden Data in Chunks
pngcheck -v image.png | grep -E "(tEXt|iTXt|zTXt|tIME|pHYs)"
python3 -c "
import struct
with open('image.png', 'rb') as f:
f.read(8) # PNG signature
while True:
length = struct.unpack('>I', f.read(4))[0]
chunk_type = f.read(4)
data = f.read(length)
if chunk_type in [b'tEXt', b'iTXt', b'zTXt']:
print(f'{chunk_type}: {data}')
f.read(4) # CRC
if chunk_type == b'IEND':
break
"
Steganography Detection
zsteg image.png
steghide extract -sf image.png
java -jar stegsolve.jar
PNG Structure Analysis
xxd image.png | head -50
pngcheck -v image.png
ZIP Tricks
Basic Analysis
unzip -l archive.zip
zipinfo archive.zip
unzip -P password archive.zip
Hidden Entries
unzip -l archive.zip | grep -i "\.\|hidden\|secret"
zipinfo -v archive.zip
unzip -o archive.zip -d extracted/
Password Recovery
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt archive.zip
zip2john archive.zip > hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
zip2john archive.zip > hash.txt
hashcat -m 13200 hash.txt /usr/share/wordlists/rockyou.txt
Malformed ZIP Detection
zipinfo -v archive.zip
file archive.zip*
unzip -l archive.zip | grep -i "\.zip\|\.rar\|\.7z"
Video and Audio File Analysis
Metadata Extraction
exiftool video.mp4
exiftool audio.mp3
ffprobe -v quiet -print_format json -show_format -show_streams video.mp4
mediainfo video.mp4
Hidden Streams
ffprobe video.mp4 | grep -i "stream"
ffmpeg -i video.mp4 -map 0:a:1 hidden_audio.mp3
ffmpeg -i video.mp4 -map 0:v:1 hidden_video.mp4
Steganography Detection
audacity audio.mp3
steghide extract -sf audio.mp3
ffmpeg -i video.mp4 -vf "select=eq(pict_type,I)" -vframes 100 frame_%03d.png
Carving Hidden Files
foremost -i video.mp4 -t mp3,mp4,png,jpg
photorec video.mp4
Mach-O Entitlements and IPSW Indexing
Entitlements Extraction
plutil -extract entitlements raw binary.app/Contents/MachO/binary > entitlements.plist
otool -l binary.app/Contents/MachO/binary | grep -A 10 "com.apple"
codesign -d --entitlements :- binary.app
Code Signing Analysis
codesign -dv binary.app
codesign -d --verbose=4 binary.app
codesign -v binary.app
IPSW Analysis
bsdtar -xf firmware.ipsw
plutil -p BuildManifest.plist
strings BuildManifest.plist | grep -i "vuln\|exploit\|bypass"
Mobile Device Forensics
ibackupextract -b backup_path -o output/
sqlite3 output/*/Manifest.db "SELECT * FROM files;"
General Forensic Techniques
File Carving
foremost -i disk_image -t png,jpg,docx,pdf,zip
scalpel disk_image -o output/
photorec disk_image
String Extraction
strings file | grep -i "password\|api\|key\|token"
strings -n 10 file | grep -B 5 -A 5 "sensitive"
strings -e l file
Hash Analysis
md5sum file
sha256sum file
urlquery "md5:HASH_VALUE"
Timeline Analysis
ls -la --time-style=full-iso file
plaso --status-view none --output-file timeline.plaso file
psort --output-format timeline timeline.plaso > timeline.txt
Best Practices
- Always work on copies - Never analyze original evidence files
- Document everything - Keep detailed notes of all commands and findings
- Verify findings - Cross-reference results with multiple tools
- Maintain chain of custody - Track all file movements and modifications
- Use write-blockers - When analyzing disk images, use hardware or software write-blockers
Tool Installation
sudo apt install foremost scalpel photorec exiftool
pip install oletools pdf-parser uncompyle6 pydc pycdc
pip install volatility3 yara-python
sudo apt install hashcat john
Quick Commands Reference
file filename
strings filename | grep -i "keyword"
exiftool filename
unzip -l archive.zip
pdfinfo document.pdf
exiftool image.png
When to Use This Skill
Use this skill when:
- Investigating suspicious files
- Extracting hidden data from documents
- Analyzing file structures for forensics
- Deobfuscating scripts or binaries
- Recovering data from corrupted files
- Examining browser or application artifacts
- Performing digital forensics investigations
- Analyzing malware samples
- Extracting metadata from any file type