SPECTER

Forensic CLI: parallel hashing + ssdeep, native metadata, signed evidence, cluster + triage

v1.0.1
Linux

Quick Start

Install via jcli

jcli install specter

Hash + identify

# 4 algorithms in parallel + ssdeep fuzzy hash
specter hash suspect.bin

# Verify a known good hash (algorithm detected by hex length)
specter hash file.bin --verify 5d41402abc4b2a76b9719d911017c592

# Native metadata extraction (no ExifTool required)
specter meta photo.jpg
specter geo photo.jpg --kml > out.kml

Triage + analyze + cluster (NEW)

# NEW: Fast triage — hash + magic + tamper + scanner only (~10x faster than analyze)
specter triage suspect.exe

# Full pipeline (carve + entropy + strings on opt-in)
specter analyze suspect.bin --strings --report report.md

# Recursive directory walk, sharded across cores via rayon
specter batch ./samples/

# NEW: Cluster a directory by SHA-256 dedup + ssdeep similarity
specter cluster ./samples/ --threshold 30

Evidence chain-of-custody (HMAC + Ed25519)

# Produce a signed evidence bag (HMAC + NEW: detached Ed25519 signature)
specter evidence make file.bin > evidence.json

# Verify — third parties only need the Ed25519 public key
specter evidence verify evidence.json

YARA-lite scanner + IOC strings

# Scan with the linear-time regex engine (no ReDoS on adversarial input)
specter scan suspect.bin

# Extract strings + IOC regex families (URLs, IPs, BTC/ETH addrs, AWS/GitHub tokens, base64 blobs)
specter strings suspect.bin

# Custom rules: drop .json files into ~/.local/share/specter/rules/
specter rules list
specter rules show ioc-eicar

What's new in v1.0 (Rust rewrite)

Subcommands

CommandWhat it does
hashMD5 + SHA-1 + SHA-256 + SHA-512 + ssdeep (parallel)
metaNative metadata (JPEG EXIF, PNG chunks, PDF info dict, OOXML props)
geoGPS extraction + OSM link + KML export; --directory aggregates
scanYARA-lite scanner with linear-time regex (no ReDoS)
stringsASCII + UTF-16LE strings with 13 IOC regex families
binaryPE / ELF / Mach-O headers (incl. fat-arch slices)
carvePDF (JS / OpenAction / EmbeddedFile / Launch) + ZIP (entries + zip-bomb)
timelineSort every timestamp (EXIF / GPS / PDF / OOXML / filesystem)
diffMetadata diff between two files
analyzeFull pipeline with verdict engine + confidence score
batchParallel recursive analyze with worst-verdict aggregation
evidenceHMAC + Ed25519 signed evidence bag (make / verify)
dbLocal SQLite store (list / search / stats / check / purge)
rulesInspect rule registry (list / show)
reportMarkdown forensic report
triage NEWFast single-file pipeline (~10x faster than analyze)
cluster NEWGroup a directory by SHA-256 + ssdeep similarity

Verdict + exit codes

VerdictTriggerExit code
MALICIOUS≥1 HIGH-severity scanner hit2
SUSPICIOUSMEDIUM scanner hit / HIGH tamper / packer-grade entropy1
TAMPEREDOnly LOW-severity tamper findings1
CLEANNo findings0
UNKNOWNFile unreadable3