python - python 找不到开放端口

标签 python sockets python-multithreading

我正在尝试用 python 创建一个简单的端口扫描器 - 它尝试查看端口 0-10000 是否打开,然后将它们附加到一个数组中。但是,即使我打开一个端口,它仍然无法识别该端口已打开。

谢谢

代码:

import socket
import threading

ip = "127.0.0.1"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socket.AF_INET, socket.SOCK_STREAM
open_ports = []
def porttry(ip, port):
    try:
        s.connect((ip, port))
        print("Port opened on %d" % port)
        open_ports.append(port)
        return True
    except:

        return None

for port in range(0, 10000):
    threading.Thread(target=porttry,args=(ip,port)).start()
    if port%100==0:
        print(port) 

最佳答案

要使此代码正常工作,您需要为每个连接(每个线程)单独创建套接字。

以下作品:

import socket
import threading

ip = "127.0.0.1"
open_ports = []
def porttry(ip, port):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, port))
        print("Port opened on %d" % port)
        open_ports.append(port)
        s.close()
        return True
    except:
        return False

for port in range(0, 10000):
    threading.Thread(target=porttry, args=(ip,port)).start()
    if port % 100 == 0:
        print(port)

它检测使用例如nc -l 1777打开的端口。

关于python - python 找不到开放端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344457/

相关文章:

python - Fit 和 inverse_transform 中不同形状的 MinMaxScaler

python - 如何使 socket.recv(500) 不停止 while 循环

python - 在python 2中每n毫秒在python中定期执行一个函数

python-3.x - python3 为什么/如何按创建顺序安排线程?

python - 串行读/写代码中可能存在的竞争条件

python - Pytest:自定义简短的测试摘要信息,删除文件路径

python - Pymongo 树结构获取节点后代

Python网络X : edges color in a weighted graph

linux - 使用socat连接socket,发送命令,读取单行

c - 在 Linux 中使用 TCP 时,listen 的积压数量是否包括 SYN 接收的连接计数?