@@ -34,31 +34,50 @@ def send_packet(udp_skt: socket.socket, ip: str, port_range: list, interval: flo
3434 conn .send (1 )
3535
3636
37- def scanner (ip : str , local_port : int , interval : float ):
38- udp_skt = get_udp_socket (local_port )
39-
40- pbar = tqdm (iterable = range (65530 ), desc = "Scaning progress" ,
37+ prog_mon = 0
38+ def progerss_monitor (conn ):
39+ global prog_mon
40+ prog_mon = 0
41+ while True :
42+ prog_mon_tmp = prog_mon
43+ time .sleep (1 )
44+ if prog_mon == prog_mon_tmp :
45+ for i in range (65536 - prog_mon ):
46+ try :
47+ conn .send (1 )
48+ except BrokenPipeError :
49+ pass
50+ break
51+
52+
53+ is_recving = False
54+ def scanner (udp_skt : socket .socket , addr : str , interval : float ):
55+ global is_recving , prog_mon
56+ pbar = tqdm (iterable = range (65536 ), desc = "Scaning progress" ,
4157 leave = False , unit = "Port" , unit_scale = False )
42-
43- threading .Thread (target = recv_packets , args = (
44- udp_skt , pbar ), daemon = True ).start ()
45-
46- port_ranges = split_list (65535 , mp .cpu_count () - 1 )
58+
59+ if not is_recving :
60+ is_recving = True
61+ threading .Thread (target = recv_packets , args = (
62+ udp_skt , pbar ), daemon = True ).start ()
63+
64+ port_ranges = split_list (65536 , mp .cpu_count () - 1 )
4765
4866 parent_conn , child_conn = mp .Pipe ()
4967
68+ threading .Thread (target = progerss_monitor , args = (
69+ child_conn ,), daemon = True ).start ()
70+
5071 for port_range in port_ranges :
51- mp .Process (target = send_packet , args = (udp_skt , ip ,
72+ mp .Process (target = send_packet , args = (udp_skt , addr ,
5273 port_range , interval , child_conn ), daemon = True ).start ()
53-
74+
5475 for p in pbar :
55- # break
5676 parent_conn .recv ()
77+ prog_mon += 1
5778
5879 time .sleep (3 )
5980
60- udp_skt .close ()
61-
6281
6382def recv_packets (udp_skt , pbar ):
6483 server_count = 0
@@ -109,5 +128,7 @@ def recv_packets(udp_skt, pbar):
109128 interval = args .interval
110129 local_port = args .port
111130
131+ udp_skt = get_udp_socket (local_port )
132+
112133 for addr in get_ip_list (addr ):
113- scanner (addr , local_port , interval )
134+ scanner (udp_skt , addr , interval )
0 commit comments