一个小白式的多线程端口扫描代码

版权声明: https://blog.csdn.net/qq_39495209/article/details/79823641

  我将进行编写多线程端口扫描,但是我因为在一些线程方面的理论知识基础薄弱,所以代码比较简陋。

# coding:utf-8
# !usr/bin/python

from socket import *
import threading
import time


def main():
    host = input("请输入要扫描的ip: ")
    t = time.time()
    for port in range(0, 2000):
        thread = threading.Thread(target=TCP_PORT, args=(host, port, 0.01))   #这是最关键的,如何使用请在我博客中搜索 threading模块
        thread.start()
        time.sleep(0.006)               #加入一个time模块,防止线程之间因为访问资源产生冲突,还有就是是threading模块中相应锁进程的没看懂,需要后续钻研
        thread.join()
    print("用时: ", time.time() - t)


def TCP_PORT(ip, port, delay):                                             #这个函数可以认为就是单线程的扫描,没有什么其他的作用
    s = socket(AF_INET, SOCK_STREAM)
    s.settimeout(delay)                        
    try:
        result = s.connect_ex((ip, port))
        if result == 0:
            print("[+] %s is open" % port)
        '''else:
            print("[-] %s is closed" % port)'''
        s.close()
    except:
        pass


main()

猜你喜欢

转载自blog.csdn.net/qq_39495209/article/details/79823641