|
1 | 1 |
|
2 | 2 | class PacketFilter(): |
3 | 3 |
|
4 | | - def __init__(self, ip_whitelist_filter=[], ip_blacklist_filter=[], IPv4=False, TCP=False, UDP=False, ICMP=False): |
| 4 | + def __init__(self, ip_whitelist_filter=[], ip_blacklist_filter=[], IPv4=False, TCP=False, UDP=False, ICMP=False, DNS=False): |
5 | 5 | self.ip_whitelist_filter = ip_whitelist_filter |
6 | 6 | self.ip_blacklist_filter = ip_blacklist_filter |
7 | 7 | self.IPv4 = IPv4 |
8 | 8 | self.TCP = TCP |
9 | 9 | self.UDP = UDP |
10 | 10 | self.ICMP = ICMP |
11 | | - filters = [self.IPv4, self.TCP, self.UDP, self.ICMP] |
| 11 | + self.DNS = DNS |
| 12 | + filters = [self.IPv4, self.TCP, self.UDP, self.ICMP, self.DNS] |
12 | 13 | assert sum(filters) <= 1, "You have to set just one protocol filter." |
13 | 14 | if(len(self.ip_whitelist_filter) > 0 or len(self.ip_blacklist_filter) > 0): |
14 | 15 | self.set_IPv4_filter(True) |
@@ -59,24 +60,39 @@ def TCP_filter(pkt): |
59 | 60 | else: |
60 | 61 | return False |
61 | 62 |
|
| 63 | + def DNS_filter(pkt): |
| 64 | + if(pkt.haslayer("DNS")): |
| 65 | + return True |
| 66 | + else: |
| 67 | + return False |
| 68 | + |
62 | 69 | def ICMP_filter(pkt): |
63 | 70 | if(pkt.haslayer("ICMP")): |
64 | 71 | return True |
65 | 72 | else: |
66 | 73 | return False |
67 | 74 |
|
68 | 75 | if(self.get_IPv4_filter() is True): |
69 | | - results.append(IPv4_filter(pkt)) |
| 76 | + res = IPv4_filter(pkt) |
| 77 | + results.append(res) |
70 | 78 | if(len(self.get_ip_blacklist_filter()) > 0): |
71 | | - results.append(ip_blacklist_filter(pkt, self.get_ip_blacklist_filter())) |
| 79 | + res = ip_blacklist_filter(pkt, self.get_ip_blacklist_filter()) |
| 80 | + results.append(res) |
72 | 81 | if(len(self.get_ip_whitelist_filter()) > 0): |
73 | | - results.append(ip_whitelist_filter(pkt, self.get_ip_whitelist_filter())) |
| 82 | + res = ip_whitelist_filter(pkt, self.get_ip_whitelist_filter()) |
| 83 | + results.append(res) |
74 | 84 | if(self.get_TCP_filter() is True): |
75 | | - results.append(TCP_filter(pkt)) |
| 85 | + res = TCP_filter(pkt) |
| 86 | + results.append(res) |
76 | 87 | if(self.get_UDP_filter() is True): |
77 | | - results.append(UDP_filter(pkt)) |
| 88 | + res = UDP_filter(pkt) |
| 89 | + results.append(res) |
78 | 90 | if(self.get_ICMP_filter() is True): |
79 | | - results.append(ICMP_filter(pkt)) |
| 91 | + res = ICMP_filter(pkt) |
| 92 | + results.append(res) |
| 93 | + if(self.get_DNS_filter() is True): |
| 94 | + res = DNS_filter(pkt) |
| 95 | + results.append(res) |
80 | 96 | if(False in results): |
81 | 97 | return False |
82 | 98 | else: |
@@ -113,6 +129,12 @@ def set_ICMP_filter(self, val): |
113 | 129 | def get_ICMP_filter(self): |
114 | 130 | return self.ICMP |
115 | 131 |
|
| 132 | + def set_DNS_filter(self, val): |
| 133 | + self.DNS = val |
| 134 | + |
| 135 | + def get_DNS_filter(self): |
| 136 | + return self.DNS |
| 137 | + |
116 | 138 | def get_ip_whitelist_filter(self): |
117 | 139 | return self.ip_whitelist_filter |
118 | 140 |
|
|
0 commit comments