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

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

# 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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值