gpt4 book ai didi

python-3.x - 具有多线程的 Python 端口扫描器

转载 作者:行者123 更新时间:2023-12-02 20:22:46 24 4
gpt4 key购买 nike

import threading, socket, sys, time
from queue import Queue

print_lock = threading.Lock()

if len(sys.argv) !=2 :
print ("Usage: portscan.py <host>")
sys.exit(1)

host = sys.argv[1]

def scan(port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
con = s.connect((host, port))
with print_lock:
print('Port: ' + str(port) + ' is open')
con.close()
except:
pass

def threader():
while true:
worker = q.qet()
scan(worker)
q.task_done()

q = Queue()

for x in range(100):
t = threading.Thread(target=threader)
t.daemon = True
t.start

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

q.join()

当我运行它时,它只是挂起,我没有得到任何结果,也没有给我任何错误。我不明白为什么它不起作用。当我不添加线程功能时它确实可以工作。

最佳答案

存在三个小错误:

  1. 虽然正确
  2. t.start()
  3. q.get()

这个更正后的代码似乎对我有用:

import threading, socket, sys, time
from queue import Queue

print_lock = threading.Lock()

if len(sys.argv) !=2 :
print ("Usage: portscan.py <host>")
sys.exit(1)

host = sys.argv[1]

def scan(port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
con = s.connect((host, port))
with print_lock:
print('Port: ' + str(port) + ' is open')
con.close()
except:
pass

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

q = Queue()

for x in range(100):
t = threading.Thread(target=threader)
t.daemon = True
t.start()

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

q.join()

关于python-3.x - 具有多线程的 Python 端口扫描器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com