A diferencia de otras de herraminetas SHODAN IP no usa una API, permite realizar consultas avanzadas a Shodan para extraer direcciones IP y puertos asociados, filtrando resultados por parámetros específicos.
❗Nota: regule la cantidad de puertos a filtrar ya que dependerá el tiempo de espera para las IP. Por defecto son 60 segundos, puede cambiarlo en
timeout=<Time>
El script recibe varios argumentos para personalizar la consulta:
-
--query_base
: Define la consulta(query) base para Shodan. -
--facet
: Filtra los resultados usando "facets" específicos (e.g., port, ip, etc.). -
--port
: Especifica los puertos a buscar, separados por comas. -
-o
,--output
: Archivo donde guardar los resultados (IP:PORT). -
-fh
,--facet_help
: Muestra las opciones válidas para usar "facets" desde un archivo YAML.
A. Validación Inicial
- Si usa
-fh
,--facet_help
, lee el archivofacets.yaml
, muestra las opciones en formato tabular y terminal.
python3 shodanip.py -fh
B. Validación de Puertos
- Si se proporciona
--port
, verifica que sea una entrada válida (números separados por comas)
C. Realización de Consultas
-
El script construye consultas para Shodan con base en los argumentos dados.
-
Para cada consulta, envía una solicitud
GET
a la URL de Shodan, analizando la respuesta HTML para extraer:- IP y puerto(s)
- Resultados relacionados (cuando no se usa el argumento
--port
).
D. Manejo de Resultados
- Si no se especifica un archivo de salida (
-o
,--output
), muestra los resultados en formato JSON en la consola. De lo contrario se guardarán en un archivo de texto plano.
git clone https://github.com/4D7220426C7565/Shodan-IP.git; cd Shodan-IP && pip install -r requirements.txt
- Consulta básica sin puertos:
python3 shodanip.py --query_base "\"Set-Cookie: mongo-express=\" \"200 OK\"" --facet port
- Consulta específica por puertos:
python3 shodanip.py --query_base "\"Set-Cookie: mongo-express=\" \"200 OK\"" --facet ip --port <port>
- Exportar resultados a un archivo:
python3 shodanip.py --query_base "\"Set-Cookie: mongo-express=\" \"200 OK\"" --facet ip --port <port> -o <file>