【发布时间】:2021-01-17 12:22:30
【问题描述】:
我已经在 Scapy 中构建了一个 ARP 数据包(使用 Python),我正在尝试一遍又一遍地发送这个数据包,不间断,直到从目的地接收和回答,保存响应并打破循环。 我试图用谷歌搜索它没有成功。因此,我在这里试试运气,很高兴收到如何以有效方式做到这一点的想法。谢谢!
【问题讨论】:
我已经在 Scapy 中构建了一个 ARP 数据包(使用 Python),我正在尝试一遍又一遍地发送这个数据包,不间断,直到从目的地接收和回答,保存响应并打破循环。 我试图用谷歌搜索它没有成功。因此,我在这里试试运气,很高兴收到如何以有效方式做到这一点的想法。谢谢!
【问题讨论】:
Scapy 的sr1 函数发送一个数据包,并等待它的答复最多timeout 秒。如果收到应答,sr1 返回接收到的数据包(如果有),否则返回None。所以你基本上可以用这个循环做你想做的事:
from scapy.all import ARP, sr1
loop = True
request = ARP(pdst="10.0.0.1")
while loop:
response = sr1(request, timeout=5)
if response is None:
print('no response after 5 seconds. retrying ...')
else:
loop = False
print('I got an answer:')
response.show()
【讨论】:
srflood:scapy.readthedocs.io/en/latest/api/scapy.sendrecv.html