我的端口扫描器需要很长时间才能扫描端口。这是我的代码,有人可以帮我吗?

时间:2019-02-20 16:58:33

标签: python

这是我的代码。有人可以向我解释如何使我的端口扫描程序更快吗?我通过使用“ connect.ex()”连接到ip来制作了端口扫描程序,也许我应该使用其他命令?

try:
    for port in range(1,1000):
        sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        result = sock.connect_ex((remoteHost,port))
        if result == 0:
            print(colored("[+] Port {}: Open".format(port), 'green'))
            sock.close()

1 个答案:

答案 0 :(得分:1)

因此,快速浏览Github导致我发现portSpider本身就是

  

具有模块的闪电般快速多线程网络扫描器框架。

通读它,我注意到它使用socket.connect而不是connect_ex。尽管绝对可以提高性能,但绝对可以使用多线程。我倾向于使用现有解决方案,而不是从头开始构建解决方案,除非这只是为了解决问题。

要特别加速示例,您可以使用multiprocessing.Pool进行简单优化。

def scan_port(port):
    try:
        sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        result = sock.connect_ex((remoteHost,port))
        if result == 0:
            print(colored("[+] Port {}: Open".format(port), 'green'))
            sock.close()
    except:
        pass  # you should handle this error

import multiprocessing as mp

p = mp.Pool()  # will parallelize to number of CPUs you have
p.map(scan_port, range(1, 1000))