Я пытаюсь написать скрипт 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, чтобы определить, какие хосты находятся в сети?
sr1(packet)
для ответа. Я не знаком сscapy
, поэтому больше ничем помочь не могу, но начнем с этого. - person brc   schedule 24.09.2011