您的位置:首页 > 其它

在自动化测试中应用Scapy来收发数据包

2017-03-13 19:20 281 查看
【摘要】

Scapy是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。它提供多种类别的交互式生成数据包或数据包集合、对数据包进行操作、发送数据包、包嗅探、应答和反馈匹配等等功能。在功能测试中,在测试业务流程时利用Scapy来生成、发送、接收、应答数据包,并对接收到的数据包进行匹配与校验等操作,从而高效地进行自动化测试。本文将详细介绍如何利用Scapy进行收发包操作。

【关键词】Scapy  接收与发送数据包

1     在测试过程中,人工触发各种测试场景(正常或异常),需要构造各种报文,有的异常报文很难构造,测试效率低。在测试过程中,抓到报文后,人工校验报文,比对报文字段,测试效率非常低。

     解决思路

在测试过程中,我们利用Scapy生成我们所需要的数据报文来构造测试(正常或异常)场景,且用Scapy来自动接收并校验报文,从而使测试效率大大提高。

3     (1)   send(),在第三层发送数据包,但没有接收功能。如:

send(IP(dst="10.62.40.45",ttl=1)/ICMP())
(2)   sendp(),在第二层发送数据包,但没有接收功能。如:

sendp(Ether()/IP(dst="10.62.40.45",ttl=1)/ICMP())
(3)   sr(),在第三层发送数据包,有接收功能。

实现的功能是ping主机10.104.4.1。而且是发了4个数据包,得到的结果p可以看到一个tuple元组,可以用type方法验证一下,而且这个元组的成员p[0]和p[1]也分别是元组,p[0]是一对对收发数据包,p[1]是一些没有得到回复的包。如果要想看看每个收发数据包的具体情况,可以用p[0][1]等来查看。

(4)   sr1(),在第三层发送数据包,有接收功能,但只接收第一个数据包。

从下面的图看到,我们发了四个数据包,但是结果p却只是一个数据包,并可以看出这个数据包的内容和我们上面sr()的p[0][0]一样。所以,sr1()只是接收第一个数据包。

(5)   srloop(),在第三层连续发送数据包,有接收功能,且连续接收数据包,如下:

(6)   srp()、srp1()、srploop()与上面(3)、(4)、(5)相同,只是工作在第二层。

(7)   sniff(),接收报文。

sniff()常用的参数包括:

iface:指定抓包的eth口;filter:抓包时的过滤条件,filter的填写语法是按照pcap的规则,具体可参见:http://www.manpagez.com/man/7/pcap-filter/;count:抓包的个数;timeout:停止抓包的时长;prn:按照要求显示返回的数据包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Scapy