
un toolkit OSINT pasivo en python: nombres de usuario, correos electrónicos, dominios, ips, teléfonos, hashes. sin claves, sin inicios de sesión.
Un kit de herramientas OSINT pasivo en Python. Sin claves de API, sin cuentas, sin registros en ningún sitio. Apúntalo a un handle, un correo, un dominio, una IP, un número de teléfono o un hash y escarba en lo que ya es público.

Seis módulos, todos leyendo endpoints públicos:
| Módulo | Qué obtienes |
|---|---|
username | rastrea un handle por ~700 sitios (el dataset de WhatsMyName), actualizándose en vivo conforme llegan los aciertos |
email | sintaxis, MX, comprobación de desechable, gravatar, y luego la parte antes de la @ como nombre de usuario |
domain | A/AAAA/MX/NS/TXT/CNAME, estado http y título, subdominios desde certificate transparency, whois |
ip | geo + ASN, dns inverso, escaneo opcional de puertos comunes |
phone | validez, operadora, región, tipo de línea, zona horaria |
hash | identificación de longitud/charset |
scan | escaneo rápido de puertos TCP con captura de banners, impulsado por el núcleo en C++ |
Nada de esto toca nada privado. Todo es DNS, WHOIS, endpoints de perfiles públicos y registros de certificados.
El barrido de nombres de usuario funciona con data/wmn-data.json - el dataset comunitario de WhatsMyName, ~700 sitios con una regla de comprobación cada uno (código de estado más una cadena que debe, y no debe, estar presente). Cambia por una copia más nueva en cualquier momento dejándola encima del archivo; la herramienta lo lee al arrancar. Si falta, recurre a una pequeña lista integrada.
Acota un barrido con --cat:
python higernes.py username vqkro --cat social
python higernes.py username vqkro --cat gaming
Ejecútalo sin --cat y golpea todo.
El escáner de puertos es demasiado lento en Python, así que el trabajo pesado vive en core/hcore.cpp - un pequeño binario independiente que hace escaneos de conexión con hilos, captura de banners y resolución de nombres de host. higernes.py lo busca junto a sí mismo (o en core/, o en el PATH) y lo invoca; si no está, el escaneo ip --ports recurre silenciosamente a la versión pura en Python, más lenta.
Compílalo (solo necesario si ejecutas desde el código fuente y quieres la vía rápida):
# windows (mingw g++)
g++ -O2 -std=c++17 -static -o core/hcore.exe core/hcore.cpp -lws2_32
# linux / macOS
g++ -O2 -std=c++17 -o core/hcore core/hcore.cpp -pthread
Ejecútalo directamente si quieres:
hcore dns github.com
hcore ports example.com --banners
hcore ports example.com --all --threads 1024
El .exe precompilado en la página de Releases ya tiene el núcleo incorporado.
Necesita Python 3.9 o superior.
Cualquier SO
pip install -r requirements.txt
Eso instala rich, requests, dnspython y aiohttp. phonenumbers también está ahí pero solo lo necesita el módulo phone - quítalo del archivo y el resto sigue funcionando. Sin aiohttp el barrido de nombres de usuario recurre a hilos, que es mucho más lento (decenas de segundos frente a cientos).
Windows (PowerShell, si python aún no está en el PATH)
winget install --id Python.Python.3.13 -e
git clone https://gitlab.com/jankoboy88/higernes
cd higernes
pip install -r requirements.txt
python higernes.py
Linux / macOS
git clone https://gitlab.com/jankoboy88/higernes
cd higernes
python3 -m pip install -r requirements.txt
python3 higernes.py
FreeBSD
pkg install -y python3
git clone https://gitlab.com/jankoboy88/higernes
cd higernes
python3 -m pip install -r requirements.txt
Si pip se queja de un entorno gestionado externamente, usa un venv:
python3 -m venv .venv && . .venv/bin/activate && pip install -r requirements.txt
o pasa --break-system-packages.
Ejecútalo sin más y obtienes el menú. O ve directamente a un módulo:
python higernes.py username vqkro
python higernes.py username vqkro --cat coding
python higernes.py email [email protected]
python higernes.py domain example.com
python higernes.py ip 1.1.1.1 --ports
python higernes.py phone +14155552671
python higernes.py hash 5f4dcc3b5aa765d61d8327deb882cf99
python higernes.py scan example.com
python higernes.py scan example.com --all
La pantalla es todo spinners en vivo y tablas coloreadas; el logotipo de texto se dibuja solo al arrancar.
dnspython y requests son muy recomendables. Sin dnspython solo se resuelve el registro A (usando la stdlib) y se omiten todos los demás tipos de registro.¿Sin Python en la máquina de destino? Empaquétalo:
pip install pyinstaller
pyinstaller --onefile --name higernes --console higernes.py
# -> dist/higernes.exe
Así se hace el binario de la página de Releases. Nada más que configurar.
MIT. Ver LICENSE.