Zulema Gutiérrez
← Todos los proyectos
IA

Phishing.exe · detector con IA

Pegas un email y te dice si parece phishing y, sobre todo, por qué: qué palabras han pesado en la decisión de la IA y qué señales de alerta ha encontrado. Todo ocurre en tu navegador.

Pythonscikit-learnJavaScriptpytest
zulemagutierrez.com/phishing/

En pocas palabras

98,1 %
de acierto con 3.508 emails que el modelo no vio al entrenar
14.028
emails reales para entrenar
130 KB
pesa el modelo entero, que corre en el navegador
0 servidores
el texto del email no sale de tu ordenador

Resultados

ExactitudPrecisiónSensibilidadF1
98,1 %97,0 %97,8 %0,974

Cómo se usa

  1. Paso 1

    Carga el email

    Pégalo en el recuadro (se analiza solo), usa Pegar y analizar, abre un archivo .eml o .txt, arrástralo encima, o prueba uno de los ejemplos.

  2. Paso 2

    Lee el veredicto

    Cinco respuestas posibles: phishing probable, sospechoso, spam o publicidad, sin señales de alerta o parece seguro. Debajo, cuánto se parece a phishing según la IA y cuántas señales de alerta hay.

  3. Paso 3

    Entiende el porqué

    Cada señal de alerta explica qué ha visto y dónde (un enlace a una IP, prisas, que te pida la contraseña…). Las palabras que pesaron en la IA salen en rosa si empujan hacia phishing y en verde si empujan hacia un email normal, y se marcan en el propio texto.

  4. Paso 4

    En español, mandan las reglas

    La IA aprendió con emails en inglés. Si reconoce menos del 60 % del texto, no opina y lo dice; el veredicto lo deciden las señales de alerta, que sí funcionan en español.

  5. Paso 5

    Mira cómo está evaluado

    El panel del modelo enseña su exactitud, precisión y sensibilidad, y la matriz de aciertos y fallos con emails que no vio al entrenar.

Qué incluye

IA explicable

Cada palabra tiene un peso visible.

Señales de alerta

Reglas en español e inglés.

Privado

Nada se envía a ningún servidor.

Cualquier forma de cargar

Pegar, archivo .eml o arrastrar.

Sabe decir «no lo sé»

Si no entiende el idioma, lo dice.

Español e inglés

Interfaz y ejemplos.

Cómo está hecho

  1. Dataset17.536 emails reales (LGPL-3.0)
  2. EntrenamientoPython · TF-IDF + regresión logística
  3. modelo.json130 KB: palabras, pesos e idf
  4. Tu navegadorla misma cuenta en JS + reglas

Decisiones técnicas

Un modelo sencillo, a propósito

La regresión logística da a cada palabra un peso: se puede enseñar exactamente por qué decide lo que decide, y cabe en un JSON pequeño que el navegador ejecuta sin servidor.

Quité las «trampas» del dataset

La primera versión acertaba un 98,4 %, pero sus palabras favoritas para decir «seguro» eran enron o vince: aprendía de qué colección venía cada email, no si era phishing. Al quitarlas generaliza mejor a emails reales.

La IA sabe cuándo callarse

Antes de opinar mira qué parte del texto reconoce: en inglés ronda el 90 % y en otros idiomas baja del 40 %. Por debajo del 60 % no opina, y el veredicto lo explica.

El JSON se comprueba con tests

El navegador repite a mano la cuenta de scikit-learn (TF-IDF sublineal, normalización y sigmoide). Un test verifica que da las mismas probabilidades.

Calidad y tests

  • Tests con pytest en cada push (GitHub Actions): el JSON exportado reproduce a scikit-learn y no contiene palabras-trampa del dataset.
  • Evaluado con un 20 % de los emails apartado desde el principio, manteniendo la proporción de cada clase.
  • Límites a la vista: aprendió en inglés y el dataset mezcla phishing con spam comercial, por eso existe el veredicto «spam o publicidad».

Pruébalo en tu ordenador

pip install -r requirements.txt
python -m detector.modelo      # descarga el dataset, entrena y genera web/modelo.json
pytest
python -m http.server -d web   # y abre http://localhost:8000

¿Hablamos?

Si quieres saber más de este proyecto o de cómo trabajo, escríbeme.

Siguiente proyecto → 🖥️ ZulemaOS Monitor