Source Code for network and port scanner, TRW algorithm, and reduction method implementations.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #Network Scan without reduction
  2. import ipaddress
  3. import json
  4. x = 20
  5. y = 60000
  6. deletevar = []
  7. newHash={}
  8. PATH = '/Users/Sara/Documents/Univ Classes/Investigacion/Programas/netflows.txt'
  9. myFile = open(PATH, 'r')
  10. ip = myFile.read()
  11. flow = json.loads(ip)
  12. def ipConversion(number, position):
  13. mystr = ''
  14. ipadd = (str(ipaddress.IPv4Address(number))).split(".") #Devuelve un arreglo
  15. for i in range(position+1):
  16. if i ==position:
  17. mystr = mystr + ipadd[i]
  18. else:
  19. mystr = mystr + ipadd[i] + '.'
  20. return mystr #devuelve los numeros en notacion string
  21. for i in flow["flows"]: #itera por cada elemento del diccionario de flows
  22. #Cambiar esto al unirlo con el trw
  23. if i['sip'] == 2291263257: #Este numero se lo dara el trw que verifica que sip son scanners
  24. dip = ipConversion(i['dip'], 0)
  25. host = ipConversion(i['dip'], 3)
  26. if dip in newHash and host not in newHash[dip]:
  27. newHash[dip].append(host)
  28. else:
  29. newHash[dip] = [host]
  30. #LO SIGUIENTE ESTA COMENTADO Y LO EXPLICO EN EL WORD
  31. # for k, v in newHash.items(): #itera por cada ip address y sus puertos
  32. # if len(v) >= 100:
  33. # #print ("something suspicious...")
  34. # continue
  35. # else: #Si no tiene una cantidad considerable de puertos, agrega el ip a una lista
  36. # if k in deletevar:
  37. # continue
  38. # else:
  39. # deletevar.append(k)
  40. #
  41. # for i in deletevar: #borra todos los elementos que estan en la lista deletevar
  42. # #del hash con todos los ip y sus puertos
  43. # newHash.pop(i)
  44. counter = 0 #Para contar total de elementos en el hash
  45. for k, v in newHash.items(): #imprime los destination ip address con sus puertos
  46. counter = counter+1
  47. #k = str(ipaddress.IPv4Address(k))
  48. print ("{}:{}".format(k,v))
  49. print (counter)
  50. print( "Done checking:")