首页 > 解决方案 > Python 2.7 端口扫描器

问题描述

我想知道为什么我的 portScanner 模块运行并声称我的所有端口都已关闭?

我正在运行 Python 2.7,因为这就是 Violent Python(本书)使用的。

到目前为止,我尝试过的唯一解决方案是将我的 DNS 设置为 8.8.8.8 并设置为 8.8.4.4,因为我的套接字将“www.google.com”作为 Ip。

代码:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverIp = socket.gethostbyname('www.google.com')

def pscan(port):
    try:
        s.connect((serverIp,port))
        return True
    except:
        return False

for x in range(1,101):  
    if pscan(x):
        print("Port %d is open!!!" % (x))
    else:
        print("Port %d is closed" % (x))

标签: python-2.7sockets

解决方案


您只创建一个套接字并尝试在多个连接中使用它。这是不可能的。如果您查看 Exception 的详细信息,您会注意到第一个(端口 1)由于连接超时而缓慢失败,但由于“Operation already in progress” ,以下几个都很快失败。

解决方法是在每个connect. 此外,减少它尝试连接的时间可能会有所帮助s.settimeout(1)


推荐阅读