功能:端口映射类型扫描工具。使用Queue和Threading模板进行任务管理和传参。
传入文件(saomiao.txt)格式:
18.15.9.100,218
18.13.9.10,6002
18.15.9.102,85
18.15.9.12,909
18.15.9.12,1066
18.13.4.10,1202
18.13.4.2,1400
18.13.4.102,1400
18.13.4.2,1808
18.13.4.10,1808
脚本实现过程:
#!/usr/bin/env python
import socket
import datetime,time
import threading
from queue import Queue
def check_port(address,port):
result_new=[]
result_new.append(address)
result_new.append(str(port))
print ("check_port",address,port)
s = socket.socket()
try:
s.connect((address,port))
print (address,port,"T")
result_new.append("True")
return result_new
except socket.error as e:
print(address, port,"F")
result_new.append("False")
return result_new
def FileToList(filename):
#input file:
with open(filename,"r") as scanport1:
FileList=scanport1.read().splitlines() ##no "\n",return list
return FileList
def job(l,q):
#l=data[i]=ipaddr,port
#print("job :ip_port",l,type(l),l.strip().split(","))
#print ("llllllllll",l[0], int(l[1]))
ipaddr,port=l.strip().split(",")
q.put(check_port(ipaddr, int(port)))
def multithreading(data):
#print (len(data),data)
q = Queue()
threads = []
for i in range(len(data)):
#print (data[i])
t = threading.Thread(target=job, args=(data[i], q))
t.start()
#print ("t",t) ##地址
threads.append(t)
for thread in threads:
#print ("threads",threads)
thread.join()
results = []
for _ in range(len(data)):
#print ("Z",q.get())
results.append(q.get())
#print (len(results))
print (results)
return results
def To_excel(rlist):
##form_:[['18.15.4.10', 218, 'True'], ['18.13.9.10', 6002, 'True']]
with open(r"rest12.txt","a+") as fa:
for x in rlist:
stra=x[0]+"\t"+x[1]+"\t"+x[2]
fa.write(stra)
fa.write("\n")
if __name__ == "__main__":
host_info = FileToList("saomiao.txt")
tempt=multithreading(host_info)
To_excel(tempt)