Scapy:强大的Python网络包解析库

caocao1年前教程267

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

cap包解析
pip install scapy

随着Python越来越流行,在安全领域的用途也越来越多。比如可以用requests模块撰写进行Web请求工具;用sockets编写TCP网络通讯程序;解析和生成字节流可以使用struct模块。而要解析和处理网络包在网络安全领域更加普遍,时常我们会使用tcpdump和wireshark(tshark)。但是如果要自己写程序进行处理,则需要更灵活的语言包(库),这就是本文要介绍的Scapy。

概述

Scapy是一个用于对底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常简便。该类库可以在网络安全领域有非常广泛用例,可用于漏洞利用开发、数据泄露、网络监听、入侵检测和流量的分析捕获的。Scapy与数据可视化和报告生成集成,可以方便展示起结果和数据。Scapy的基本理念是提出一个基于领域特定语言,从而轻松快速地进行有线格式(Wire Format)管理。

安装运行

Scapy可以通过pip安装:

git clone github /secdev/scapy
cd scapy./run_scapy
cap包解析
>>> pkts = rdpcap("sip-rtp-opus-hybrid.pcap")>>> pktspcap: TCP:0 UDP:7 ICMP:0 Other:0>

也可以通过发行版的包管理器安装,比如yum,但是其版本可能太老已经过时。

也可以通过直接从官方仓库clone源码安装:

cap包解析
>>> fd = open("sip-rtp-opus-hybrid.pcap", "rb")>>> reader = PcapReader(fd)>>> reader0x7f913c7c24e0>>>> for CC in reader:...: print(CC)...:
cap包解析
>>> fd.close()
>>> first= CC[0]>>> first.haslayer(IP)True>>> IP in firstTrue

然后,可以简单地运行:

用法示例解析PCAP抓包

用Scapy做的最简单的事情就是读取PCAP文件。让我们下载Wireshark的sip-rtp-opus-hybrid.pcap示例PCAP数据包为例子:

用rdpcap()函数引入PCAP文件,读取其内容的函数:

>>> for CC in sniff(count=5):...: CC.show()...:

为了更详细读取PCAP文件中的数据,可以使用PcapReader从打开的文件句柄中迭代地读取数据包,一次一个包,bing实例化的对象:

如上面所示,每个数据包都以有线格式提供。Scapy将每个数据包以网络层的堆栈。Scapy层对象对应于网络协议及其格式。

获取第一个数据包并检查IP层是否可用:

cap包解析cap包解析cap包解析

要解析来自特定层的数据包,可按想要的层对其进行索引,并让Scapy打印所有字段:

要以十六进制打印数据包,可以使用hexdump()功能:

>>> hexdump(first)

为了完全解析和完美地输出一个数据包,需要调用show()方法:

>>> first.show()

可以看到,上面未能有效地解析SI负载。这是因为Scapy主要处理二进制协议网络堆栈的较低部分,而SIP不是。但是可以引入第三方模块来解析一些应用层协议,比如HTTP协议。

实时抓包解析

比如可以读取带有预先捕获的数据包的PCAP文件,如果要做一些数据包嗅探,如果系统准备好在混杂模式下使用网络接口,可以调用sniff()从网卡获取一些数据包的函数:

cap包解析
>>> for CC in sniff(filter="udp", count=5):...: CC.show()...:
>>> capture = sniff(filter="udp", count=5)>>> capture<Sniffed: TCP:0 UDP:5 ICMP:0 Other:0>>>> wrpcap("udp.pcap", capture)

Scapy中也可以使用和Wireshark(tshark)、tcpdump相同BPF语法来过滤嗅探到的数据包和许多其他工具支持:

要将捕获的数据包保存到PCAP文件中以供进一步分析,可以使用wrpcap()函数来导出到文件:

>>> CC = IP(dst="XXX") / ICMP()>>> CC.show()

发送ping包

除了可以嗅探(捕获和解析)网络数据包,但Scapy也支持生成数据包进行各种主动欺骗:网络扫描、服务器探测、通过发送攻击系统格式错误的请求等等。

下面尝试ping一个服务器,涉及到要给服务发送一个ICMP数据包:

cap包解析
>>> rr=sr1(CC)Begin emission:Finished sending 1 packets....*Received 4 packets, got 1 answers, remaining 0 packets>>> rr
cap包解析

相关文章

『编程语言讨论求助区』

在极客的语气下,我将复述您的内容: 在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习...

VirtualBox 安装kali linux保姆级教程(2)

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 回答1: 首先,下载并...

Kali安装教程(Virtual-Box虚拟机安装教程).docx 70页VIP

Kali安装教程(Virtual-Box虚拟机安装教程).docx 70页VIP

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 Kali安装教程 Vir...

继永恒之蓝后,微软曝高危漏洞永恒之黑,Win10系统受影响

继永恒之蓝后,微软曝高危漏洞永恒之黑,Win10系统受影响

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 3月12日,微软发布了一...