一个兢兢业业、无微不至的保姆。你用自己的一只手——雪,把那青绿的麦苗爱抚地搂在怀里,给他以温暖和关怀。麦苗在那层层棉被下静静地期待,期待着来春生长发育。蛇、鳝、熊等等,有的钻进了深泥,有的藏入树洞,休息一冬,养精蓄锐,方有新春来到时的精神振奋。你用自己的另一只手――寒风,举刀挥剑,把那些残害农作物的害虫,砍光杀尽,把那些残害人类、牲畜的虎豹豺豺狼驱赶进深山老林。冬呵!你严守阵地,不容侵犯;你,是一位最负责任的对友火热温情,对敌残忍无情的好保姆。
扫描服务器ip开放端口,用线程池ThreadPoolExecutor,i7的cpu可以开到600个左右现成,大概20s左右扫描完65535个端口,根据电脑配置适当降低线程数
#!/usr/local/python3.6.3/bin/python3.6
# coding = utf-8
import socket
import datetime
import re
from concurrent.futures import ThreadPoolExecutor, wait
DEBUG = False
# 判断ip地址输入是否符合规范
def check_ip(ipAddr):
compile_ip = re.compile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
if compile_ip.match(ipAddr):
return True
else:
return False
# 扫描端口程序
def portscan(ip, port):
try:
s = socket.socket()
s.settimeout(0.2)
s.connect((ip, port))
openstr = f'[+] {ip} port:{port} open'
print(openstr)
except Exception as e:
if DEBUG is True:
print(ip + str(port) + str(e))
else:
return f'[+] {ip} port:{port} error'
finally:
s.close
#主程序,利用ThreadPoolExecutor创建600个线程同时扫描端口
def main():
while True:
ip = input("请输入ip地址:")
if check_ip(ip):
start_time = datetime.datetime.now()
executor = ThreadPoolExecutor(max_workers=600)
t = [executor.submit(portscan, ip, n) for n in range(1, 65536)]
if wait(t, return_when='ALL_COMPLETED'):
end_time = datetime.datetime.now()
print("扫描完成,用时:", (end_time - start_time).seconds)
break
if __name__ == '__main__':
main()
到此这篇关于python多线程扫描端口(线程池)就介绍到这了。一个人在迷茫的时候通常会去衡量自身的价值,但你无法找到价值的天秤在何处。更多相关python多线程扫描端口(线程池)内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!




