22import random
33import sqlite3
44from SecAutoBan import SecAutoBan
5- from scapy .all import sniff , send , conf
5+ from scapy .all import sniff , send
66from scapy .layers .inet6 import IPv6
77from scapy .layers .inet import TCP , IP
88from multiprocessing .pool import ThreadPool
@@ -20,22 +20,21 @@ def get_ip(p):
2020 return src_ip , dst_ip
2121
2222
23- def send_reset (iface , seq_jitter = 0 , default_window_size = 2052 ):
23+ def send_reset (iface ):
2424 def f (p ):
2525 src_ip , dst_ip = get_ip (p )
2626 src_port = p [TCP ].sport
2727 dst_port = p [TCP ].dport
28- seq = p [TCP ].seq
2928 ack = p [TCP ].ack
30- jitter = random . randint ( max ( - seq_jitter , - seq ), seq_jitter )
31- rst_seq = ack + jitter
29+ if "S" in p [ TCP ]. flags :
30+ return
3231 try :
3332 if p .haslayer (IP ):
34- p = IP (src = dst_ip , dst = src_ip ) / TCP (sport = dst_port , dport = src_port , flags = "R" , window = default_window_size , seq = rst_seq )
33+ p = IP (src = dst_ip , dst = src_ip ) / TCP (sport = dst_port , dport = src_port , flags = "R" , window = 2052 , seq = ack )
3534 send (p , verbose = 0 , iface = iface )
3635 return
3736 if p .haslayer (IPv6 ):
38- p = IPv6 (src = dst_ip , dst = src_ip ) / TCP (sport = dst_port , dport = src_port , flags = "R" , window = default_window_size , seq = rst_seq )
37+ p = IPv6 (src = dst_ip , dst = src_ip ) / TCP (sport = dst_port , dport = src_port , flags = "R" , window = 2052 , seq = ack )
3938 send (p , verbose = 0 , iface = iface )
4039 return
4140 except Exception as e :
@@ -106,7 +105,6 @@ def run_sniff():
106105
107106
108107if __name__ == "__main__" :
109- conf .use_pcap = True
110108 sniff_iface = os .getenv ("sniff_iface" , "eth0" )
111109 reset_iface = os .getenv ("reset_iface" , "eth1" )
112110 db_name = "block_ip.db"
0 commit comments