端口扫描器 Python 中的语法问题

Problem with a Syntax in Python on a port scanner

我正在尝试编码的端口扫描器有问题,它给我一个语法错误,让我给你看代码:

#!/usr/bin/python3

import socket
from termcolor import colored

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket.setdefaulttimeout(1)

host=input("[*] Inserisci l'indirizzo:")

def portscanner(port):
        if socket.connect_ex((host, port)):
                print (colored("[!!]La porta %d è aperta")% (port), 'red')
        else:
                print (colored("[+]La porta %d è chiusa")% (port), 'green')
for port in range(1,1000):
                portscanner(port)

错误:

Traceback (most recent call last):
  File "portscanner2.py", line 17, in <module>
    portscanner(port)
  File "portscanner2.py", line 12, in portscanner
    if socket.connect_ex((host, port)):
AttributeError: module 'socket' has no attribute 'connect_ex'

不,那不是语法错误,那是属性错误。那些是不同的野兽。

There is no connect_ex function in the socket module; there is one on socket objects.

也就是说,您可能想要将其更改为sock.connect_ex()(尽管您还应该记得在成功时关闭套接字),或者不初始化sock 一次,您可以使用 socket.create_connection() 尝试连接 TCP 套接字。

因为你用

初始化了它
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

您只需要将 socket 换成 sock,这样就可以了!

if sock.connect_ex((host, port)):