关于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的文件夹,使用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命令了。先来构造一个接口的抓包,这里要借助sniff这个函数,使用说明如下:

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

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

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

通过这样的引用,可以找到sctp的类型,编号是遵循sctp协议的,如下图:

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

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

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

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

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

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

scapy安装及SCTP包分析的更多相关文章

  1. tcpdump安装配置及抓包分析

    http://blog.csdn.net/e421083458/article/details/23963189 cpdump安装配置及抓包分析 预装软件:[plain] view plain cop ...

  2. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  3. [转] Android实时抓包分析 : 善用adb调试桥

    Android实时抓包分析 : 善用adb调试桥   谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...

  4. 可视化数据包分析工具-CapAnalysis

    可视化数据包分析工具-CapAnalysis 我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具-CapAnalysis(可视化数据包分析工具),将比Xpli ...

  5. Wireshark和TcpDump抓包分析心得

    Wireshark和 TcpDump抓包分析心得  1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...

  6. python编写网络抓包分析脚本

    python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...

  7. 使用wireshark抓取TCP包分析1

    使用wireshark抓取TCP包分析1 前言 介绍 目的 准备工作 传输 创建连接 握手 生成密钥 发送数据 断开连接 结论 前言 介绍 本篇文章是使用wireshrak对某个https请求的tcp ...

  8. 抓包分析、多线程爬虫及xpath学习

    1.抓包分析 1.1 Fiddler安装及基本操作 由于很多网站采用的是HTTPS协议,而fiddler默认不支持HTTPS,先通过设置使fiddler能抓取HTTPS网站,过程可参考(https:/ ...

  9. tcpdump+wireshark抓包分析

    上一篇文章中,我们介绍了tcpdump如何抓包. tcpdump是命令行下便捷的抓包和分析工具,但使用方式不够友好, wireshark是带图形化界面的抓包和分析工具,操作简便,但需要主机有显示器. ...

随机推荐

  1. 老的工程移植到AndroidStudio需要修改的注意事项

    之前老的工程用android-apt编译,如果要在新的AndroidStudio编译至少需要修改一下几部分: 1. 修改project里的build.gradle dependencies { cla ...

  2. Buy the Ticket(卡特兰数+递推高精度)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. 【Aladdin Unity3D Shader编程】之三 光照模型(二)

    高光反射模型 Specular=直射光*pow(cosθ,高光的参数) θ:是反射光和视野方向的夹角 编写高光反射Shader Shader "AladdinShader/07 Specul ...

  4. JS外链

    <script type=”text/javascript” src=”example.js”></script>   外链的javascript都有一个.js的后缀,但是这并 ...

  5. linux-mkdir

    mkdir mkdir : 可以用来创建目录,如果不加创建路径即在本路径下创建一个新的指定的目录,否则即在给出的路径下创建目录. 目录创建:目录名尽量见名知意,根据不同需要分层创建,尽量避免在同一目录 ...

  6. 【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)

    这几天没更新主要是因为没有一款合适的后端框架来支持我们的Web API项目Demo, 所以耽误了几天, 目前最新的代码已经通过Sqlite + NHibernate + Autofac满足了我们基本的 ...

  7. plsql远程连接虚拟机上的oracle

    下载oracle instantclient_11_2和plsql 将oracle instantclient_11_2解压到任意目录 在此目录下新建network,在network目录下新建admi ...

  8. 如何在工程中使用axis2部署webservice

    有一个最简单的方法就是把axis2.war中的内容作为Web Project的基础, 来进行开发. 不过为了更清楚的了解如何在一个已有的Web Project中嵌入axis2, 那就手动来配置.大致分 ...

  9. 《项目架构那点儿事》——快速构建Junit用例

    [前 言]按照惯例,在实际项目中我往往会对自己编写的程序进行测试,当测试通过后才能将其用于实战中,当然,编写单元测试是不可避免的,可以直接清晰的检验出 我们程序的可靠性.可只执行性,从中发现问题从而得 ...

  10. Centos下配置tomcat7的https证书

    近期搞定了HTTPS配置,特此记录. 1.把下载的文件拷贝到cert文件夹,然后放在tomcat根目录下(与conf同一级目录).2.配置conf下的server.xml,修改下面3个节点,如下: & ...