#Network Scan without reduction import ipaddress import json x = 20 y = 60000 deletevar = [] newHash={} PATH = '/Users/Sara/Documents/Univ Classes/Investigacion/Programas/netflows.txt' myFile = open(PATH, 'r') ip = myFile.read() flow = json.loads(ip) def ipConversion(number, position): mystr = '' ipadd = (str(ipaddress.IPv4Address(number))).split(".") #Devuelve un arreglo for i in range(position+1): if i ==position: mystr = mystr + ipadd[i] else: mystr = mystr + ipadd[i] + '.' return mystr #devuelve los numeros en notacion string for i in flow["flows"]: #itera por cada elemento del diccionario de flows #Cambiar esto al unirlo con el trw if i['sip'] == 2291263257: #Este numero se lo dara el trw que verifica que sip son scanners dip = ipConversion(i['dip'], 0) host = ipConversion(i['dip'], 3) if dip in newHash and host not in newHash[dip]: newHash[dip].append(host) else: newHash[dip] = [host] #LO SIGUIENTE ESTA COMENTADO Y LO EXPLICO EN EL WORD # for k, v in newHash.items(): #itera por cada ip address y sus puertos # if len(v) >= 100: # #print ("something suspicious...") # continue # else: #Si no tiene una cantidad considerable de puertos, agrega el ip a una lista # if k in deletevar: # continue # else: # deletevar.append(k) # # for i in deletevar: #borra todos los elementos que estan en la lista deletevar # #del hash con todos los ip y sus puertos # newHash.pop(i) counter = 0 #Para contar total de elementos en el hash for k, v in newHash.items(): #imprime los destination ip address con sus puertos counter = counter+1 #k = str(ipaddress.IPv4Address(k)) print ("{}:{}".format(k,v)) print (counter) print( "Done checking:")