obtener resultados negativos en bucle
Tengo problemas para identificar el problema exacto en mi código. Tengo dos funcionesinrange()
, que comprueba si un puerto está dentro del rango yfilt()
, que toma un archivo txt, busca las palabras clave "UDP" o "TCP", mira el puerto (justo después de la marca:) y comprueba si ese número está dentro del rango o no.
def inrange(file,character, num):
with open(file, 'r') as r:
for lines in r:
for key, value in sshd.items():
if character == key and character in lines:
if num in sshd.get(character):
return True
else:
return False
elif character == key and character in lines:
if num in sshd.get(character):
return True
else:
return False
Esto es específicamente para sshd por ahora.
def filt(file):
with open(file, 'r') as r:
for i, line in enumerate(r):
if "sshd" in line:
plusOne = i + 1
newline = line.strip()
splitIt = newline[7:22]
my_string = splitIt.split(":", 1)[1]
if inrange(file, "TCP", int(my_string)):
print("Line " + str(plusOne) + " is in range" + " " + my_string)
elif inrange(file, "UDP", int(my_string)):
print("Line " + str(plusOne) + " is in range" + " " + my_string)
else:
print("Not in range")
Ahora esto funciona si tengo esto como mi archivo de texto
Conexiones activas
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
como puede ver, UDP 123 está dentro del rango si mira el diccionariosshd
encima. Recibo una declaración verdadera a cambio. Si cambio UDP a TCP, me devuelve una declaración negativa. Eso funciona. El problema ocurre cuando agrego más de una línea a esto.
Active Connections
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
TCP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
TCP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
Vuelvo todos los resultados positivos:
Line 5 is in range 123
Line 6 is in range 123
Line 7 is in range 123
Line 8 is in range 123
lo cual no debería ser el caso, ya que la línea 6 y la línea 8 son TCP en el puerto 123, que no está dentro del rango. Siento que me falta algo claro aquí. No puedo entenderlo.