Pythonでポートスキャンをする方法が載っていたので試してみた。
ポートスキャンは時間がかかると思っていたが、一つ一つの処理はそんなでもないが、tcpで通信する分タイムアウトを待って応答を返しているのでシリーズで処理すると時間がかかるようだ。
一応マルチスレッドで並列処理してみた。
import socket import threading scan_range = [1, 2000]; host = "localhost"; threads = []; ports = []; isopen = []; def Run(port, i): con = socket.socket(socket.AF_INET, socket.SOCK_STREAM) return_code = con.connect_ex((host, port)) con.close() if return_code == 0: isopen[i] = 1; count = 0; for port in range(scan_range[0], scan_range[1]): ports.append(port); isopen.append(0); thread = threading.Thread(target=Run, args=(port, count)); thread.start(); threads.append(thread); count = count + 1; for i in range(len(threads)): threads[i].join(); if isopen[i] == 1: print("%d open" % ports[i]);