Jihoon

수정

...@@ -35,17 +35,6 @@ class Counting_bloom_filter(object): ...@@ -35,17 +35,6 @@ class Counting_bloom_filter(object):
35 keytable.append(self.c_bf[loc3]) 35 keytable.append(self.c_bf[loc3])
36 return min(keytable) 36 return min(keytable)
37 37
38 - def add_to_cbf(self, val): # cbf에 원소 삽입
39 - # 최적의 해시 개수 hash_num에 대하여
40 - # 3개라 가정하면, i값은 0~2까지
41 - # 이 i값을 seed값 삼아 동일 sha1함수에 다른 seed값 부여하고 연산 진행
42 - # 연산 결과 나온 key값이 loc, CBF 배열의 loc번째 인덱스에 increment연산 진행
43 - # return값: 해당 값(0~threshold값 까지의 정수)
44 - for i in range(self.hash_num):
45 - loc = self.hash_func3(val, i+1)
46 - self.c_bf[loc] += 1
47 - return self.c_bf[loc]
48 -
49 38
50 def hash_func1(self, val): #fnv32-1a 39 def hash_func1(self, val): #fnv32-1a
51 hashedVal = fnv(val.encode('utf-8')) 40 hashedVal = fnv(val.encode('utf-8'))
......
1 import pyshark as pyshark 1 import pyshark as pyshark
2 import os 2 import os
3 import subprocess 3 import subprocess
4 -import CBF2 as CBF 4 +import CountingBloom as CBF
5 import threading 5 import threading
6 import time 6 import time
7 import schedule 7 import schedule
8 8
9 -#pps_threshold 설정 필요 9 +
10 10
11 def LiveSniffer(net_interface, cbf): 11 def LiveSniffer(net_interface, cbf):
12 capture = pyshark.LiveCapture(interface=net_interface, bpf_filter= 'dst 192.168.219.110 && tcp') # 캡쳐 프로세스 생성 12 capture = pyshark.LiveCapture(interface=net_interface, bpf_filter= 'dst 192.168.219.110 && tcp') # 캡쳐 프로세스 생성
...@@ -39,9 +39,11 @@ def main(): ...@@ -39,9 +39,11 @@ def main():
39 try: 39 try:
40 capture = pyshark.LiveCapture(interface='wlp2s0', bpf_filter='tcp', display_filter= 'ip.dst == 192.168.219.100') # 캡쳐 프로세스 생성 40 capture = pyshark.LiveCapture(interface='wlp2s0', bpf_filter='tcp', display_filter= 'ip.dst == 192.168.219.100') # 캡쳐 프로세스 생성
41 #capture.set_debug() 41 #capture.set_debug()
42 - filter = CBF.Counting_bloom_filter(8000, 0.01) # CBF 초기화 42 + filter = CBF.Counting_bloom_filter(20, 0.001)
43 + # CBF 초기화, 홈 IoT 환경에서는 최대 20개 정도의 노드로부터 정보를 송수신한다고 판단, 0.001은 hash miss 비율
44 + # false-positive 비율을 낮추기 위해서
43 print("CB-Filter Length: ", filter.length) 45 print("CB-Filter Length: ", filter.length)
44 - schedule.every(0.008).seconds.do(CntDecrement, filter.c_bf) 46 + schedule.every(0.1).seconds.do(CntDecrement, filter.c_bf) # 0.1초마다 필터 내 1이상의 모든 값을 1씩 감소
45 for packet in capture.sniff_continuously(): 47 for packet in capture.sniff_continuously():
46 PktFiltering(packet, filter) 48 PktFiltering(packet, filter)
47 schedule.run_pending() 49 schedule.run_pending()
......