Catalog npm
Back to packageRELEASE DETAILS

1.5.0

npm

404reportor

AI-assisted CLI that turns raw cybersecurity notes and screenshots into professional reports.

clictfcybersecurityoscppentestreport
Published16 May 2026
Direct dependencies9
Transitive dependenciesNot calculated

README

Current package documentation

4️⃣0️⃣4️⃣ reportor
Turn your raw hacking notes into professional security reports — in one command.

npm version downloads license


404reportor is a CLI tool that takes your messy pentest notes and screenshots, and turns them into clean, professional HTML / PDF / Markdown reports. Works great for HTB, CTF, OSCP, CPTS labs, or real pentests.

It uses Google Gemini or Anthropic Claude to write the report for you. No API key? No problem — it works offline too with a built-in fallback.

What You Get

  • 🎨 Beautiful dark/light HTML reports with sidebar navigation, code copy buttons, scroll progress, severity badges, and image lightbox
  • 🤖 AI-powered writing — feeds your notes to Gemini/Claude and gets back a professional 0xdf-style writeup
  • 📸 Screenshot analysis — AI reads your screenshots and categorizes them (recon, exploit, privesc, proof)
  • 🔒 Auto-redacts passwords and flags in the final report
  • 📄 Multiple formats — HTML, PDF, or raw Markdown
  • 🖨️ Print-ready — clean print styles built in

Quick Start

Run Without Installing (npx)

npx 404reportor init

This creates the workspace files. Now:

  1. Write your notes in main.md — just dump your writeup, commands, outputs, everything
  2. Drop screenshots in the img/ folder
  3. Generate the report:
npx 404reportor run --format html

That's it. Open the .html file and you're done.

Install Globally

npm install -g 404reportor

Then use 404reportor instead of npx 404reportor everywhere.

Using AI (Free)

By default 404reportor tries to use AI to rewrite your notes into a proper report. To set it up:

cp .env.example .env

Open .env and paste your free Google AI Studio API key:

GEMINI_API_KEY=your_key_here

Get a free key at aistudio.google.com

That's it. Run the tool and it'll use Gemini to generate the report.

If no API key is set, 404reportor will automatically fall back to a local report generator.

Using Anthropic Claude Instead

RECON_REPORT_PROVIDER=anthropic
ANTHROPIC_API_KEY=your_key_here

How to Write Your Notes (main.md)

Just write naturally. The parser picks up commands, outputs, credentials, services, CVEs, and flags automatically. Here's a quick example:

TARGET: 10.10.11.42
MACHINE: Cascade
OS: Windows
DIFFICULTY: Medium

# Recon

nmap -sC -sV 10.10.11.42
22/tcp   open  ssh     OpenSSH 7.4
80/tcp   open  http    Apache 2.4.18
445/tcp  open  smb     Samba 4.7.6

# Web Enumeration

gobuster dir -u http://10.10.11.42 -w /usr/share/wordlists/dirb/common.txt
Found: /admin (302)
Found: /uploads (200)

# Initial Access

Used SQLi on login page to get shell as www-data.
password: SuperSecret123

# Privilege Escalation

sudo -l shows we can run /usr/bin/vim as root.

# Proof

user.txt: abc123def456
root.txt: 789xyz000111

The tool understands metadata lines (TARGET:, OS:, etc.), headings, shell prompts, common tools (nmap, gobuster, evil-winrm, etc.), and credential patterns.

Screenshots

Drop screenshots in img/. Supported formats: .png, .jpg, .jpeg, .gif, .webp, .bmp

You can organize them in subfolders:

img/
  01-nmap.png
  exploit/02-shell.png
  privesc/03-root.png

Want captions? Create img/captions.txt:

01-nmap.png: Initial Nmap scan showing exposed services.
exploit/02-shell.png: Got shell as www-data.

All Commands

CommandWhat It Does
404reportor initCreates main.md, img/, .env in current folder
404reportor setup --provider googleSet up AI provider config
404reportor runParse notes → AI generate → render report
404reportor --helpShow all options

