Skip to main content

🪡 Needlecraft

External attack surface recon toolkit for red teamers. One CLI to scan, search, screenshot, and report — from first port sweep to finished deliverable.

Needlecraft ships two commands:

  • exercism — recon and scanning: ports, SSL/TLS, DNS, OSINT, screenshots, Tor.
  • salvare — turns raw findings into a polished attack surface report.

Why Needlecraft

  • 🎯 One tool, whole workflow — stop stitching together nmap, masscan, sslscan, EyeWitness, and a dozen OSINT APIs by hand.
  • 🔍 OSINT built in — Shodan, InternetDB, Dehashed, MaxMind, and WHOIS/subdomain recon out of the box.
  • 🧅 Tor-aware — screenshot .onion sites without extra plumbing.
  • 📄 Report generationsalvare compiles ports, ciphers, certs, and screenshots into a client-ready .docx.

Installation

1. Clone the repository

git clone https://github.com/H4CK-7H3-P14N37/needlecraft.git
cd needlecraft

2. Install the Python package

pip install .

3. Install system dependencies

Installs apt packages and deploys torrc. Requires root.

exercism install-deps

Tor is not started automatically. When you need it:

systemctl start tor

Configuration

Set API keys and credentials. Written to ~/.config/exercism.json and /etc/environment.

exercism config SHODANKEY=your_key HIBPKEY=your_key SECURITYTRAILSKEY=your_key
exercism config GOOGLEKEY=your_key GOOGLECX=your_cx
exercism config MAXMINDKEY=your_key
exercism config DEHASHED_EMAIL=you@example.com DEHASHED_API_KEY=your_key
exercism config GMAIL_EMAIL=you@example.com GMAIL_APP_PASSWORD=your_password

Show current config:

exercism config --show

See env.example for the full list of supported keys.

Usage

Port scan

exercism scan ips_list.txt
exercism scan ips_list.txt -u -l -p -t
exercism scan ips_list.txt -T          # top 100 TCP ports only
exercism scan ips_list.txt -N          # skip nmap, masscan results only
exercism scan ips_list.txt -e you@example.com  # email results when done

Search (IP, domain, email, CVE)

exercism search 1.1.1.1
exercism search example.com
exercism search CVE-2024-1234
exercism search user@example.com
exercism search 1.1.1.1 -s   # short output

SSL scan

exercism sslscan urls.txt

Screenshots

exercism screenshot urls.txt

Passive DNS

exercism pdns ips.txt
exercism pdns ips.txt -o output.txt

InternetDB lookup

exercism internetdb ips.txt

Dehashed credential search

exercism dehashed example.com
exercism dehashed user@example.com -s 500

Recon (WHOIS / subdomain enumeration)

exercism recon example.com

MaxMind ASN lookup

exercism maxmind -k "Company Name"
exercism maxmind -k "Company Name" -s output.json

Mass DNS lookup

exercism dns domains.txt

Tor site screenshot

exercism tor http://example.onion

Ansible → OpenSSH config

exercism ansible inventory.ini ~/.ssh/config
exercism ansible inventory.ini ~/.ssh/config -g group1,group2

Generate attack surface report

salvare genreport \
  reports/attack_surface_ports.csv \
  reports/attack_surface_ciphers.csv \
  reports/attack_surface_certs.csv \
  reports/screenshots/ \
  "Company Name" \
  scope.txt

Development install

For making changes without reinstalling:

pip install -e .

Disclaimer

Needlecraft is built for authorized security testing. Only point it at assets you own or have explicit written permission to assess.

Release files for needlecraft 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for needlecraft 1.0.2
File Size Uploaded
needlecraft-1.0.2.tar.gz 59.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for needlecraft 1.0.2
File Interpreter ABI Platform
needlecraft-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 120.8 kB

Release files / needlecraft-1.0.2.tar.gz

Download URL needlecraft-1.0.2.tar.gz
Size 59.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d364bfbe7d2171ba8a4686cb9994dc51e7faa19b6e0f97800912ae59922fec81
BLAKE2b-256 checksum
How to use checksums
59202ba939a65e113d4d564b6d122828e22bc149e47d4ef379f8754d9d76f7df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / needlecraft-1.0.2-py3-none-any.whl

Download URL needlecraft-1.0.2-py3-none-any.whl
Size 61.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cdeadd1904abef7820238bffcde6c74ec40003baec0229a1111b01859984dc94
BLAKE2b-256 checksum
How to use checksums
b6fd102462d3768a11c812e3c6119642f6012e0bb1bd0a67e1b260aaf501b833
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

1.0.3

2 release files

This release

1.0.2 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page