scapy安装及SCTP包分析

摘要:
关于Scapyscapy是一个强大的交互式数据包处理程序(用Python编写)。它可以伪造或解码大量网络协议包,并可以发送、捕获、匹配请求和回复包。tcpdump最重要的特性是它具有许多更突出的特性——发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密信道(VOIP)、ARP缓存攻击(VLAN)等。它使用命令tar–zvxf在操作系统中解压缩。前面提到的SCTP包捕获分析。

关于Scapy

scapy是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等。它可以很容易地处理一些典型操作,比如端口扫描、tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,POF等)。最重要的他还有很多更优秀的特性——发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN)等,这要是其他工具无法处理完成的。

安装Scapy

由于scapy依赖于python,因此在安装scapy前,必须保证python的正确安装,python的安装此处不在赘述,如有需要可查阅网络。本人采用的python2.7。

如设备已联网,可直接用pip install scapy命令一键安装,如设备无法联网,可事先在scapy官方网站(http://www.secdev.org/projects/scapy)下载scapy最新版本,目前最新版本是2.3.3。scapy的官方使用指南详细描述了scapy的各种用法,如有兴趣,自行查阅http://scapy.readthedocs.io/en/latest/index.html

本文演示使用的系统是red hat 4.4.7,在下载完scapy的压缩包后,由于该版本是tgz的格式,在操作系统中使用命令tar –zvxf 解压缩,如下图:

 scapy安装及SCTP包分析第1张

解压后,进入scapy的文件夹,使用sudo python scapy.py install命令安装scapy,当出现welcome字样时,表示scapy安装成功。

在官方文档中也说明了,当在windows下安装scapy时,只需要运行cmd,在控制台界面,找到scapy解压后所在路径,进入后,输入python scapy.py install即可完成安装,当然,前提仍然是要正确安装python。

SCTP抓包分析

前面提到了,scapy可以很方便的构造各种包,目前也支持很多协议。对于通信行业来说,最重要的当然是SCTP包了。了解scapy的初衷是为了在自动化测试中,能够分析sctp包,从而做协议接口测试。网络上对于sctp包的描述较少,个人通过不断的尝试,终于成功将sctp包捕获并且分析和自动匹配,以下开始具体操作过程:

首先,要进入scapy界面:

 scapy安装及SCTP包分析第2张

然后就可以输入scapy命令了。先来构造一个接口的抓包,这里要借助sniff这个函数,使用说明如下:

 scapy安装及SCTP包分析第3张

 构造如下的sniff函数,开始嗅探特定sctp包:

 scapy安装及SCTP包分析第4张

 当抓包完成,会自动结束,此时返回的pkt是一个列表,每个元素是抓包的内容,如下图:

 scapy安装及SCTP包分析第5张

 上图所示的包为一个心跳请求包

scapy安装及SCTP包分析第6张通过这样的引用,可以找到sctp的类型,编号是遵循sctp协议的,如下图:

如果要分析sctp的包内容,那首先要找到的是数据块类型编码为0的sctp包,此时可方便通过循环判断,找到该sctp数据包,如下图:

 scapy安装及SCTP包分析第7张

可见pkt中的第12个包为数据包,以该包为例,可查看该数据包:

 scapy安装及SCTP包分析第8张

至此,就把抓到的sctp包的数据包给提取了出来。由于不支持sctp的更上层协议,因此需要自己去匹配协议字段,找到message type,从而判断消息类型。网上也有牛人可尝试制作新的协议模板,来做到自动匹配,有兴趣可查阅。这里用第一种方法。那么,为了方便知道具体字段标识的内容,我们还是要把抓到的包导出成wireshark可以打开的pcap包,从而方便我们来做编解码,方法如下:

scapy安装及SCTP包分析第9张

则在scapy的文件路径下,会出现test.pcap的抓包,可以下载后用wireshark打开。找到wireshark的同样的第12个包,解码如下:

 scapy安装及SCTP包分析第10张

scapy安装及SCTP包分析第11张

可见,这是一个s1setup的包,而s1setup位于data中的第二个字节,对应的procedure code是17,16进制表示是0x11,和提取到的data中是一致的:

 scapy安装及SCTP包分析第12张

因此,可以在data中判断第二个字节的type code来判断该SCTP所对应的上层消息,从而实现对SCTP的编解码分析。

免责声明:文章转载自《scapy安装及SCTP包分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu Nginx+tomcat 部署web项目D3中常用的比例尺下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python获取文件的绝对路径

python获取文件的绝对路径 importos defload_file(): #获取当前文件路径 current_path = os.path.abspath(__file__) #获取当前文件的父目录 father_path = os.path.abspath(os.path.dirname(current_pat...

计蒜客:百度的科学计算器(简单)【python神解】

题目链接:https://nanti.jisuanke.com/t/15504 题解:python大法好啊,三行代码无人能敌啊! 下面给出AC代码: 1 b=input() 2 a=input() 3 print("%.6f"%eval(a))if '.' in a else print(int(eval(a)))...

python接口自动化测试二十五:执行所有用例,并生成HTML测试报告

      import requestsimport unittestclass TestQQ(unittest.TestCase):    '''测试QQ号接口'''      # 此注释将展示到测试报告的测试组类    def test_qq(self):        '''测试QQ号码,正确的appkey'''      # 此注释将展示到测试报...

Spark python集成

Spark python集成 1、介绍 Spark支持python语言,对于大量的SQL类型的操作,不需要编译,可以直接提交python文件给spark来运行,因此非常简单方便,但是性能要比scala或java慢。对于常规任务,可以使用python来编写,特殊任务还是建议scala编写。 2、使用pyspark启动spark shell(centos) 2...

数据链路层(3) 流量控制

一、流量控制   当AB两台设备在发送数据,如果A设备有较高的发送速度,而B设备只有较低的接收速度,那么就会造成不匹配,容易造成传输错误,因此就需要流量控制。这种情况一般是由于B设备的缓冲区溢出而造成的。   流量控制不止是链路层具备的功能,传输层也具备相应的功能。下面是链路层流量控制与传输层流量控制的区别:   (1)数据链路层的流量控制是点对点的,而传...

pandas的DataFrame与python的dict字典之间的相互转换

一、dict生成DataFrame  1、如果只有一个dict,即一行dataframe数据 # 注:dict的形式必须是如下2种,不然会报错 # 1、dict外面加一层list【】 dict_a = [{'a': 0, 'b': 1, 'c': 2}] # 2、dict内部的数据至少有1个或多个是list形式 # 注:此时dict外面如果加上li...