这是我的代码。有人可以向我解释如何使我的端口扫描程序更快吗?我通过使用“ 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()
答案 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))