Skip to content

Reporting Workflows

The CLI produces strict r2inspect.report/v1 JSON. That artifact can be converted without network access:

r2inspect-export report.json --format html --output report.html
r2inspect-export report.json --format sarif --output report.sarif.json
r2inspect-export report.json --format misp --output report.misp.json
r2inspect-export report.json --format stix --output report.stix.json

Compare two reports by stable finding and analyzer identifiers:

r2inspect-compare baseline.json candidate.json
r2inspect-baseline baseline.json candidate.json --fail-on-change
r2inspect --explain finding-abc123 report.json
r2inspect-cluster reports/*.json --threshold 0.8875
r2inspect-cluster reports/*.json --index similarity.sqlite3
r2inspect-cluster --index similarity.sqlite3 --query SAMPLE_SHA256
r2inspect-rules-verify ./rule-pack --public-key analyst-ed25519.pub

Batch runs can persist successful results and resume after interruption. Cache entries are keyed by the sample SHA-256 and the effective analysis configuration:

r2inspect --batch samples/ -j --cache output/batch-cache.sqlite3
r2inspect --batch samples/ -j --cache output/batch-cache.sqlite3 --resume

Use r2inspect --backend consensus --consensus-backend pe-core sample.exe (or the matching ELF/Mach-O core backend) to retain typed field-level disagreements between radare2 and the independent parser. Rule packs are managed with r2inspect rules build|sign|verify|install|list|update; see the analyzer SDK for the signed-pack contract.

The exports are deterministic projections of the report contract. They do not claim that a finding is malicious; consumers should preserve the source analyzer, confidence, evidence, and report provenance. Explanations include the evidence, locations, and ready-to-run radare2 seek/disassembly commands. Rule packs use a versioned manifest, SHA-256 file hashes, and Ed25519 signatures; updating a pack means replacing the verified directory atomically.

The executable report/v1 consumer example loads the schema shipped in the installed package, validates a report, and reads analyzer statuses and finding evidence without using legacy fields:

python -m pip install r2inspect jsonschema
python examples/consume_report.py report.json