pyngscan – Un poco de scripting python para entornos hostiles

Algunas veces puede que estés en una maquina en la que no eres root, no tiene nmap instalado, no tiene salida a internete, … pero tienes python3 y ping.

En estos casos puedes crearte un script como este que se puede descargar desde aquí: pyngscan.tar

import sys,re,os

VERSION="0.1"
AUTHOR="Fanta"
EMAIL="fanta@56k.es"
DATE="20/03/2019"


def showHelp():
        print("Usage: "+sys.argv[0]+" IP\nExample: "+sys.argv[0]+" 192.168.1.1\n\n"+sys.argv[0]+" "+VERSION+" "+"("+DATE+") - "+AUTHOR+" <"+EMAIL+">")

def checkArguments():
        if len(sys.argv)==2:
                if re.match("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",sys.argv[1]):
                        return True

def ping(host):
        status=os.system("ping -c 1 -W 1 "+host+" > /dev/null 2>&1")
        if status == 0:
                print(host+"\tUP")

def checkMask24(host):
        for i in range(0,256):
                ip=re.search(r'\d{1,3}\.\d{1,3}\.\d{1,3}', host).group()+"."+str(i) 
                ping(ip)

if checkArguments():
        checkMask24(sys.argv[1])
else:
        showHelp()

Y de esa forma o modificando el script puedes por ejemplo ver que maquinas andan en esa red. En el script he creado una función llamada checkMask24 que solo comprobará con la IP que se le meta (por ejemplo la de la maquina en la que estás) pues los hosts con una mascara de 24.

A mi por ejemplo para encontrar la raspberry PI me sirve. Si se necesita escanear una mascara diferente se tendría que modificar esa función o crear una en base a lo que se necesite.

Muchas IPs lo mismo no responden a PING. Pero bueno, la idea es comprobar las que si lo hacen.

 

¿Le ha gustado el contenido?

Si le ha gustado y le ha sido de utilidad puede donar aquí https://paypal.me/mierdatv .  
También puede escribir un comentario si lo considera oportuno.  
 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *