feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
---
|
||||
name: enrich_person_passive
|
||||
kind: function
|
||||
lang: py
|
||||
domain: cybersecurity
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "def enrich_person_passive(nombre: str, apellidos: str, dominios: list | None = None, usernames: list | None = None) -> dict"
|
||||
description: "Orquestador OSINT pasivo: genera candidatos de enriquecimiento de una persona SIN tocar al objetivo. Compone guess_email_formats (emails candidatos por cada dominio dado, o gmail/outlook por defecto), enumerate_username_sites (comprobacion de usernames en servicios publicos) y build_search_dorks (dorks tipo persona, que NO se ejecutan, solo se generan)."
|
||||
tags: [osint-enrich, osint-passive, cybersecurity, person, email, username, dorks]
|
||||
uses_functions: [guess_email_formats_py_cybersecurity, enumerate_username_sites_py_cybersecurity, build_search_dorks_py_cybersecurity]
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: []
|
||||
params:
|
||||
- name: nombre
|
||||
desc: "nombre de pila de la persona"
|
||||
- name: apellidos
|
||||
desc: "apellido(s) de la persona. nombre y apellidos no pueden estar ambos vacios (ValueError)"
|
||||
- name: dominios
|
||||
desc: "lista de dominios de correo donde generar formatos de email candidatos. None o vacia => usa los dominios comunes gmail.com/outlook.com"
|
||||
- name: usernames
|
||||
desc: "lista de usernames a comprobar en sitios publicos via enumerate_username_sites. None o vacia => no se comprueba ningun username"
|
||||
output: "dict con email_candidates (lista de emails candidatos NO verificados, deduplicada y ordenada), username_hits (lista de {username, hits} con el resultado de enumerate_username_sites por username) y dorks (lista de dorks de busqueda tipo persona generados pero NO ejecutados)"
|
||||
tested: true
|
||||
tests: ["test_golden_compone_emails_usernames_y_dorks", "test_sin_dominios_usa_comunes", "test_sin_usernames_no_comprueba", "test_nombre_y_apellidos_vacios_lanza", "test_emails_deduplicados"]
|
||||
test_file_path: "python/functions/cybersecurity/enrich_person_passive_test.py"
|
||||
file_path: "python/functions/cybersecurity/enrich_person_passive.py"
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```python
|
||||
import sys, os
|
||||
sys.path.insert(0, os.path.join("python", "functions"))
|
||||
from cybersecurity import enrich_person_passive
|
||||
|
||||
res = enrich_person_passive(
|
||||
"Juan", "Perez",
|
||||
dominios=["organic-machine.com"],
|
||||
usernames=["jperez", "juanp"],
|
||||
)
|
||||
|
||||
print(res["email_candidates"]) # ['juan.perez@organic-machine.com', 'jperez@organic-machine.com', ...]
|
||||
for u in res["username_hits"]:
|
||||
print(u["username"], len(u["hits"])) # sitios publicos donde aparece cada username
|
||||
print(res["dorks"]) # dorks listos para pegar en un buscador (no se ejecutan aqui)
|
||||
```
|
||||
|
||||
## Cuando usarla
|
||||
|
||||
- Cuando arrancas la ficha OSINT de una persona y quieres una primera tanda de candidatos (emails probables, presencia de usernames, dorks) sin enviar nada al objetivo ni a su correo.
|
||||
- Antes de verificar manualmente: genera el espacio de candidatos para que despues confirmes cuales son reales.
|
||||
- Como paso pasivo previo a cualquier accion activa (que requeriria otra autorizacion y otras funciones).
|
||||
|
||||
## Gotchas
|
||||
|
||||
- **Uso solo para investigacion autorizada.** Generar candidatos sobre una persona sin base legitima puede vulnerar privacidad/leyes de proteccion de datos.
|
||||
- Los `email_candidates` son **candidatos NO verificados**: son permutaciones plausibles del nombre, NO emails confirmados. No asumas que existen ni los uses para envio.
|
||||
- Funcion IMPURA: `enumerate_username_sites` consulta servicios publicos por red, lo que **deja una huella minima** (requests a esos sitios). `build_search_dorks` y `guess_email_formats` son locales.
|
||||
- Los dorks se **generan pero NO se ejecutan** aqui: ejecutarlos en un buscador es un paso aparte y deja su propia huella.
|
||||
- Si no aportas `dominios`, se usan gmail.com/outlook.com como heuristica; ajusta la lista a los dominios reales del entorno de la persona para candidatos utiles.
|
||||
Reference in New Issue
Block a user