########################################################### # Port Scanner # Cuenta total de puertos desinatarios por cada sip # Despliega lista de puertos por cada destination ip ############################################################ from silk import * startDate = "2009/04/20" endDate = "2009/04/22" minPort = 20 maxPort = 60000 counter = 0 def UltimoAnalisis(): sampleHash = {} flow_Counter = 0 for filename in FGlob(classname="all", type="all", start_date=startDate, end_date=endDate, site_config_file="/data/silk.conf", data_rootdir="/data"): for rec in silkfile_open(filename, READ):#reading the flow file flow_Counter +=1 dport = rec.dport posA = str(rec.dip) # print posA, dport if (dport >= 1 and dport < minPort) or dport > maxPort: #verifica que sean puertos validos (creo que se dice asi) # print "Im here" continue else: # Como es el caso de la ultima busqueda, se agrega una lista de los puertos if posA in sampleHash: sampleHash[posA].append(dport) else: sampleHash[posA] = [dport] #print sampleHash #print flow_Counter return sampleHash dip_hash = UltimoAnalisis() #print dip_hash otherHash = {} #Se borra el hash para agregar elementos nuevos con la nueva etapa de la busqueda for dips, dports in dip_hash.items(): if len(dports)>= 100: #si la cantidad de puertos es mayor o igual a 100, nos interesan #y por lo tanto se guardan en un hash otherHash[dips] = dports for dips, dports in otherHash.items(): counter +=1 #para contar los elementos del hash #print otherHash #print counter