Ayuda con Python, Scapy y Procesos
Publicado por Yulexis (2 intervenciones) el 15/03/2018 18:05:59
Mis saludos a todos:
Después de varios días de romperme la cabeza debido a mi inexperiencia en Python, he decidido llegar a ustedes para pedirles ayuda.
Tengo el siguiente código que es un resumen del código original, pero que describe el problema que tengo:
# -------------- esta es la salida junto con el error que me da---------------------#
1) Iniciar captura.
99) Salir.
Seleccione opción >> 1
Obteniendo clientes datos
---------------------------------------------------------
AQUI SALEN TODOS LOS DATOS CAPTURADOS
^C1) Iniciar captura.
99) Salir.
Seleccione opción >> 99
Exception KeyError: KeyError(139842844690176,) in <module 'threading' from '/usr/lib64/python2.7/threading.pyc'> ignored
# ---------------------------------------------------------------------#
Explicando lo que me está pasando:
Cuando se escoge la opción 1, se lanza en un proceso aparte la función “sniff” de Scapy. Hasta aquí todo bien.
El problema viene dado cuando se presionan las teclas Ctrl+C para cerrar el proceso abierto para la captura. Simplemente no lo cierra, ese es el problema.
Cuando se selecciona la opción 99 para salir del programa, luego de haber lanzado el proceso, da el error que aparece en la salida anterior porque hay un proceso ejecutándose. Este error como se puede ver es ignorado por el sistema y se cierra el programa con todo y proceso, pero, si se vuelve a lanzar el proceso de captura en vez de salir con la opción 99, salen los datos dobles porque hay otro ejecutándose.
Bueno... espero aguien pueda ayudarme.
Después de varios días de romperme la cabeza debido a mi inexperiencia en Python, he decidido llegar a ustedes para pedirles ayuda.
Tengo el siguiente código que es un resumen del código original, pero que describe el problema que tengo:
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
#!/user/bin/env python2
# -*- coding: utf-8 -*-
from multiprocessing import Process
from scapy.all import *
import signal
def captura (pkt):
pkt.summary()
def signal_handler(signal, frame):
proceso_sniff.terminate()
Menu_Inicio()
def Iniciar_Sniff ():
sniff(iface='mon0', prn=captura)
def Menu_Inicio ():
global proceso_sniff
print ('1)' + ' Iniciar captura.')
print ('99) Salir.')
global opcion
opcion = int(input("Seleccione opción >> "))
if opcion == 1:
print ('Obteniendo datos')
print ('---------------------------------------------------------')
proceso_sniff = Process(target=Iniciar_Sniff)
proceso_sniff.start()
signal.signal(signal.SIGINT, signal_handler)
if opcion == 99:
sys.exit()
Menu_Inicio()
# -------------- esta es la salida junto con el error que me da---------------------#
1) Iniciar captura.
99) Salir.
Seleccione opción >> 1
Obteniendo clientes datos
---------------------------------------------------------
AQUI SALEN TODOS LOS DATOS CAPTURADOS
^C1) Iniciar captura.
99) Salir.
Seleccione opción >> 99
Exception KeyError: KeyError(139842844690176,) in <module 'threading' from '/usr/lib64/python2.7/threading.pyc'> ignored
# ---------------------------------------------------------------------#
Explicando lo que me está pasando:
Cuando se escoge la opción 1, se lanza en un proceso aparte la función “sniff” de Scapy. Hasta aquí todo bien.
El problema viene dado cuando se presionan las teclas Ctrl+C para cerrar el proceso abierto para la captura. Simplemente no lo cierra, ese es el problema.
Cuando se selecciona la opción 99 para salir del programa, luego de haber lanzado el proceso, da el error que aparece en la salida anterior porque hay un proceso ejecutándose. Este error como se puede ver es ignorado por el sistema y se cierra el programa con todo y proceso, pero, si se vuelve a lanzar el proceso de captura en vez de salir con la opción 99, salen los datos dobles porque hay otro ejecutándose.
Bueno... espero aguien pueda ayudarme.
Valora esta pregunta
0