公网端口扫描--queue&Treading

功能:端口映射类型扫描工具。使用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)

脚本解释参考:
https://blog.51cto.com/chier11/2578351

猜你喜欢

转载自blog.51cto.com/chier11/2578378