0
私はクラス(python-nmapライブラリを使用することはできません)のためのPythonの単純なポートスキャナで作業しています。アドレス、私はそれがIPの範囲を使用して動作するようにすることはできません。ポートがPythonでIP範囲をスキャンする
これは私が持っているものです。
#!/usr/bin/env python
from socket import *
from netaddr import *
# port scanner
def port_scan(port, host)
s = socket(AF_INET, SOCK_STREAM)
try:
s = s.connect((host, port))
print "Port ", port, " is open"
except Exception, e:
pass
# get user input for range in form xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx and xx-xx
ipStart, ipEnd = raw_input ("Enter IP-IP: ").split("-")
portStart, portEnd = raw_input ("Enter port-port: ").split("-")
# cast port string to int
portStart, portEnd = [int(portStart), int(portEnd)]
# define IP range
iprange = IPRange(ipStart, ipEnd)
# this is where my problem is
for ip in iprange:
host = ip
for port in range(startPort, endPort + 1)
port_scan(port, host)
だから私は
port_scan(port, host)
print port # added
後、私は結局再び
host = ip
print host # added
下にprint文を追加した後、コードを実行したときに次の出力を表示します。
[email protected]:~/Desktop/python# python what.py
Enter IP-IP: 172.16.250.100-172.16.250.104
Enter port-port: 20-22
172.16.250.100
20
21
22
172.16.250.101
20
21
22
...and so on
ありがとうございます! 私は得ることができるすべてのヘルプに感謝!
code picture for reference, slightly different
これらのポートのいくつかが開いていることがわかっていない限り、それ自体で出力されても問題はありません。なぜなら、そうでなければ問題を診断するのに役立つ多種多様なエラーをマスクするので、あなたのコードに 'Exception'を持たせるのは悪い考えです。何が起こっているのかを見るために、 'print'ステートメントをexceptブロックに張っておいてください。 – larsks
はいnetaddr.ip.IPAddressのリストを提供するnetaddr.IPrangeを使用することによって問題が生じるかどうか不思議です。しかし、述べたように、それはあなたのすべてのエラーを隠しているように見えます。 – bravosierra99
ソケットを閉じることを忘れないでください – VPfB