Pythonの初心者で、ある時点で立ち往生しています。Python 3組み込みライブラリのみを使用してポートスキャナーを作成したい(scapyなどを回避することを意味します)次のコードがあります:
import socket
for i in range(1,26):
s = socket.socket()
s.settimeout(0.5)
ip = "74.207.244.221" #scanme.nmap.org
response = s.connect_ex((ip, i))
if response:
print ("%d\tclose" %i)
else:
print ("%d\topen" %i)
s.close()
ここで、これに 2 つの機能を追加したいと思います。
- 閉じたポートとフィルタリングされたポートを区別します。どちらの場合も同じ errno を受け取っているので、最初のパケットを受け取ったか、何も受け取っていないかを確認するにはどうすればよいですか? 私が試した限り、 s.recv() はこれに対して機能していません。
- 試行 (試行) の回数を制御したい、つまり、1 つまたは 2 つの syn パケットのみを送信したい。私は、このプログラムがプローブのために 2 つ以上の syn パケットを送信することを望んでいません。このことはどのように達成できますか?