
Workbench OSINT local-first, guidato da tastiera, per il terminale con 28 moduli che coprono ricerche di username, dominio, IP, email, violazioni e geolocalizzazione, oltre all'archiviazione dei casi in SQLite.
h-osint)Un workbench OSINT locale-first, guidato da tastiera, per il terminale — keybind in stile Neovim, configurazione Lua, 12 temi e un archivio locale di casi su SQLite. Nessun account, nessun backend cloud, nessuna telemetria.
kitty ~ » h-osint
Repository:
h-osint· Binario:h-osint· Sito web: https://t-beckett.gitlab.io/h-osint/
h-osint gira interamente sulla tua macchina. Note dei casi, tracciamento dei sock-puppet e i risultati di ogni lookup vivono in un unico file SQLite locale — non esiste alcun componente server, nessuna sincronizzazione e nulla di ciò che fa questo strumento carica i dati dei tuoi casi da nessuna parte. Ogni modulo che comunica con un servizio di terze parti (HaveIBeenPwned, Shodan, WiGLE, Nominatim, RDAP, crt.sh, NVD, Team Cymru, ip-api.com) lo fa con la tua chiave API dove richiesta, e solo perché hai eseguito tu quel lookup specifico.
Perché i buoni riferimenti sulla tecnica OSINT (il corso OSINT Fundamentals di TCM Security, la lista di risorse OSINT di TCM) non forniscono alcun software, e il software esistente è o un mucchio di script CLI monoscopo (Sherlock, theHarvester, ...) o una GUI pesante (Maltego). h-osint prende in prestito le parti dell'ecosistema delle applicazioni da terminale che già sembrano premium e costruisce un unico workbench coerente attorno alle tecniche note:
| Preso da | Cosa abbiamo preso |
|---|---|
| lazydocker | Layout a pannelli, barra dei suggerimenti keybind in basso, completamente tematizzabile |
| tuicr | Navigazione modale nativa Vim, Rust, singolo binario statico |
| superfile | Modello multi-tab, 12 temi inclusi, rifinitura "tutto sembra curato nei minimi dettagli" |
| Sherlock / Maigret | La tecnica dello sweep di username multipiattaforma (reimplementata qui, non vendorizzata) |
| SpiderFoot / recon-ng | Orchestrazione di molte API/strumenti OSINT passivi dietro un'unica interfaccia coerente + pipeline di automazione |
Non è costruito per, e omette deliberatamente, qualsiasi cosa il cui unico
uso realistico sia stalking, molestie, intrusione non autorizzata o lavorare
con dump di credenziali rubate — vedi docs/ETHICS.md per dove esattamente
vengono tracciati quei confini e perché.
git clone https://gitlab.com/t-beckett/h-osint.git
cd h-osint
# Prerequisiti di build: un compilatore C + linker (per SQLite incluso e
# Lua vendorizzato) e pkg-config. Su Debian/Ubuntu:
sudo apt install build-essential pkg-config
cargo build --release
./target/release/h-osint # avvia la TUI
./target/release/h-osint --help # mostra i sottocomandi scriptabili
Strumenti esterni opzionali che sbloccano più funzionalità della schermata Tools: whois
(fallback per TLD non supportati da RDAP), dig (record DNS + controllo AXFR),
exiftool, nmap, openssl, curl. L'app funziona bene senza di essi — ti
dice cosa manca invece di fallire silenziosamente.
Al primo avvio, h-osint scrive per te una configurazione predefinita
completamente commentata in ~/.config/h-osint/init.lua (se non c'è ancora
nulla) — non c'è nulla da copiare a mano. Apri quel file per impostare tema,
chiavi API, temi personalizzati e override delle keymap. Nulla in esso è
obbligatorio; ogni campo ha un default sensato e ogni modulo che necessita di
una chiave te lo dice invece di fallire silenziosamente. (Il file
config/init.lua incluso in questo repo è esattamente il template usato —
leggilo qui se preferisci non avviare prima l'app.)
Tutte le 22 capacità OSINT originariamente previste più 6 strumenti estesi —
mappatura completa stato/modulo in docs/FEATURES.md:
Note e file dei casi · gestore sock puppet / persona · costruttore di dork per motori di ricerca · handoff per reverse image search · visualizzatore EXIF con anteprima inline tramite protocollo Kitty · strumenti di localizzazione fisica e geolocalizzazione · OSINT su email (formato/MX/Gravatar) · OSINT su dati compromessi (violazioni + paste di HaveIBeenPwned) · OSINT su persone · OSINT su numeri di telefono · OSINT su username in stile Sherlock · OSINT su siti web (DNS, RDAP, crt.sh, Wayback, SPF/DMARC/DKIM, robots.txt/sitemap) · OSINT sui social media · OSINT su reti wireless (WiGLE) · OSINT su IP (geolocalizzazione, reverse DNS, ASN/BGP via Team Cymru, RDAP) · OSINT su MAC · orchestrazione di strumenti esterni · pipeline di automazione · scrittura di report Markdown · OSINT di sicurezza di basso livello (certificati TLS, security header) · più intelligence sugli host Shodan, un identificatore di hash, un expander di redirect URL, un lookup CVE/NVD, uno scanner di typosquat/domini look-alike e un controllo di misconfigurazione del trasferimento di zona DNS (AXFR).
Tre modalità, in stile Neovim — tabella completa in
KEYBINDINGS.md:
| Tasto | Modalità Normal |
|---|---|
j/k, ↑/↓ | muoviti all'interno di una lista |
i | entra in modalità Insert (digita nel campo a fuoco) |
Esc | torna alla modalità Normal |
: | Modalità Command (:theme nord, :open username, :case new "Acme intake", :q) — premi Tab per scorrere i completamenti del nome del comando o del suo argomento |
r / Enter | esegui l'azione della schermata corrente |
Tab / Shift-Tab | cambia scheda |
ctrl-t / ctrl-w | nuova scheda (Home) / chiudi scheda |
[ / ] | tema precedente / successivo |
? | attiva/disattiva la guida |
:q | esci (questo è l'unico modo per uscire — nessun binding q nudo, così non può mai essere un tasto digitato per errore) |
Tutto quanto sopra è sovrascrivibile da init.lua. Premi ? in qualsiasi
momento per il cheat sheet in-app.
:theme <name> oppure imposta theme in init.lua — tabella completa delle
palette e formato dei temi personalizzati in THEMES.md:
ocean-depths · forest-canopy · modern-minimalist · arctic-frost ·
botanical-garden · midnight-galaxy · nord · catppuccin-frappe ·
everforest · gruvbox · onedark · tokyonight (predefinito)
Ogni tema mappa gli stessi 12 ruoli semantici (bg/fg/accent/danger/...)
— nessuna schermata specializza mai un tema per nome — e puoi definirne uno
tuo interamente in init.lua senza toccare codice Rust.
La logica centrale di ogni modulo è raggiungibile headless, così puoi convogliarla in altri strumenti o eseguirla da cron: