|
|
|
|
32
|
return mystr #devuelve los numeros en notacion string
|
32
|
return mystr #devuelve los numeros en notacion string
|
33
|
|
33
|
|
34
|
|
34
|
|
35
|
-def AnalisisReduciendo(flowHash, num):
|
|
|
|
|
35
|
+def AnalisisReduciendo(sipList, num):
|
36
|
connection = [0] * 2 #Lista para contener los valores de conecciones fallidas y conecciones buenas
|
36
|
connection = [0] * 2 #Lista para contener los valores de conecciones fallidas y conecciones buenas
|
37
|
for i in flow["flows"]: #itera por cada elemento del diccionario de flows
|
37
|
for i in flow["flows"]: #itera por cada elemento del diccionario de flows
|
38
|
- dip = ipConversion(i["sip"], num) #Devuelve el ip en notacion punto-decimal
|
|
|
|
|
38
|
+ sip = ipConversion(i["sip"], num) #Devuelve el ip en notacion punto-decimal
|
39
|
flags = i["tcpflags"].split(",") #array of all tcp flags that are set
|
39
|
flags = i["tcpflags"].split(",") #array of all tcp flags that are set
|
40
|
- if num != 0 and ipConversion(i["sip"], num-1) not in flowHash: #Si en el paso anterior se vio que no
|
|
|
|
|
40
|
+ if num != 0 and ipConversion(i["sip"], num-1) not in sipList: #Si en el paso anterior se vio que no
|
41
|
#tiene el length de puertos requerido, se ignora
|
41
|
#tiene el length de puertos requerido, se ignora
|
42
|
continue
|
42
|
continue
|
43
|
else:
|
43
|
else:
|
|
|
|
|
56
|
return ratioHash
|
56
|
return ratioHash
|
57
|
|
57
|
|
58
|
while myNum <4: #Se itera las cuatro veces de acuerdo con la notacion de ipv4
|
58
|
while myNum <4: #Se itera las cuatro veces de acuerdo con la notacion de ipv4
|
59
|
- flowHash= AnalisisReduciendo(otherHash, myNum)
|
|
|
60
|
- otherHash = {} #Se borra el hash para agregar elementos nuevos con la nueva etapa de la busqueda
|
|
|
61
|
- for sip, dipHash in flowHash.items(): #se itera por todos los dip y sus counters o puertos
|
|
|
62
|
- if (dipHash['dip'][0] / dipHash['dip'][1]) < 0: #si la cantidad de succesful
|
|
|
63
|
- #connections es mas que failed connections
|
|
|
|
|
59
|
+ sip_hash= AnalisisReduciendo(sipList, myNum)
|
|
|
60
|
+ sipList = [] #Se borra el hash para agregar elementos nuevos con la nueva etapa de la busqueda
|
|
|
61
|
+ for sip in reduced_sip: #se itera por todos los sip
|
|
|
62
|
+ if (ratioHash[sip][0] / ratioHash[sip][1]) < 1: #si la cantidad de succesful
|
|
|
63
|
+ #b #g #connections es mas que failed connections
|
64
|
#not scanner, ignore
|
64
|
#not scanner, ignore
|
65
|
- else if (dipHash['dip'][0] / dipHash['dip'][1]) < p:
|
|
|
66
|
- #not scanner, ignore
|
|
|
67
|
- else:
|
|
|
|
|
65
|
+ elif (ratioHash[sip][0] / ratioHash[sip][1]) < p: #mas failed que succesful, pero no llega al threshold
|
|
|
66
|
+ #not scanner, ignore #se debe tener en cuenta que es suspicious pero no taaanto
|
|
|
67
|
+ else: #el ratio de failed a succesful llega al threshold pautado
|
68
|
#scanner, oh oh
|
68
|
#scanner, oh oh
|
|
|
69
|
+ sipList.append(sip)
|
|
|
70
|
+
|
69
|
|
71
|
|
70
|
|
72
|
|
71
|
myNum += 1
|
73
|
myNum += 1
|