
Analizador heurístico sin conexión que puntúa mensajes SMS, mensajes de chat y enlaces sospechosos en busca de indicadores de estafa y phishing, explicando cada señal de advertencia con guías de concienciación y un cuestionario.
Una plataforma de concienciación sobre ciberseguridad. Pega un SMS, correo electrónico, mensaje de chat o enlace sospechoso y te indica qué técnicas de estafa ha detectado, por qué importa cada una y qué hacer a continuación.
Demo en vivo: https://threatripper.onrender.com (nivel gratuito de Render — la primera visita tras un periodo de inactividad puede tardar un minuto en activarse.)
Es una herramienta didáctica, no un producto de seguridad. No hay motor antivirus, ni análisis de malware, ni verificación del remitente, ni servicio de reputación de dominios. Los enlaces nunca se abren.
Propósito y alcance. Threatripper es una herramienta defensiva y educativa para detectar indicadores de estafa en texto. No contiene malware, código de explotación, kits de phishing, listas de credenciales ni ninguna capacidad ofensiva, y nunca realiza solicitudes de red. Todos los mensajes y dominios de ejemplo del repositorio usan nombres ficticios y reservados de
.exampley existen únicamente para demostrar la lógica de detección.Úsala solo para protegerte a ti mismo y a los demás. El uso indebido es contrario al propósito del proyecto; denuncia el fraude por los canales oficiales (consulta Limitaciones).
Cuatro páginas, sin paso de compilación, sin framework de JavaScript, sin CDN:
| Página | Ruta | Propósito |
|---|---|---|
| Analizar | / | Pega un mensaje o enlace y obtén un veredicto puntuado y explicado |
| Concienciación | /awareness.html | Siete guías de tipos de estafa más consejos para denunciar |
| Cuestionario | /quiz.html | Doce escenarios evaluados en el servidor con explicaciones |
| Historial | /history.html | Tus análisis recientes, con los identificadores ya redactados |
El análisis es deliberadamente explicable en lugar de autoritativo. Cada punto de la escala se corresponde con una regla con nombre, una severidad, una confianza y una frase que explica por qué importa. La interfaz muestra todo el cálculo, incluidos los bonus de combinación, para que se pueda discutir el resultado en lugar de simplemente confiar en él.
Lo que no hace:
Requiere Python 3.11 o superior.
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
Abre http://127.0.0.1:8000.
Todo el producto —API, catálogo de reglas, base de datos e interfaz web— se ejecuta desde ese
único proceso en un solo origen. La documentación interactiva de la API está en /docs, el esquema OpenAPI en bruto
en /openapi.json.
Para ejecutar las pruebas:
python3 -m pip install -r requirements-dev.txt
python3 -m pytest
El mismo análisis se ejecuta desde una terminal. Esta es una segunda interfaz, no una segunda implementación: cada regla, puntuación, explicación y acción recomendada proviene del mismo AnalysisService que utiliza la aplicación web, por lo que ambas no pueden discrepar sobre qué es peligroso.
Sin servidor, sin puerto, sin red — útil cuando el mensaje que estás examinando es el 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
Al inicio de una ejecución interactiva se imprime un banner rojo THREATRIPPER, dibujado con la tipografía ANSI Shadow. Se envía a stderr y se omite para --json y siempre que la salida se canalice o redirija, por lo que nunca acaba en un log ni rompe una tubería. --no-color mantiene el banner pero elimina el color.
Cada glifo de ANSI Shadow es un carácter de ancho ambiguo de Asia Oriental, por lo que en algunos terminales —típicamente con una configuración regional CJK, o en una ventana más estrecha que 78 columnas— las filas se renderizan con anchos distintos y las letras se desalinean. En ese caso, el banner recurre discretamente a una tipografía puramente ASCII. Sobrescribe la elección 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
Como en la aplicación web, un análisis se añade al historial compartido de forma predeterminada —
la misma vista previa redactada, nunca el texto sin procesar. Pasa --no-store para analizar
sin guardar un registro.
./threatripper.sh analyze --help y ./threatripper.sh history --help enumeran todas las
opciones. El lanzador prefiere el intérprete .venv del proyecto y resuelve su
propia ubicación, por lo que funciona desde cualquier directorio y con el virtualenv activado o
no. python3 -m backend.cli es equivalente.
Una herramienta de terminal se usa en scripts, así que "¿esto encontró algo?" debe poder responderse sin analizar la prosa.
| Código | Significado |
|---|---|
0 | No se encontró nada, en o por debajo del umbral --fail-on |
1 | Se encontró algo en o por encima del umbral |
2 | La línea de comandos era incorrecta |
3 | No había nada que analizar, o el análisis no pudo ejecutarse |
El umbral predeterminado es suspicious. Pasa --fail-on con cualquier banda
(low, suspicious, medium, high, critical) para cambiarlo.
# Fail a deploy pipeline only on a serious finding
./threatripper.sh --fail-on critical "$MESSAGE" || echo "review this message"