1

I would like to know in any way that i can run a function as a background process. I have gone through reading threading but i am still unclear on how to implement it. In my system , the scapy detection script run when i click on the Button.But then the system will be hang as the scapy function is running.

What i want to achieve is that when i click on the button that initiate the scapy detection script , i would like to be able to do other function in the same system.(general idea was to prevent the system from hang)

def startMonitor(self,event):       
        selectedInterface = self.interfaces_cblist.GetValue()
        #selectInterfaceStr = str(selectedInterface)    
        if len(selectedInterface) == 0:
            noInterfaceSelected = wx.MessageDialog(None,"Please select an interface","",wx.ICON_ERROR)
            noInterfaceSelected.ShowModal()
        else:
            #confirmMonitor = wx.MessageDialog(None,"Monitoring Start on %s interface"%selectedInterface,"",wx.OK)
            #confirmMonitor.ShowModal()
            x = selectedInterface
            thread.start_new_thread(self.camtableDetection(x))

    def camtableDetection(self,a):                  
        global interface        
        interface = str(a)
        THRESH=(254/4)
        START = 5

        def monitorPackets(p):
            if p.haslayer(IP):
                hwSrc = p.getlayer(Ether).src
                if hwSrc not in hwList:
                    hwList.append(hwSrc)
                delta = datetime.datetime.now() - start
                if((delta.seconds > START) and ((len(hwList)/delta.seconds) > THRESH)):
                    camAttackDetected = wx.MessageDialog(None,"Cam Attack Detected","",wx.ICON_ERROR)
                    camAttackDetected.ShowModal()

        hwList = []
        start = datetime.datetime.now()
        sniff(iface=interface,prn=monitorPackets)
ku1918
  • 57
  • 1
  • 2
  • 7
  • [This question](http://stackoverflow.com/questions/15323574/how-to-connect-a-progress-bar-to-a-function) talks about tkinter but the concept is the same. You need to create mutliple threads in order to not block the GUI. – Burhan Khalid Sep 30 '13 at 07:40

0 Answers0