import socket
import os
import tkinter.messagebox
import re
import threading
def scan(ip, port):
# 创建对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 超时时间
# s.settimeout(1)
try:
# 连接测试
s.connect((ip, port))
print('{}:{} 成功'.format(ip, port))
except Exception as e:
print('{}:{} {}'.format(ip, port, e))
finally:
# 关闭套接字
s.close()
def get_config():
if not os.path.exists(r'./config'):
# print('缺少配置文件config')
# 弹窗警告
tkinter.messagebox.showwarning('警告', '缺少配置文件config')
exit()
data_list = []
with open('config', encoding='utf-8') as file:
data = file.readlines()
for d in data:
d = d.replace('\n', '')
data_list.append(d)
pattern1 = re.compile(r'\w+:(\d+.\d+.\d+.).*')
wangduan = re.findall(pattern1, data_list[0])
pattern2 = re.compile(r'\w+:\d+.\d+.\d+.(\d+)-\d+')
ip_start = re.findall(pattern2, data_list[0])
pattern3 = re.compile(r'\w+:\d+.\d+.\d+.\d+-(\d+)')
ip_end = re.findall(pattern3, data_list[0])
str_temp = data_list[1].split(':')
port = str_temp[1].split('-')
# print('IP范围:{}{}-{} port范围:{}-{}'.format(wangduan[0], ip_start[0], ip_end[0], port[0], port[1]))
return wangduan[0], ip_start[0], ip_end[0], port[0], port[1]
if __name__ == '__main__':
wd, ip_s, ip_e, port_s, port_e = get_config()
for p in range(int(port_s), int(port_e) + 1):
for i in range(int(ip_s), int(ip_e) + 1):
# 拼接IP
ip1 = '{}{}'.format(wd, i)
# IP和端口转换成元组
cs = (ip1, p)
# print(cs)
# 创建线程
thred = threading.Thread(target=scan, args=cs)
# 启用线程
thred.start()
config文件配置信息
IP范围:192.168.1.1-254
端口范围:139-139