Scapyモジュールを使用して内部IP範囲をpingしてどのIPがオンラインかを判断するPythonスクリプトを作成しようとしています。ScapyでIP範囲をpingする
#!/usr/bin/python
from scapy.all import *
conf.verb = 0
for ip in range(0, 256):
packet = IP(dst="192.168.0." + str(ip), ttl=20)/ICMP()
reply = sr1(packet)
if "192.168." in reply.src:
print reply.src, "is online"
を、プログラムは何もしないしばらく座って、私はCTRL + CIでそれを殺すならば、エラーメッセージが表示されます:私はこれまでのところ、これを持って
Traceback (most recent call last):
File "sweep.py", line 7, in <module>
if "192.168." in reply.src:
AttributeError: 'NoneType' object has no attribute 'src'
をしかし、もし私は範囲の代わりに、単一のIPアドレスでそれを試して、それは動作します。このように:
#!/usr/bin/python
from scapy.all import *
conf.verb = 0
packet = IP(dst="192.168.0.195", ttl=20)/ICMP()
reply = sr1(packet)
if "192.168." in reply.src:
print reply.src, "is online"
誰でもこの問題を解決する方法を知っていますか?あるいは、ScapyでIP範囲をpingしてどのホストがオンラインになっているかを知る方法は他にもありますか?
あなたの問題は、返信に 'sr1(packet)'の戻り値を割り当てることと関係があります。私はscapyに精通していないので、それ以上の助けはできませんが、そこから始めましょう。 – brc