Python 2.7 portScanner

时间:2018-05-05 19:15:36

标签: python-2.7 sockets

我想知道为什么我的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))

1 个答案:

答案 0 :(得分:1)

您只创建一个套接字并尝试在多个连接中使用它。这是不可能的。如果查看异常的详细信息,您会注意到第一个(端口1)缓慢失败,因为连接超时但由于“操作已在进行中”,所以后续都很快失败。

修复方法是在每个connect之前创建一个新套接字。此外,减少尝试与s.settimeout(1)建立联系的时间可能会有所帮助。