Tôi đang cố gắng viết một kịch bản Python sử dụng mô-đun Scapy để ping một dải IP nội bộ để xác định IP nào đang trực tuyến. Tôi đã có này cho đến nay:Ping một dải IP với Scapy
#!/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"
Và chương trình sẽ ngồi trong một thời gian không làm gì cả, và sau đó nếu tôi giết nó bằng tổ hợp phím CTRL + CI nhận được một thông báo lỗi:
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'
Tuy nhiên nếu Tôi thử nó với một địa chỉ IP duy nhất, thay vì một phạm vi, nó hoạt động. Như thế này:
#!/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"
Bất kỳ ai biết cách khắc phục sự cố này? Hay bạn có bất kỳ ý tưởng nào khác về cách tôi có thể ping một dải IP với Scapy, để xác định máy chủ nào đang trực tuyến?
Sự cố của bạn phải thực hiện với việc gán giá trị trả lại của 'sr1 (gói)' để trả lời. Tôi không quen thuộc với 'scapy' nên tôi không thể cung cấp thêm sự giúp đỡ nào ngoài việc đó, nhưng bắt đầu từ đó. – brc