def run(self):
        GlobalVariable.log("consume start Time:"+"\t"+str(time.time())+"\n")
        #time.sleep(1)
        while(not GlobalVariable.finishSniffing or not GlobalVariable.dnsResponseQueue.empty()):
            if (not GlobalVariable.dnsResponseQueue.empty()):
                print "CONSUMER EMPTY dns"
                continue
            dnsResponse = GlobalVariable.dnsResponseQueue.get()
            if dnsResponse == "END OF THE SYSTEM":
                break

            flowValue = dnsResponse

            if len(self.growingTreeArray) > 0:
                print "growingTree is larger than 0"
                flag = False
                print "DEBUG 1"
                for growingTree in self.growingTreeArray:
                    #if not growingTree.isActivatedtivated():
                        #continue
                    ifAppended = growingTree.tryAddingNode(flowValue)
                    if ifAppended == True:
                        flag = True
                        break
                    else:
                        pass
                print "DEBUG 2", flag
                if flag == False:
                    if flowValue[10] != "":
                        continue
                    self.growingTreeIndex += 1
                    GlobalVariable.log("flag == False"+"\t"+str(self.growingTreeIndex)+"\t"+str(flowValue)+"\n")
                    print "flag == False", self.growingTreeIndex, flowValue 
                    ts = time.time()
                    growingTree = GrowingTree.GrowingTree(self.growingTreeIndex,flowValue, ts, parent = self)
                    with self.lock:
                        self.growingTreeArray.append(growingTree)
            else:
                print "growingTree is equal to 0"
                if flowValue[10] != "":
                    continue
                self.growingTreeIndex += 1
                GlobalVariable.log("no trees"+"\t"+str(self.growingTreeIndex)+"\t"+str(flowValue))
                print "no trees", self.growingTreeIndex, flowValue
                ts = time.time()
                growingTree = GrowingTree.GrowingTree(self.growingTreeIndex,flowValue, ts, parent = self)
                with self.lock:
                    self.growingTreeArray.append(growingTree)
            print "loop loop loop", GlobalVariable.finishSniffing, GlobalVariable.dnsResponseQueue.empty()

        print "not stucked any more"
        GlobalVariable.log(str(len(self.growingTreeArray))+"\t"+str(self.growingTreeIndex))
        print len(self.growingTreeArray), self.growingTreeIndex
        print "the end of consume"
예제 #2
0
 def run(self):
     GlobalVariable.log("sniff start Time:"+"\t"+str(time.time())+"\n")
     if self.targetInputMethod == "-i":
         self.__sniff_online(self.targetInputValue)
         pass
     elif self.targetInputMethod == "-p":
         self.__sniff_offline(self.targetInputValue)
         pass
     elif self.targetInputMethod == "-d":
         filelist = self.__target_files(self.targetInputValue)
         for filename in filelist:
             print filename
             self.__sniff_offline(filename)
     print "going to finish sniff"
     GlobalVariable.finishSniffing = True
     GlobalVariable.httpRequestQueue.put("END OF THE SYSTEM")
     GlobalVariable.dnsResponseQueue.put("END OF THE SYSTEM")
     GlobalVariable.smtpQueue.put("END OF THE SYSTEM")
     GlobalVariable.ftpQueue.put("END OF THE SYSTEM")
예제 #3
0
 def run(self):
     #print "watchdog thread is running"
     remainingTime = 5
     while remainingTime > 0:
         #print "watchdog thread is in the loop"
         if True:
             if self.queue.empty():
                pass
             else:
                 #print "watchDog queueSize Before ", self.queue.qsize()
                 num = self.queue.get()
                 #print "watchDog queueSize After ", self.queue.qsize()
                 remainingTime = 5
                 #self.queue.task_done()
                 #print "Consumed", num
         #print "remainingTime: ", remainingTime
         remainingTime -= 1
         time.sleep(1)
     GlobalVariable.log("watchDog set threadEvent\n")
     #print "watchDog thread is going to finish"
     #self.threadEvent.set()
     self.parent.watchDogCallBack()
