sweep_ping.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import sys
  2. import subprocess as sp
  3. from threading import Thread
  4. class pingThread(Thread):
  5. def __init__(self, ip = '127.0.0.1'):
  6. Thread.__init__(self)
  7. self.ip = ip
  8. def run(self):
  9. result = sp.run(['ping', '-c 1', self.ip], capture_output=True)
  10. if (result.returncode != 0):
  11. self.ip = None
  12. def sweep_ping(address = '127.0.0.1', mask = '255.255.255.0'):
  13. hosts = []
  14. ping = []
  15. a1, a2, a3, a4 = address.split('.')
  16. m1, m2, m3, m4 = mask.split('.')
  17. for i1 in range(0, 256 - int(m1)):
  18. for i2 in range(0, 256 - int(m2)):
  19. for i3 in range(0, 256 - int(m3)):
  20. for i4 in range(0, 256 - int(m4)):
  21. t1 = (int(a1) + i1) % 256
  22. t2 = (int(a2) + i2) % 256
  23. t3 = (int(a3) + i3) % 256
  24. t4 = (int(a4) + i4) % 256
  25. ip = f'{t1}.{t2}.{t3}.{t4}'
  26. ping.append(pingThread(ip))
  27. ping[-1].start()
  28. #print (ip)
  29. for p in ping:
  30. p.join()
  31. if p.ip:
  32. hosts.append(p.ip)
  33. return (hosts)
  34. def main():
  35. hosts = sweep_ping(sys.argv[1], sys.argv[2])
  36. for h in hosts:
  37. print (h)
  38. if __name__ == "__main__":
  39. main()