
Problema con llamada recursiva a una funcion
Publicado por anonymous (2 intervenciones) el 29/09/2015 19:19:53
Buenas tardes!
Estoy haciendo un pequeño programa con la intención de evitar el ARP Spoofing o al menos intentarlo, a la vez que aprendo este lenguaje.
El problema lo tengo con estas dos funciones: listador() y comprobador().
Resumidamente la primera retorna una lista de MAC's: mac_list que es parámetro de la siguiente función: comprobador(mac_list) que recorre la lista de MAC's buscando dos o más iguales.
Mi intención es que al acabar la ejecución de la ultima se llame a la primera listador() (lo cual sucede sin problemas), pero el programa termina al acabar de ejecutarla en vez de continuar con comprobador() y así inifinítamente como pretendo.
¿Cómo puedo hacer que después de volver a listador() siga a comprobador()?
Adjunto el código, muchas gracias de antemano!
¡Un saludo a todos!
Estoy haciendo un pequeño programa con la intención de evitar el ARP Spoofing o al menos intentarlo, a la vez que aprendo este lenguaje.
El problema lo tengo con estas dos funciones: listador() y comprobador().
Resumidamente la primera retorna una lista de MAC's: mac_list que es parámetro de la siguiente función: comprobador(mac_list) que recorre la lista de MAC's buscando dos o más iguales.
Mi intención es que al acabar la ejecución de la ultima se llame a la primera listador() (lo cual sucede sin problemas), pero el programa termina al acabar de ejecutarla en vez de continuar con comprobador() y así inifinítamente como pretendo.
¿Cómo puedo hacer que después de volver a listador() siga a comprobador()?
Adjunto el código, muchas gracias de antemano!
¡Un saludo a todos!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def listador(): # Crea una lista con las macs encontradas en la tabla arp
os.system("arp -a > /home/arp_directory/current")
entry = open("/home/arp_directory/current", "r")
test = (entry.read())
array = string.split(test)
lon = len(array)
if lon > 6: # 6 es el tamano de ARP cuando tiene solo una linea ( 1 MAC )
mac_list = []
control = lon
while control != 0: # Se crea una lista con las MAC encontradas
mac = array[control - 4]
mac_list.append(mac)
control = control - 7
entry.close()
return mac_list
mac_list = listador()
def comprobador(mac_list): # Comprueba que no haya dos MACs iguales en ARP
for variable in mac_list:
equi = 0
for variable2 in mac_list:
if variable == variable2:
equi = equi + 1
if equi > 1:
print "HAY ENVENAMIENTO DE LA TABLA DE ARP"
os.system("cat /home/arp_directory/current >> /home/arp_directory/arpdatabase")
else:
time.sleep(30)
listador()
comprobador(mac_list)
Valora esta pregunta


0