python网络编程之多线程端口扫描
import socket
from threading import Thread
import time
#多线程扫描
def main(target,startport,endport):
print("开始扫描:%s" % target)
theads = []
for port in range(int(startport),int(endport)):
th = Thread(target=portscan,args=(target,port))
th.start()
theads.append(th)
for t in theads:
t.join()
#端口扫描
def portscan(target,port):
try:
scan = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
scan.settimeout(0.3)
scan.connect((target, port))
print("[*] %s:%d 开放" % (target,port))
scan.close()
except:
return 0
#初始化程序
if __name__ == "__main__":
while True:
target = input("目标:")
startport = input("起始端口:")
endport = input("结束端口:")
if target == "" or startport == "" or endport == "":
print("请输入相应的值!!!!")
else:
starttime = time.time()
main(target,startport,endport)
endtime = time.time()
time = (endtime - starttime)
print("扫描用时为%.2f秒。" % time)
扫描结果: