Hace algun tiempo en BlackHat presentaron un código que hacía ping a un número restringido de IPs escrito en Python el cual a mí me pareció que se podía mejorar mucho y me dediqué a escribir una versión mejorada que permite hacer ping por rango.
Este código se puede ejecutar de la siguiente manera
En Linux: luego de darle permisos de ejecución, tecleamos en el terminal:
$ ./ipPinger.py 10.208.0.0 10.208.10.5
y el programa hara ping a acada una de las IPs en el rango especificado
En Windows:
> python ipPinger.py 10.208.0.0 10.208.10.5
y se obtiene el mismo resultado
Cualquier duda pueden preguntar sin pena.
#!/usr/bin/env python
import os
import sys
def Acarreo(IP, iByte = 3):
if iByte == -1:
return IP
if IP[iByte] > 255:
IP[iByte] = 0
IP[iByte-1] = IP[iByte-1] + 1
Acarreo(IP, iByte - 1)
return IP
def GenerarRango(StartIP, EndIP):
#verificar que StartIP es menor que EndIP
StartIP = map(int,StartIP.split('.'))
EndIP = map(int,EndIP.split('.'))
for i in range(0,4):
if StartIP[i] > EndIP[i]:
#swap values
StartIP , EndIP = EndIP, StartIP
break
rango = []
while not( StartIP[0] == EndIP[0] and \
StartIP[1] == EndIP[1] and \
StartIP[2] == EndIP[2] and \
StartIP[3] == EndIP[3] ):
#acarreo de suma
StartIP = Acarreo(StartIP)
rango.append(str(StartIP[0])+"."+str(StartIP[1])+"."+str(StartIP[2])+"."+str(StartIP[3]))
StartIP[3] = StartIP[3] + 1
return rango
for ip in GenerarRango(sys.argv[1],sys.argv[2]):
os.system("ping "+ip)
2 comentarios:
hola muy interesante la aplicacion, sirve de mucho, sin embargo creo que tiene un error en la ultima parte, ya que si lo ejecutamos asi se quedara en la primera ip, se puede solucionar añadiendo al comando ping -c 3 donde 3 es el numero de veces que mandara los paquetes... quedara algo asi
for ip in GenerarRango(sys.argv[1],sys.argv[2]):
os.system("ping -c 3 "+ip)
Gracias hermano me servido tu codigo para algo bueno, mas adelante subire el proyecto completo.
Publicar un comentario