👹ESCANEO DE PUERTOS P4IINmap.py
// Some code
```python
#!programa para analisi de comucacion con puertos - P4INmap.py - By P4IM0N
#---------------------------------------------------------------------------------
#!INSTALACION DE LIBRERIAS NECESARIAS:
# pip install tabulate
# pip install nmap-python
#---------------------------------------------------------------------------------
import nmap
from tabulate import tabulate as tabla
#---------------------------------------------------------------------------------
# Definir códigos de escape ANSI para colores
RED = "\033[91m"
GREEN = "\033[92m"
YELLOW = "\033[93m"
BLUE = "\033[94m"
MAGENTA = "\033[95m"
CYAN = "\033[96m"
RESET = "\033[0m"
#---------------------------------------------------------------------------------
banner = f'''
__________ _____ .___ _______
\______ \/ | || |\ \ _____ _____ ______
| ___/ | || |/ | \ / \|__ \ \____ \
| | / ^ / / | \ Y Y \/ __ \| |_> >
|____| \____ ||___\____|__ /__|_| (____ / __/
|__| \/ \/ \/|__|
{MAGENTA}By P4IM0N{RESET}'''
print(banner)
print(f'{BLUE}++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{RESET}')
#---------------------------------------------------------------------------------
def main():
informacion_escaneo_tabla = []
detalles_puertos_tabla = []
detalles_scripts_tabla = []
while True:
nmap_iniciado = nmap.PortScanner()
objetivo = input('Manito dame la ip o el domimnio a escanear: ')
print(f'{BLUE}++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{RESET}')
opciones_de_escaneo = input('Manito dame ahora los argumentos que uso para escanear?: ejem(-sV, -O): ')
print(f'{BLUE}++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{RESET}')
puertos = input('Manito ingresa entre qu puerto quieres que agamos el escaneo?: ejem(22-500): ')
print(f'{BLUE}++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{RESET}')
nmap_iniciado.scan(objetivo, puertos, arguments=opciones_de_escaneo)
if objetivo in nmap_iniciado.all_hosts():
informacion_escaneo_tabla.append(['HOST', objetivo])
informacion_escaneo_tabla.append(['ESTADO', nmap_iniciado[objetivo].state()])
direccion_ipv4 = nmap_iniciado[objetivo]['addresses']['ipv4']
informacion_escaneo_tabla.append(['DIRECCIO ipv4', direccion_ipv4])
if 'ipv6' in nmap_iniciado[objetivo]['addresses']:
direccion_ipv6 = nmap_iniciado[objetivo]['addresses']['ipv6']
informacion_escaneo_tabla.append(['DIRECCIO ipv6', direccion_ipv6])
if 'osclass' in nmap_iniciado[objetivo]:
informacion_escaneo_tabla.append(['SISTEMA OPERATIVO', f"{nmap_iniciado[objetivo]['osclass'][0]['osfamily']} {nmap_iniciado[objetivo]['osclass'][0]['osgen']}"])
else:
informacion_escaneo_tabla.append(['SISTEMA OPERATIVO', 'No disponible'])
for protocol in nmap_iniciado[objetivo].all_protocols():
informacion_escaneo_tabla.append(['PROTOCOLO', protocol])
if protocol in nmap_iniciado[objetivo]:
lista_puertos = list(nmap_iniciado[objetivo][protocol].keys())
lista_puertos.sort()
for puerto in lista_puertos:
informacion_de_puertos = nmap_iniciado[objetivo][protocol][puerto]
detalles_puertos_tabla.append([f'PUERTO {puerto}', informacion_de_puertos['state']])
detalles_puertos_tabla.append([f'NOMBRE DEL SERVICIO', informacion_de_puertos['name']])
detalles_puertos_tabla.append([f'PRODUCTO', informacion_de_puertos['product']])
detalles_puertos_tabla.append([f'VERSION', informacion_de_puertos['version']])
detalles_puertos_tabla.append([f'RAZON', informacion_de_puertos['reason']])
#informacion_escaneo_tabla.append(['SERVICIOS', tabla(detalles_puertos_tabla, ['DETALLES','VALORES'], tablefmt=f'grid')])
tabla_de_puertos = tabla(detalles_puertos_tabla, ['DETALLES','VALORES'], tablefmt=f'grid')
tabla_de_puertos_coloreada = f'{RED}{tabla_de_puertos}{RESET}'
informacion_escaneo_tabla.append(['SERVICIOS', tabla_de_puertos_coloreada])
if 'scripts' in nmap_iniciado[objetivo]:
for script in nmap_iniciado[objetivo]['scripts'].items():
detalles_scripts_tabla.append(['SCRIPT ID', script])
detalles_scripts_tabla.append(['SCRIPT SALIDA', script['output']])
informacion_escaneo_tabla.append(['SCRIPTS NMAP', tabla(detalles_scripts_tabla, ['DETALLE','VALOR'], tablefmt='grid')])
else:
informacion_escaneo_tabla.append(['HOST', objetivo])
informacion_escaneo_tabla.append(['ESTADO', 'ESCANEO NO ENCONTRO RESULTADO MANITO'])
return tabla(informacion_escaneo_tabla, ['DETALLES', 'VALORES'],tablefmt='grid')
#---------------------------------------------------------------------------------
if __name__=='__main__':
try:
print(main())
except nmap.PortScannerError as error:
print(f'Manito ocurrio un erro en nmap: {error}')
except KeyboardInterrupt:
print('manito se cerro el programa corretamente')
exit()
#---------------------------------------------------------------------------------
```
Last updated