【问题标题】:Port scanner in python3python3中的端口扫描器
【发布时间】:2020-04-29 18:56:34
【问题描述】:

我正在学习python3编程,学了一个月了,所以决定试试python的socket模块,做一个端口扫描器。

import socket
host = input("Host: ")
port = int(input("Port: "))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect((host, port))
except:
    print(str(port) + " isnt open")
else: 
    print(str(port) + " is open")

代码的问题是端口永远不会打开,即使是最常见的端口,例如 80 或 443。 所以我请求你们帮助我修复最终的错误。

【问题讨论】:

  • 您好,我一直在尝试您的代码,并设法找到开放端口。对于主机:google.com 端口:443 我设法让一个端口打开。所以我觉得你的代码是正确的。您可能想问一些更具体的问题,或者向我们展示您运行的一些测试,这些测试使您断定您的代码不正确

标签: python-3.x sockets


【解决方案1】:

我认为另一个错误正在发生。 您是否尝试过在 except 块内打印异常?

import socket
host = input("Host: ")
port = int(input("Port: "))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect((host, port))
except Exception as err:
    print(str(port) + " isnt open")
    print(err.args) #for debugging
else: 
    print(str(port) + " is open")

这会让你看到实际的错误。

【讨论】:

  • 确实,这是获得更深入了解的好主意。通过这样做,我设法得到主机:0.0.0.0 端口:443 443 未打开(111,'连接被拒绝')似乎不是端口未打开,但我在尝试连接时被主动踢出。跨度>
【解决方案2】:

也许这会有所帮助:

import socket

host = str(input("Host: "))
port = int(input("Port: "))

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex((host,port))

if result == 0:
    print('Port', port, 'is open')
else: 
    print('Port', port, 'is closed')  

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多