在自动化测试中应用Scapy来收发数据包
2017-03-13 19:20
281 查看
【摘要】
Scapy是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。它提供多种类别的交互式生成数据包或数据包集合、对数据包进行操作、发送数据包、包嗅探、应答和反馈匹配等等功能。在功能测试中,在测试业务流程时利用Scapy来生成、发送、接收、应答数据包,并对接收到的数据包进行匹配与校验等操作,从而高效地进行自动化测试。本文将详细介绍如何利用Scapy进行收发包操作。
【关键词】Scapy 接收与发送数据包
(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是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。它提供多种类别的交互式生成数据包或数据包集合、对数据包进行操作、发送数据包、包嗅探、应答和反馈匹配等等功能。在功能测试中,在测试业务流程时利用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:按照要求显示返回的数据包。
相关文章推荐
- python应用系列教程——python使用scapy监听网络数据包、按TCP/IP协议进行解析
- 关于解决应用层提取NDIS驱动数据包丢包的方案,通过event加共享内存实现
- 高手请进:怎么样解析固定端口上收发的数据包中的内容(在线等)
- PB应用中收发电子邮件
- Android 应用中收发短信
- Outlook应用指南(5)——电子邮件收发技巧
- 邮件收发小应用
- 在VB、VFP应用系统中收发邮件
- 使用UI Automation实现自动化测试--7.1 (模拟键盘输入数据在自动化测试中的应用)
- [原创] Ring3挂钩实现网址过滤、重定向——《另类挂钩-RING3数据包监视》应用
- 实验二:电子邮件服务器的安装和管理及邮件收发的高级应用
- PB应用中收发电子邮件
- 在PB应用中收发电子邮件
- Outlook应用指南(2)——电子邮件收发技巧 推荐
- asp.net(C#)下应用MSMQ收发消息
- KITLConnectToDesktop过程及收发数据包
- [转载]自动化测试在功能测试中的应用
- 关于解决应用层提取NDIS驱动数据包丢包的方案,通过event加共享内存实现
- PPPOE数据包转换及SharpPcap应用
- 存货收发存应用实例