
Analyseur heuristique hors ligne qui évalue les SMS, messages de chat et liens suspects selon des indicateurs d'arnaque et d'hameçonnage, en expliquant chaque signal d'alerte à l'aide de guides de sensibilisation et d'un quiz.
Une plateforme de sensibilisation à la cybersécurité. Collez un SMS, un e-mail, un message de chat ou un lien suspect et elle vous indique quelles techniques d'arnaque elle a repérées, pourquoi chacune compte, et quoi faire ensuite.
Démo en ligne : https://threatripper.onrender.com (offre gratuite Render — la première visite après une période d'inactivité peut prendre une minute pour se réveiller.)
C'est un outil pédagogique, pas un produit de sécurité. Il n'y a pas de moteur antivirus, pas d'analyse de logiciels malveillants, pas de vérification de l'expéditeur et pas de service de réputation de domaine. Les liens ne sont jamais ouverts.
Objectif et portée. Threatripper est un outil défensif et éducatif destiné à détecter les indicateurs d'arnaque dans un texte. Il ne contient pas de logiciels malveillants, de code d'exploitation, de kits de phishing, de listes d'identifiants ni aucune capacité offensive, et il n'effectue jamais de requêtes réseau. Tous les messages et domaines d'exemple du dépôt utilisent des noms fictifs et réservés
.exampleet n'existent que pour démontrer la logique de détection.Utilisez-le uniquement pour vous protéger et protéger les autres. Tout usage abusif est contraire à l'objectif du projet ; signalez les fraudes par les canaux officiels (voir Limitations).
Quatre pages, aucune étape de build, aucun framework JavaScript, aucun CDN :
| Page | Chemin | Objectif |
|---|---|---|
| Analyser | / | Collez un message ou un lien, obtenez un verdict noté et expliqué |
| Sensibilisation | /awareness.html | Sept guides par type d'arnaque plus des conseils de signalement |
| Quiz | /quiz.html | Douze scénarios notés côté serveur avec explications |
| Historique | /history.html | Vos analyses récentes, avec identifiants déjà masqués |
L'analyse est délibérément explicable plutôt qu'autoritaire. Chaque point de l'échelle correspond à une règle nommée avec une gravité, une confiance et une phrase expliquant pourquoi elle compte. L'interface affiche l'intégralité du calcul, y compris les bonus de combinaison, afin que l'on puisse contester le résultat plutôt que simplement lui faire confiance.
Ce qu'il ne fait pas :
Nécessite Python 3.11 ou une version plus récente.
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
Ouvrez http://127.0.0.1:8000.
L'ensemble du produit — API, catalogue de règles, base de données et interface web — s'exécute à partir de ce
seul processus sur une seule origine. La documentation interactive de l'API se trouve à /docs, le schéma OpenAPI brut
à /openapi.json.
Pour exécuter les tests :
python3 -m pip install -r requirements-dev.txt
python3 -m pytest
La même analyse s'exécute depuis un terminal. Il s'agit d'une seconde interface, et non d'une seconde implémentation : chaque règle, score, explication et action recommandée provient du même AnalysisService que celui utilisé par l'application web, de sorte que les deux ne peuvent pas diverger sur ce qui est dangereux.
Aucun serveur, aucun port, aucun réseau — utile lorsque le message que vous examinez est l'incident.
# 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
Une bannière rouge THREATRIPPER est imprimée au début d'une exécution interactive, dessinée
dans la police ANSI Shadow. Elle est envoyée vers stderr et est ignorée pour --json et
chaque fois que la sortie est redirigée vers un pipe ou un fichier, afin qu'elle n'atterrisse jamais dans un journal ni ne casse
un pipeline. --no-color conserve la bannière mais supprime la couleur.
Chaque glyphe d'ANSI Shadow est un caractère d'largeur ambiguë d'Asie de l'Est, donc sur
certains terminaux — typiquement un paramètre régional CJK, ou une fenêtre plus étroite que 78 colonnes —
les lignes s'affichent avec des largeurs différentes et les lettres se disloquent. Dans ce cas, la
bannière bascule discrètement vers une police purement ASCII. Remplacez ce choix avec
--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
Comme pour l'application web, une analyse est ajoutée à l'historique partagé par défaut —
le même aperçu expurgé, jamais le texte brut. Passez --no-store pour analyser
sans conserver d'enregistrement.
./threatripper.sh analyze --help et ./threatripper.sh history --help listent toutes les
options. Le lanceur privilégie l'interpréteur .venv du projet et résout son
propre emplacement, il fonctionne donc depuis n'importe quel répertoire et avec le virtualenv activé ou
non. python3 -m backend.cli est équivalent.
Un outil en terminal est utilisé dans des scripts, donc « est-ce que cela a trouvé quelque chose ? » doit pouvoir être déterminé sans analyser de la prose.
| Code | Signification |
|---|---|
0 | Rien trouvé, au niveau ou en dessous du seuil --fail-on |
1 | Quelque chose a été trouvé au niveau ou au-dessus du seuil |
2 | La ligne de commande était incorrecte |
3 | Il n'y avait rien à analyser, ou l'analyse n'a pas pu s'exécuter |
Le seuil est par défaut suspicious. Passez --fail-on avec n'importe quelle bande
(low, suspicious, medium, high, critical) pour le modifier.