
Analizzatore euristico offline che assegna un punteggio a SMS, messaggi di chat e link sospetti per individuare indicatori di truffa e phishing, spiegando ogni segnale d'allarme con guide di sensibilizzazione e un quiz.
Una piattaforma di sensibilizzazione alla sicurezza informatica. Incolla un SMS, un'email, un messaggio di chat o un link sospetto e ti dice quali tecniche di truffa ha individuato, perché ciascuna è importante e cosa fare in seguito.
Demo live: https://threatripper.onrender.com (piano gratuito di Render — la prima visita dopo un periodo di inattività potrebbe richiedere un minuto per il risveglio.)
È uno strumento didattico, non un prodotto di sicurezza. Non c'è alcun motore antivirus, nessuna scansione malware, nessuna verifica del mittente e nessun servizio di reputazione dei domini. I link non vengono mai aperti.
Scopo e ambito. Threatripper è uno strumento difensivo ed educativo per rilevare indicatori di truffa nel testo. Non contiene malware, codice di exploit, kit di phishing, elenchi di credenziali né alcuna capacità offensiva, e non effettua mai richieste di rete. Tutti i messaggi di esempio e i domini nel repository utilizzano nomi fittizi e riservati
.exampleed esistono solo per dimostrare la logica di rilevamento.Usalo solo per proteggere te stesso e gli altri. L'uso improprio è contrario allo scopo del progetto; segnala le frodi tramite i canali ufficiali (vedi Limitazioni).
Quattro pagine, nessuna fase di build, nessun framework JavaScript, nessuna CDN:
| Pagina | Percorso | Scopo |
|---|---|---|
| Analisi | / | Incolla un messaggio o un link, ottieni un verdetto con punteggio e spiegazione |
| Sensibilizzazione | /awareness.html | Sette guide sui tipi di truffa più consigli su come segnalare |
| Quiz | /quiz.html | Dodici scenari valutati lato server con spiegazioni |
| Cronologia | /history.html | Le tue analisi recenti, con gli identificatori già oscurati |
L'analisi è deliberatamente spiegabile anziché autorevole. Ogni punto della scala corrisponde a una regola denominata con una gravità, una confidenza e una frase che spiega perché è importante. L'interfaccia mostra l'intero calcolo, inclusi i bonus di combinazione, così l'output può essere contestato invece che semplicemente creduto.
Cosa non fa:
Richiede Python 3.11 o versioni successive.
git clone <your-repo-url> threatripper
cd threatripper
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Use "python3 -m pip", not a bare "pip": on a hardened distro (Kali, Debian,
# Fedora) pip may be an externally managed system binary that is blocked by
# PEP 668, and a bare "pip" will not resolve to the venv.
python3 -m pip install -r requirements.txt
python3 -m uvicorn backend.main:app --reload
Apri http://127.0.0.1:8000.
L'intero prodotto — API, catalogo delle regole, database e interfaccia web — viene eseguito da quel
singolo processo su una sola origine. La documentazione interattiva dell'API è disponibile su /docs, lo schema OpenAPI grezzo
su /openapi.json.
Per eseguire i test:
python3 -m pip install -r requirements-dev.txt
python3 -m pytest
La stessa analisi è disponibile da terminale. Si tratta di un secondo front end, non di una seconda implementazione: ogni regola, punteggio, spiegazione e azione consigliata proviene dallo stesso AnalysisService utilizzato dall'applicazione web, quindi i due non possono discordare su ciò che è pericoloso.
Nessun server, nessuna porta, nessuna rete — utile quando il messaggio che stai esaminando è l'incidente.
# Analyse a pasted message
./threatripper.sh "URGENT: your account will be closed, share the OTP"
# Or pipe it in, which is the natural way to use it
pbpaste | ./threatripper.sh
# A bare link
./threatripper.sh "http://verify-account.example/login"
# The API payload, for scripts
./threatripper.sh "share your OTP" --json | jq .result.risk_level
# Only fail when it is serious
./threatripper.sh --fail-on critical "see you tomorrow" ; echo $? # 0
./threatripper.sh --fail-on critical "your bank account will be suspended in 24 hours, verify at http://bank-verify.example/login and share the OTP" ; echo $? # 1
# Stored history, shared with the web app
./threatripper.sh history
./threatripper.sh history --level critical --json
# Analyse without keeping any record
./threatripper.sh "share your OTP" --no-store
Un banner rosso THREATRIPPER viene stampato all'inizio di un'esecuzione interattiva, disegnato con il font ANSI Shadow. Viene inviato su stderr ed è omesso per --json e ogni volta che l'output è reindirizzato tramite pipe o redirect, così non finisce mai in un log né interrompe una pipeline. --no-color mantiene il banner ma elimina il colore.
Ogni glifo in ANSI Shadow è un carattere East Asian a larghezza ambigua, quindi su alcuni terminali — tipicamente con locale CJK, o con una finestra più stretta di 78 colonne — le righe vengono renderizzate con larghezze diverse e le lettere si disallineano. In tal caso il banner ripiega silenziosamente su un font puramente ASCII. È possibile forzare la scelta con --banner shadow|ascii|none:
./threatripper.sh --banner shadow "message" # force the block letters
./threatripper.sh --banner ascii "message" # force the terminal-safe face
./threatripper.sh --banner none "message" # no banner at all
Come per l'app web, un'analisi viene aggiunta alla cronologia condivisa per impostazione predefinita —
la stessa anteprima redatta, mai il testo grezzo. Passa --no-store per analizzare
senza conservare un record.
./threatripper.sh analyze --help e ./threatripper.sh history --help elencano ogni
opzione. Il launcher preferisce l'interprete .venv del progetto e risolve la propria
posizione, quindi funziona da qualsiasi directory e con il virtualenv attivato o
meno. python3 -m backend.cli è equivalente.
Uno strumento da terminale viene usato negli script, quindi "ha trovato qualcosa?" deve avere una risposta senza dover analizzare il testo.
| Codice | Significato |
|---|---|
0 | Nulla trovato, pari o inferiore alla soglia --fail-on |
1 | È stato trovato qualcosa pari o superiore alla soglia |
2 | La riga di comando era errata |
3 | Non c'era nulla da analizzare, oppure l'analisi non è potuta essere eseguita |
La soglia predefinita è suspicious. Passa --fail-on con qualsiasi banda
(low, suspicious, medium, high, critical) per cambiarla.
# Fail a deploy pipeline only on a serious finding
./threatripper.sh --fail-on critical "$MESSAGE" || echo "review this message"