Python - Ayuda con Python, Scapy y Procesos

 
Vista:
sin imagen de perfil

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con Python, Scapy y Procesos

Publicado por Yulexis (2 intervenciones) el 16/03/2018 15:36:24
En verdad nadie puede tirarme un cable? :( No lo creo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar