Turn a suspicious file into a structured malware triage report (Markdown, HTML or JSON) using static analysis only.
Static malware triage report generator: hashes, file type, entropy, PE/ELF internals, Office macros and auto-exec, PDF actions, LNK, RTF, archives, scripts and HTML smuggling, IOCs, ATT&CK mapping, a verdict and a YARA starter rule, as Markdown, HTML or JSON. Never executes samples. Zero deps.
1 Point the @mrlouiswright scope at GitHub Packages in .npmrc
Published to GitHub Packages, not npmjs.com. GitHub Packages needs a GitHub token with read:packages to install, even for public packages: add //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} to .npmrc or run npm login --registry=https://npm.pkg.github.com.
$npx malware-report-sentinel invoice-macro.docmmalware-report-sentinel — 1 target(s)invoice-macro.docm type: zip size: 817 sha256: 2e462acf04ce532166731456962695f0310ceddc263981b7d10b38f2690973a9 verdict: malicious (62/100) CRITICAL invoice-macro.docm Auto-executing macro: AutoOpen [office-autoexec-macro] ↳ fix: Do not enable content. Extract and review the macro with olevba in an isolated lab. HIGH invoice-macro.docm Macro keywords: Shell, CreateObject, powershell [office-macro-suspicious] LOW invoice-macro.docm 2 network indicator(s): hxxp[://]payload[.]badhost[.]ru/a[.]ps1, payload[.]badhost[.]ru [network-indicators]1 critical, 1 high, 1 low✖ Failing (fail-on: high).
Real output from running malware-report-sentinel locally on a test fixture.
Why it exists
Drop in a phishing attachment, a dropper or an odd binary and malware-report-sentinel produces the report an analyst would otherwise write by hand: sample details and hashes, a verdict and risk score, findings, format-specific internals (PE/ELF, VBA macros, PDF keywords, archive contents, shortcut targets, decoded PowerShell), embedded objects analysed recursively, defanged IOCs, a MITRE ATT&CK mapping, a starter YARA rule and recommendations, with TLP marking, analyst and case fields.
Samples are never executed, opened, rendered or uploaded. Everything is parsed from bytes in pure JavaScript. CLI, library and GitHub Action. Node.js 18+, zero runtime dependencies.
Features
PE / ELF
Full header, section, entropy, import, imphash, Rich header, overlay and TLS parsing; packer hints (UPX, ASPack, VMProtect, Themida…), RWX sections, entry-point anomalies, injection APIs, capability mapping, hardening (shares its engine with binary-sentinel)