如何在scapy中发送多个数据包

时间:2015-12-23 00:42:00

标签: linux udp scapy

我知道之前有人问过这个问题。但是我不清楚如何构造命令以完成我的任务,而前一个问题从未标记为已回答。我需要使用scapy发送多个数据包,我的用例是使用UDP将DNS查询发送到远程服务器服务器。这是我需要使用的命令:

sr1(IP(dst="192.168.155.128")/UDP()/DNS(rd=1,qd=DNSQR(qname="www.oreilly.com")))

在上面的示例中,sr1表示在第3层发送数据包,但有更多的函数定义要发送数据包。请参阅Here. 大括号之间的其余部分是如何使用scapy为DNS记录组装DNS查询数据包。

但我想要做的是在一个命令中发送多个数据包。上一个问题有一个建议的答案:

sendp(p, iface=eth0, inter=1 , count=x )

其中p是您的数据包或数据包列表,count是重复发送操作的次数。

这是我迷失的地方。如果这是正确答案,我将如何将其整合到我的命令中,它会是什么样子?

提前致谢!

1 个答案:

答案 0 :(得分:5)

工作解决方案:在上面的示例中,您将需要使用不同的函数定义来发送数据包。

将sendp替换为send,(sendp在第2层发送,发送使用第3层,sr1设计为仅发送一个数据包)并放置" ,count = x"在最后两个结束括号之间。其中x =您要发送的数据包数。从scapy提示符运行命令和输出应如下所示:

>>> send(IP(dst="192.168.155.128")/UDP()/DNS(rd=1,qd=DNSQR(qname="www.oreilly.com")), count=100 )
.......................................................................    .............................
Sent 100 packets.
>>> 

也可以构造一个简单的ICMP数据包。在这个例子中,我们发送100个ICMP数据包。

>>> send(IP(dst="192.168.155.128")/ICMP()/"testICMPpacket", count=100 )
   .......................................................................    .............................
Sent 100 packets.
>>>
相关问题