Run Options

FlagDescriptionDefault
-f, --formathtml, pdf, or mdhtml
-t, --typehtb, ctf, pentest, cpts, oscppentest
--providerauto, google, anthropicauto
--modelAI model nameauto
--save-mdSave markdown draft alongside HTML/PDFoff
-i, --inputNotes file pathmain.md
--img-dirScreenshots directoryimg
-o, --outputOutput directory.

Examples

# HTB writeup with AI
npx 404reportor run --type htb --format html

# OSCP-style PDF report
npx 404reportor run --type oscp --format pdf

# Save the markdown draft too
npx 404reportor run --type ctf --format html --save-md

# Use Claude instead of Gemini
npx 404reportor run --provider anthropic --format html

Output Formats

  • HTML — Self-contained file with everything embedded (CSS, images, JS). Has dark/light mode, sidebar TOC, code copy buttons, image lightbox, and severity badges. Just open it in any browser.
  • PDF — Rendered from HTML using Puppeteer. If Chrome isn't installed:
    npx puppeteer browsers install chrome
    
  • Markdown — Raw AI-generated draft (use --save-md).

Security Note

Your notes might have real passwords, hashes, or flags. The tool auto-masks these in the output. But if you use AI mode, your notes are sent to Google/Anthropic servers. If you're working with sensitive client data, don't set an API key — the tool will use its local report builder instead.

Contributing

PRs welcome! Fork → branch → commit → PR.

git clone https://github.com/Hacck3y/404reportor.git
cd 404reportor
npm install
npm link

License

MIT © 2025-2026


Made with ☕ by Hacck3y

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 9

Native requirements
9 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
@anthropic-ai/sdk
Environment
{
  "local_name": "@anthropic-ai/sdk",
  "alias": false,
  "peer_metadata": null
}
^0.56.0runtime
chalk
Environment
{
  "local_name": "chalk",
  "alias": false,
  "peer_metadata": null
}
^5.4.1runtime
commander
Environment
{
  "local_name": "commander",
  "alias": false,
  "peer_metadata": null
}
^14.0.0runtime
dotenv
Environment
{
  "local_name": "dotenv",
  "alias": false,
  "peer_metadata": null
}
^17.2.0runtime
highlight.js
Environment
{
  "local_name": "highlight.js",
  "alias": false,
  "peer_metadata": null
}
^11.11.1runtime
marked
Environment
{
  "local_name": "marked",
  "alias": false,
  "peer_metadata": null
}
^16.0.0runtime
ora
Environment
{
  "local_name": "ora",
  "alias": false,
  "peer_metadata": null
}
^8.2.0runtime
puppeteer
Environment
{
  "local_name": "puppeteer",
  "alias": false,
  "peer_metadata": null
}
^24.12.1runtime
sharp
Environment
{
  "local_name": "sharp",
  "alias": false,
  "peer_metadata": null
}
^0.34.2runtime

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-qsKWWmyQ1EthRNozNDRxksKhcyfR7yUyZ/B8F3kQGbsmX7ehTBKU9ihV+Ge3Nm3R+Y+YQpTdZ83uqFEeQgluYg==",
  "shasum": "0ff81226a4e380e4740d87a8c84fd1801271fc90",
  "tarball": "https://registry.npmjs.org/404reportor/-/404reportor-1.5.0.tgz",
  "fileCount": 10,
  "unpackedSize": 118705,
  "signatures": [
    {
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U",
      "sig": "MEQCIGk6GLxnytrQRfRKmjJWd65DKApf35lSjOhbgwakzSxbAiASC7Bgek8X+XLczwd8pUZwnZ+PKC/EiA/uE6rnCLA+Qw=="
    }
  ]
}

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:58 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:71817ade61a0749d10213b80dc9de9ffc708d396ca05f8d972760700cbff69c7

Other collected versions

1.4.016 May1.3.016 May1.2.016 May1.1.016 May1.0.016 MayView all collected versions →