【问题标题】:Python port scanning all closedPython端口扫描全部关闭
【发布时间】:2015-08-12 15:28:54
【问题描述】:

我一直在关注一些关于使用 python 进行端口扫描的教程(这使用线程),无论我做什么,它都表示所有端口都已关闭。我知道这不可能是因为端口 80(网络)对这个站点是开放的,而且我发现一个在线工具说 22 和 80 是开放的。我该怎么办?

import socket
import threading
from queue import Queue
import time

print_lock = threading.Lock()

target = 'www.pythonprogramming.net'

def portscan(port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        con = s.connect(server, port)
        with print_lock:
            print("port",port,"is open")
        con.close()
    except:
        pass
        with print_lock:
            print("port",port,"is closed")

def threader():
    while True:
        worker = q.get()
        portscan(worker)
        q.task_done()

q = Queue()

for  i in range(30):
    t = threading.Thread(target = threader)
    t.deamon = True
    t.start()

for worker in range(1,101):
    q.put(worker)

q.join()

【问题讨论】:

  • 在portscan函数中,'server'有什么值?con = s.connect(server, port)

标签: python multithreading port scanning


【解决方案1】:

你应该捕获异常并阅读它:

except Exception as e:
    with print_lock:
        print("port",port,"is closed due to " + str(e))

有了它,你可以找到错误。您的错误是“未定义服务器”。

connect 方法接受元组,所以你应该这样做

con = s.connect((target, port))

而且它有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多