scapy安装及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的文件夹,使用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包分析的更多相关文章
- tcpdump安装配置及抓包分析
http://blog.csdn.net/e421083458/article/details/23963189 cpdump安装配置及抓包分析 预装软件:[plain] view plain cop ...
- 实战录 | 基于openflow协议的抓包分析
<实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...
- [转] Android实时抓包分析 : 善用adb调试桥
Android实时抓包分析 : 善用adb调试桥 谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...
- 可视化数据包分析工具-CapAnalysis
可视化数据包分析工具-CapAnalysis 我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具-CapAnalysis(可视化数据包分析工具),将比Xpli ...
- Wireshark和TcpDump抓包分析心得
Wireshark和 TcpDump抓包分析心得 1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- 使用wireshark抓取TCP包分析1
使用wireshark抓取TCP包分析1 前言 介绍 目的 准备工作 传输 创建连接 握手 生成密钥 发送数据 断开连接 结论 前言 介绍 本篇文章是使用wireshrak对某个https请求的tcp ...
- 抓包分析、多线程爬虫及xpath学习
1.抓包分析 1.1 Fiddler安装及基本操作 由于很多网站采用的是HTTPS协议,而fiddler默认不支持HTTPS,先通过设置使fiddler能抓取HTTPS网站,过程可参考(https:/ ...
- tcpdump+wireshark抓包分析
上一篇文章中,我们介绍了tcpdump如何抓包. tcpdump是命令行下便捷的抓包和分析工具,但使用方式不够友好, wireshark是带图形化界面的抓包和分析工具,操作简便,但需要主机有显示器. ...
随机推荐
- shuffle过程简介--笔记
数据保存在hdfs上 拿到数据后分片处理 输入到Map 输出键值对 写到缓存,满的时候溢写到磁盘 缓存的数据写入磁盘的过程中,分区排序,合并 多个磁盘文件归并 通知Reduce任务拉取 Map端的sh ...
- git使用教程之了解git
1.理解git快照 快照的作用就相当于将旧文件所占的空间保留下来,并且保存一个引用,而新文件中会继续使用与旧文件内容相同部分的磁盘空间,不同部分则写入新的磁盘空间.git有一个HEAD指针,这个指针可 ...
- visual studio 2013使用github获取代码
如图点击"视图""团队资源管理器". 点击主页上方的那个插头形状按钮"连接到团队项目".点击"克隆" 然后在克隆 ...
- OOA、OOD、OOP分别是什么?
什么是面向对象分析(OOA)? "面向对象分析是一种分析方法,这种方法利用从问题域的词汇表中找到的类和对象来分析需求." 什么是面向对象设计(OOD)? "面向对象设计是 ...
- python迭代器以及itertools模块
迭代器 在python中,迭代器协议就是实现对象的__iter()方法和next()方法,其中前者返回对象本身,后者返回容器的下一个元素.实现了这两个方法的对象就是可迭代对象.迭代器是有惰性的,只有在 ...
- oracle数据库热备中的备份和恢复及例子
手工热备(开库状态) 备份控制文件: alter database backup controlfile to '/u01/oradata/prod/con.bak1'; 备份数据文件(这里用到pl/ ...
- 发放福利:原价135元/年的阿里云CDN流量包(500GB)免费送
不少朋友看过本站推荐的两篇文章:1. <阿里云全民云计算活动:云服务器ECS二折起>2. <阿里云双11优惠活动-爆款云服务器> 大部分人都说不错,很快下单购买了服务器,后续使 ...
- 页面第一次加载,JS没有效果,刷新一下就好了
问题详述:页面跳转的时候,第一个第二个页面都没有问题,跳到第三个页面,JS脚本没有起作用,刷新一下就好了. 1.猜测:第一个页面和第二个页面的JS,会对第三个页面产生影响,(因为之前没有这个问题,只改 ...
- PostgreSQL 下生成 UUID(Guid)
最近在Windows 10 下安装了 PostgreSQL(postgresql-9.6.3-1-windows.exe),在学习过程中,发现PostgreSQL 支持UUID(Guid)类型,但是却 ...
- VS2015如何连接mySQL数据库图文
1.新建一个工程名叫mysql,编程环境选择c#,然后选择windows窗体应用程序,新建一个窗体用于显示查询到sql数据库的数据集 2.从工具箱向form1窗体上拖一个按钮和datagridview ...