예제 #4
0
    def merge_new(treeFeature):
        #print "in the merge now"
        flowTuble = (treeFeature.dst, treeFeature.srcport, treeFeature.t2ld, treeFeature.uri, treeFeature.packetIndex, treeFeature.hitTimes)
        flag = False
        for iterator, item in enumerate(TreeComparator.treeFeatureArray):
            tempFlag = False
            for i in range(5):
                if (len(flowTuble[i]) != 0 and (flowTuble[i] & item[i])):
                    if set(['/']) == (flowTuble[i] & item[i]):
                        tempFlag = False
                    else:
                        #print "bingo", flowTuble[i], item[i]
                        tempFlag = True
            if tempFlag == True:
                TreeComparator.treeFeatureArray[iterator] = TreeComparator.combine(item, flowTuble)
                flag = True
                GlobalVariable.log("matched tree feature array:"+"\t"+str(item)+"\n")
                break
        #if flowTuble in TreeComparator.treeFeatureArray:
        if flag == True:
            GlobalVariable.log("match\n")
            #print "match" 
            #treeFeature.show()
            pass
        else:
            GlobalVariable.log("unmatch\n")
            #print "unmatched ", flowTuble
            #treeFeature.show()
            (TreeComparator.treeFeatureArray).append(flowTuble)

            #GlobalVariable.log(str(treeFeature.flow[0])+"|"+str(treeFeature.flow[1])+"|"+str(treeFeature.flow[2])+"|"+str(treeFeature.flow[3])+"|"+str(treeFeature.flow[4])+"|"+str(treeFeature.flow[5])+"|"+str(treeFeature.flow[6])+"|"+str(treeFeature.flow[7])+"|"+str(treeFeature.flow[8])+"|"+str(treeFeature.flow[9])+"|"+str(treeFeature.flow[10])+"|"+str(treeFeature.flow[11])+"\n")    
            #GlobalVariable.log("tree feature array:"+"\t"+str(TreeComparator.index)+"\t"+str(treeFeature.flow)+"\n")
        
            #print "tree feature array:", TreeComparator.index, treeFeature.flow
            TreeComparator.index += 1
        GlobalVariable.log("merge ends"+"|"+str(len(TreeComparator.treeFeatureArray))+"|"+str(TreeComparator.treeFeatureArray)+"\n")
        GlobalVariable.log("duration:"+"\t"+str(time.time() - treeFeature.ts)+"\n")
        #print "merge ends", len(TreeComparator.treeFeatureArray), TreeComparator.treeFeatureArray
        #print "duration:", time.time() - treeFeature.ts
        durationList.append(time.time() - treeFeature.ts)
        GlobalVariable.log("average duration:"+"\t"+str(sum(durationList)/len(durationList))+"\n")
        GlobalVariable.log("end Time:"+"\t"+str(time.time())+"\n")
예제 #5
0
    def run(self):
        GlobalVariable.log("consume start Time:"+"\t"+str(time.time())+"\n")
        #time.sleep(1)
        while(not GlobalVariable.finishSniffing or not GlobalVariable.httpRequestQueue.empty()):
            #print "coming AAAAAAAAAAA"
            if (GlobalVariable.httpRequestQueue.empty()):
                #print "CONSUMER EMPTY http"
                continue
            httpRequest = GlobalVariable.httpRequestQueue.get()
            if httpRequest == "END OF THE SYSTEM":
                break

            flowValue = httpRequest

            if len(self.growingTreeArray) > 0:
                #print "growingTree is larger than 0"
                flag = False
                #print "DEBUG 1"
                for growingTree in self.growingTreeArray:
                    #if not growingTree.isActivatedtivated():
                        #continue
                    ifAppended = growingTree.tryAddingNode(flowValue)
                    if ifAppended == True:
                        flag = True
                        break
                    else:
                        pass
                #print "DEBUG 2", flag
                if flag == False:
                    if flowValue[10] != "":
                        continue
                    GlobalVariable.log("flag == False"+"\t"+str(self.growingTreeIndex)+"\t"+str(flowValue)+"\n")
                    print "flag == False", self.growingTreeIndex, flowValue 
                    ts = time.time()
                    growingTree = GrowingTree.GrowingTree(self.growingTreeIndex,flowValue, ts, parent = self)
                    with self.lock:
                        self.growingTreeArray.append(growingTree)
                    self.growingTreeIndex += 1
            else:
                #print "growingTree is equal to 0"
                if flowValue[10] != "":
                    continue
                GlobalVariable.log("no trees"+"\t"+str(self.growingTreeIndex)+"\t"+str(flowValue))
                #print "no trees", self.growingTreeIndex, flowValue
                ts = time.time()
                growingTree = GrowingTree.GrowingTree(self.growingTreeIndex,flowValue, ts, parent = self)
                with self.lock:
                    self.growingTreeArray.append(growingTree)
                self.growingTreeIndex += 1
            #print "loop loop loop", GlobalVariable.finishSniffing, GlobalVariable.httpRequestQueue.empty()

        pass # add join here
        for growingTree in self.growingTreeArray:
            #print "number of growing Tree:", len(self.growingTreeArray)
            growingTree.__join__()
            
        time.sleep(5)
        print "not stucked any more"
        GlobalVariable.log(str(len(self.growingTreeArray))+"\t"+str(self.growingTreeIndex))
        #print len(self.growingTreeArray)
        print "the end of consume"