PortHound new-generation network scanner built on wsbuilder.
Project description
PortHound
PortHound es un escaner de red en Python para auditorias autorizadas. Esta version usa wsbuilder como base HTTP/WebSocket y organiza el proyecto en modos master, agent y standalone.
Sitio oficial: https://porthound.jorgelsc.dev
Repositorio: https://github.com/jorgelsc-dev/porthound
Distribucion PyPI: porthound
Comando principal: porthound
Palabras clave: python, network-scanner, port-scanner, cybersecurity, banner-grabbing, sqlite, websocket, master/agent.
Resumen
- Escaneo TCP, UDP, ICMP y SCTP.
- Banner grabbing con reglas y probes por servicio.
- Persistencia local en SQLite.
- API HTTP y WebSocket.
- Frontend opcional en Vue 3.
- Documentacion publica en GitHub Pages.
Documentacion
- Sitio publico: porthound.jorgelsc.dev
- Este README es la fuente de verdad del proyecto.
- La documentacion publica replica este contenido en forma de landing page.
- El repositorio mantiene solo los archivos necesarios para codigo, build, despliegue y soporte.
Flujo de ramas
main: rama estable y publica.develop: integracion y trabajo continuo.feature/*: nuevas funciones o cambios grandes.fix/*: correcciones.docs/*: cambios de documentacion.chore/*: mantenimiento.
Reglas:
- El trabajo normal entra por ramas auxiliares.
developintegra cambios antes de publicar.mainqueda para releases y estado estable.- Los paquetes se publican desde
maino desde un release tag.
Requisitos
- Python 3.12 o superior.
wsbuilder>=0.17.7.- Puertos de red abiertos entre nodos si usas
masteryagent.
Instalacion
Desde PyPI
python3 -m pip install porthound
Entorno local
python3 -m venv env
env/bin/python -m pip install --upgrade pip
env/bin/python manage.py
Inicio rapido
1. Arrancar el master
env/bin/python manage.py --role master --db-path Master.db
Valores por defecto:
host:127.0.0.1port:45678db:Master.db
2. Usar la interfaz local
- UI/API:
http://127.0.0.1:45678 - Vista de agentes:
http://127.0.0.1:45678/cluster/agents/
3. Conectar un agente
env/bin/python manage.py '<BASE64_DEL_MASTER>'
La cadena base64 contiene la credencial de enrolamiento generada por el master.
Modos de ejecucion
Master
porthound --role master --host 0.0.0.0 --port 45678 --db-path ./Master.db
Agent
porthound --role agent --master http://127.0.0.1:45678 --agent-id <id> --agent-token <token>
Standalone
- Usa
manage.pysin enrolamiento si solo quieres correr el stack local. - El modo standalone conserva la base local del rol y no depende de un master remoto.
Escaneo
Protocolos
tcp: escaneo de puertos y banners.udp: escaneo de puertos y banners.icmp: descubrimiento de host.sctp: escaneo cuando el runtime soporta sockets SCTP.
Rangos
common: 1-1023not_common: 1024-65534full: 1-65534
Notas
timesleepajusta la velocidad del scan.- El estado de progreso se guarda en SQLite para permitir reanudacion.
GET /protocols/muestra los protocolos activos en runtime.
Banner grabbing
- Se usan probes especificos por servicio y un fallback generico.
- Las respuestas se guardan en la tabla
banners. - TCP y UDP usan rutas de procesamiento separadas.
- El flow intenta parar pronto cuando ya hay suficientes respuestas utiles.
API y WebSocket
- WebSocket:
ws://HOST:PORT/ws/ - HTTP API: disponible desde el mismo servidor.
- La API controla scans, agentes y vistas de estado.
Comportamientos comunes:
- Texto: eco.
- Binario: eco con prefijo.
- Mensajes con alias pueden registrarse en SQLite para demo/chat.
Datos y persistencia
- Los datos de reglas y mapas viven en
data/. - La DB por defecto del master es
Master.db. - La DB del agente usa
Agent.db. - La DB standalone usa
Standalone.db.
Empaquetado
Debian
./packaging/deb/build.sh
sudo apt install ./dist/deb/porthound_<version>-1_all.deb
ZIP
./packaging/zip/build.sh
unzip dist/zip/porthound_<version>-1.zip
cd porthound_<version>-1
python3 manage.py
Despliegue
- GitHub Pages publica la documentacion en
https://porthound.jorgelsc.dev. - El dominio usa
docs/como raiz publica del sitio. docs/index.htmles la landing del proyecto.
Responsabilidad
PortHound solo debe usarse en sistemas propios o con autorizacion explicita. El uso no autorizado puede violar politicas internas y leyes locales.
Estructura
manage.py: launcher principal.master.py: arranque del nodo master.agent.py: arranque del nodo agent.server.py: API de escaneo.app.py: aplicacion base.data/: datasets.docs/: sitio publico.packaging/: scripts de.deby.zip.
Soporte
- Issues: https://github.com/jorgelsc-dev/porthound/issues
- Licencia: MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file porthound4-0.2.0.tar.gz.
File metadata
- Download URL: porthound4-0.2.0.tar.gz
- Upload date:
- Size: 3.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93a4f4f72a2c21fe52ed4bf569d3ed09576e7bdef5bffdbd7d2158a0fd85360d
|
|
| MD5 |
5ece8ed9ec241b8a7b0da6ed7e55b45b
|
|
| BLAKE2b-256 |
73023993e57535c6c8f6dbd1175212b9a74fe03dee4c1c76166fdeee012fb013
|
Provenance
The following attestation bundles were made for porthound4-0.2.0.tar.gz:
Publisher:
pypi.yml on jorgelsc-dev/porthound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
porthound4-0.2.0.tar.gz -
Subject digest:
93a4f4f72a2c21fe52ed4bf569d3ed09576e7bdef5bffdbd7d2158a0fd85360d - Sigstore transparency entry: 1656620493
- Sigstore integration time:
-
Permalink:
jorgelsc-dev/porthound@24cc2f1e9f4ea522aaa5dcb9348fd833846ec981 -
Branch / Tag:
refs/heads/pypi-porthound4 - Owner: https://github.com/jorgelsc-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@24cc2f1e9f4ea522aaa5dcb9348fd833846ec981 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file porthound4-0.2.0-py3-none-any.whl.
File metadata
- Download URL: porthound4-0.2.0-py3-none-any.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98186649259d07a94ef5eddeb644899bbccf28ef5fa13c12379ddc2f45fedc95
|
|
| MD5 |
8180e5dbb68efcf50f0e0e445d8de0de
|
|
| BLAKE2b-256 |
d9589a3dd4610851d0516acf766d367e745fbbaacb1a364d10e3681fc6325df7
|
Provenance
The following attestation bundles were made for porthound4-0.2.0-py3-none-any.whl:
Publisher:
pypi.yml on jorgelsc-dev/porthound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
porthound4-0.2.0-py3-none-any.whl -
Subject digest:
98186649259d07a94ef5eddeb644899bbccf28ef5fa13c12379ddc2f45fedc95 - Sigstore transparency entry: 1656620577
- Sigstore integration time:
-
Permalink:
jorgelsc-dev/porthound@24cc2f1e9f4ea522aaa5dcb9348fd833846ec981 -
Branch / Tag:
refs/heads/pypi-porthound4 - Owner: https://github.com/jorgelsc-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@24cc2f1e9f4ea522aaa5dcb9348fd833846ec981 -
Trigger Event:
workflow_dispatch
-
Statement type: