Проверка диапазона IP-адресов с помощью Scapy

Я пытаюсь написать сценарий Python, который использует Модуль Scapy для проверки связи внутреннего диапазона IP-адресов, чтобы определить, какие IP-адреса находятся в сети. У меня пока что:

#!/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 + C, я получаю сообщение об ошибке:

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"

Кто-нибудь знает, как я могу решить эту проблему? Или у вас есть другие идеи, как я могу пропинговать диапазон IP-адресов с помощью Scapy, чтобы определить, какие хосты подключены к сети?

7
задан user961124 24 September 2011 в 18:33
поделиться