扫一扫分享
Scapy 是一个用于对底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常简便。该类库可以在在网络安全领域有非常广泛用例,可用于漏洞利用开发、数据泄露、网络监听、入侵检测和流量的分析捕获的。Scapy与数据可视化和报告生成集成,可以方便展示起结果和数据。Scapy的基本理念是提出一个基于领域特定语言,从而轻松快速地进行有线格式(Wire Format)管理。
Scapy可以通过pip安装:
pip install scapy
也可以通过发行版的包管理器安装,比如yum,但是其版本可能太老已经过时。也可以通过直接从官方仓库clone源码安装:
git clone github /secdev/scapy
然后,可以可以简单地运行:
cd scapy
./run_scapy
解析PCAP抓包
用Scapy做的最简单的事情就是读取PCAP文件。让我们下载Wireshark的sip-rtp-opus-hybrid.pcap 示例PCAP数据包为例子:用rdpcap()函数引入PCAP文件,读取其内容的函数:
>>> pkts = rdpcap("sip-rtp-opus-hybrid.pcap")
>>> pkts
<sip-rtp-opus-hybrid.pcap: TCP:0 UDP:7 ICMP:0 Other:0>
为了更详细读取PCAP文件中的数据,可以使用PcapReader从打开的文件句柄中迭代地读取数据包,一次一个包,bing实例化的对象:
>>> fd = open("sip-rtp-opus-hybrid.pcap", "rb")
>>> reader = PcapReader(fd)
>>> reader
<scapy.utils.PcapReader at 0x7f913c7c24e0>
>>> for CC in reader:
...: print(CC)
...:
>>> fd.close()
如上面所示,每个数据包都以有线格式提供。Scapy 将每个数据包以网络层的堆栈。Scapy层对象对应于网络协议及其格式。获取第一个数据包并检查IP层是否可用:
>>> first= CC[0]
>>> first.haslayer(IP)
True
>>> IP in first
True
手机预览