Tenemos la librería shodan para realizar búsquedas desde Python utilizando su API. Por ejemplo si queremos hacer una búsqueda de equipos con windows XP, lo haríamos de esta forma: import shodan # introduce tu clave de API de Shodan API_KEY = "INSERTAR API" # crea una instancia del objeto API de Shodan api = shodan.Shodan(API_KEY) # realiza una búsqueda en Shodan por equipos con Windows XP instalado query = "Windows XP" results = api.search(query) # imprime información básica sobre los resultados de la búsqueda print(f"Se encontraron {results['total']} resultados:") for result in results['matches']: print(f"IP: {result['ip_str']}\nPuerto: {result['port']}\nOrganización: {result.get('org', 'N/A')}\n") Y este sería el output: {{pasted_image_20230413105044.png|}} Ahora por ejemplo vamos a buscar por vídeo cámaras: import shodan # introduce tu clave de API de Shodan API_KEY = "INSERTAR API" # crea una instancia del objeto API de Shodan api = shodan.Shodan(API_KEY) # realiza una búsqueda en Shodan por equipos por cámaras de vídeo query = "camera" results = api.search(query) # imprime información básica sobre los resultados de la búsqueda print(f"Se encontraron {results['total']} resultados:") for result in results['matches']: print(f"IP: {result['ip_str']}\nPuerto: {result['port']}\nOrganización: {result.get('org', 'N/A')}\n") Y este es el resultado: {{pasted_image_20230413105438.png|}} Incluso también podríamos exportar toda esta información a una hoja de excel usando la librería openpyxl: import shodan import openpyxl # introduce tu clave de API de Shodan API_KEY = "INSERTAR API" # crea una instancia del objeto API de Shodan api = shodan.Shodan(API_KEY) # realiza una búsqueda en Shodan por cámaras de vídeo query = "camera" results = api.search(query) # imprime información básica sobre los resultados de la búsqueda print(f"Se encontraron {results['total']} resultados:") for result in results['matches']: print(f"IP: {result['ip_str']}\nPuerto: {result['port']}\nOrganización: {result.get('org', 'N/A')}\n") wb = openpyxl.Workbook() sheet = wb.active # escribe las cabeceras de las columnas en la primera fila de la hoja de trabajo sheet.cell(row=1, column=1).value = "IP" sheet.cell(row=1, column=2).value = "Puerto" sheet.cell(row=1, column=3).value = "Organización" # escribe los resultados de la búsqueda en las filas siguientes for i, result in enumerate(results['matches']): sheet.cell(row=i+2, column=1).value = result['ip_str'] sheet.cell(row=i+2, column=2).value = result['port'] sheet.cell(row=i+2, column=3).value = result.get('org', 'N/A') # guarda el archivo de Excel wb.save("resultados_shodan.xlsx") wb.close() Y este es el resultado: {{pasted_image_20230413105706.png|}} También podríamos sacar sólo las direcciones IP, simplemente extrayendo eso del diccionario: import shodan # introduce tu clave de API de Shodan API_KEY = "INSERTAR API" # crea una instancia del objeto API de Shodan api = shodan.Shodan(API_KEY) # realiza una búsqueda en Shodan por equipos con Windows XP instalado query = "camera" results = api.search(query) # imprime información básica sobre los resultados de la búsqueda print(f"Se encontraron {results['total']} resultados:") for result in results['matches']: print(result['ip_str']) Y este es el resultado: {{pasted_image_20230413111212.png|}} Y estas direcciones IP también las podemos guardar en una hoja de excel: import shodan import openpyxl # introduce tu clave de API de Shodan API_KEY = "INSERTAR API" # crea una instancia del objeto API de Shodan api = shodan.Shodan(API_KEY) # realiza una búsqueda en Shodan por equipos con Windows XP instalado query = "camera" results = api.search(query) # imprime información básica sobre los resultados de la búsqueda print(f"Se encontraron {results['total']} resultados:") for result in results['matches']: print(result['ip_str']) wb = openpyxl.Workbook() sheet = wb.active # escribe las cabeceras de las columnas en la primera fila de la hoja de trabajo sheet.cell(row=1, column=1).value = "IP" # escribe los resultados de la búsqueda en las filas siguientes for i, result in enumerate(results['matches']): sheet.cell(row=i+2, column=1).value = result['ip_str'] # guarda el archivo de Excel wb.save("resultados_shodan_IP.xlsx") wb.close() Y lo tenemos todo en un excel: {{pasted_image_20230413111815.png|}}