【发布时间】:2020-01-01 01:15:56
【问题描述】:
所以我正在尝试制作一个程序来扫描 SSH 端口以查找列表中的 IP。因为这个过程非常漫长,我正在尝试使用线程(如果它更适合程序,我可以使用多处理)来使一切更快,但是我遇到了程序说“正在尝试 IP”的问题(这就是它的意思是说每次它扫描 IP 时)很多次都没有给出结果,然后它给出了结果(结果比 IP 扫描要少得多)并且有其他奇怪的模式。它应该说正在尝试 IP,然后是结果,但它没有,甚至结果总是失败,即使它确实找到了 SSH 端口打开的 IP。在某些时候,我很好奇它是否会错过使用 SSH 的 IP,所以我搜索了一个应该有很多 IP 的 IP 范围,即使发布课程的人说他得到了 45000,它也只捕获了 2000 个,是的,我知道,也许发生了一些事情,大量的人关闭了 SSH,但没有,我下载了一些罗马尼亚黑客制作的名为“扫描存档”的东西,里面有一个 SSH 端口扫描器,当我扫描相同的 IP 范围时,我发现了 6600。 那么有人可以帮我找出代码有什么问题并告诉我如何改进它吗?
import socket
import threading
from queue import Queue
from datetime import datetime
time_start = datetime.now()
SSH_ips = []
def scan(ip_number):
ip_try = ip_list[ip_number]
port = 22
try:
print("Trying IP")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((ip_try,port))
if result == 0:
SSH_ips.append(ip_try)
print("Found %d" % (ip_try))
else:
print("Didn't work")
except:
pass
def gulag():
while True:
worker = q.get()
scan(worker)
q.task_done()
q = Queue()
for x in range(15000):
t = threading.Thread(target=gulag)
t.daemon = True
t.start()
for worker in range(0, 65026):
q.put(worker)
q.join()
time_finish = datetime.now()
time_elapsed = time_finish - time_start
ip_list_lenght = len(SSH_ips)
SSH_ips.sort()
print("Found %s IPs in %s." % (ip_list_lenght, time_elapsed));
print(SSH_ips)
【问题讨论】:
-
“代码有什么问题”什么代码?
-
15000是很多线程 -
抱歉,忘记放代码了,我马上就看到了,但是我的互联网被程序变慢了,所以加载编辑需要一些时间。
标签: python python-3.x sockets ssh