1
1
from scapy .all import IP , TCP , sniff
2
+ import logging # first of all import the module
3
+
2
4
3
5
"""
4
6
Represents a network packet with source and destination IP addresses
@@ -13,32 +15,31 @@ def get_summary(self, pkt):
13
15
for rule in self .rules :
14
16
#print("src",pkt[IP].src, pkt[TCP].sport,"dst", pkt[IP].dst, pkt[TCP].dport)
15
17
#Check if the ip address and port number matches
16
- if (
17
- ( pkt [IP ].src == rule [1 ]) or ( pkt [IP ].dst == rule [3 ]) and
18
- ( pkt [TCP ].sport == rule [2 ]) or ( pkt [TCP ].dport == rule [4 ])
19
- ):
20
- #If they matches check if that rule is to be allowed or blocked
21
- if rule [0 ] == True : return "BLOCK" , "src" ,pkt [IP ].src , pkt [TCP ].sport ,"dst" , pkt [IP ].dst , pkt [TCP ].dport
22
- elif rule [0 ] == False : return "ALLOW" , "src" ,pkt [IP ].src , pkt [TCP ].sport ,"dst" , pkt [IP ].dst , pkt [TCP ].dport
18
+ if (pkt [IP ].src == rule [1 ] and pkt [IP ].dst == rule [3 ]):
19
+
20
+ if (True ): #pkt[TCP].sport == rule[2] ports changes a lot
21
+
22
+ #If they matches check if that rule is to be allowed or blocked
23
+ if rule [0 ] == True :
24
+ log = "Status: " , "BLOCK" , "Src IP: " ,pkt [IP ].src , "Src Port:" , pkt [TCP ].sport ,"Dst IP: " , pkt [IP ].dst ,"Dst Port:" ,pkt [TCP ].dport
25
+ logging .basicConfig (filename = 'firewall.log' , filemode = 'w' , format = "%(asctime)s %(message)s" )
26
+ logging .warning (log )
27
+ print (log )
28
+
29
+ elif rule [0 ] == False :
30
+ log = "Status: " , "ALLOW" , "Src IP: " ,pkt [IP ].src , "Src Port:" , pkt [TCP ].sport ,"Dst IP: " , pkt [IP ].dst ,"Dst Port:" ,pkt [TCP ].dport
31
+ logging .basicConfig (filename = 'firewall.log' , filemode = 'w' , format = "%(asctime)s %(message)s" )
32
+ logging .warning (log )
33
+ print (log )
34
+
23
35
else :
24
- return "src" ,pkt [IP ].src , pkt [TCP ].sport ,"dst " , pkt [IP ].dst , pkt [TCP ].dport
36
+ print ( "Src IP: " ,pkt [IP ].src , "Src Port:" , pkt [TCP ].sport ,"Dst IP: " , pkt [IP ].dst ,"Dst Port:" , pkt [TCP ].dport )
25
37
else :
26
- return "Waiting for pkt...."
38
+ pass
39
+ # return "Waiting for pkt...."
27
40
except Exception as e :
28
41
print (f"[ERR] Error could not get pkt: { e } " )
29
42
False
30
43
31
44
# capture = sniff(5)
32
45
# capture.summary()
33
- # arr = [
34
- # [True, "192.168.36.44", "60916", "20.42.65.89", "443"], ##block
35
- # [True, "12.168.3.1009", "0", "10.0.0.100", "0"],
36
- # [True, "12.168.3.1009", "0", "10.0.0.100", "0"],
37
- # [False, "44.236.154.173", "443", "192.168.36.44", "61035"] ##allow
38
- # ]
39
- # packet = Packet(arr)
40
- # sniff(10,filter="ip",prn=packet.get_summary)
41
-
42
- #sniff(filter="ip",prn=get_summary)
43
- # or it possible to filter with filter parameter...!
44
- #sniff(filter="ip and host 192.168.0.1",prn=get_summary)
0 commit comments