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

caocao2年前教程311

在线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")
  • >>> pkts
  • pcap: TCP:0 UDP:7 ICMP:0 Other:0>

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

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

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

然后,可以简单地运行:

用法示例解析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包解析
阅读剩余的43%

相关文章

2023-05-29 如何使用 hashcat 破解 RAR、ZIP 压缩包密码

RAR、Zip 压缩包密码破解教程 大家好!今天我要向大家介绍一种极客的方法来破解加密的RAR和Zip压缩包密码。作为一个程序猿,我们不能容忍那些无良搬运工加密压缩包然后敲诈钱财的行为。所以,我们要用...

小程序抓包&反编译测试从0到1

小程序抓包&反编译测试从0到1

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

centos7-如何手动安装网卡驱动文件

centos7-如何手动安装网卡驱动文件

在安装网卡驱动之前,我们需要进行一些准备工作。首先,我们可以通过两种途径来查看网卡的型号。一种是直接查看物理网卡硬件上的厂商标识,但这需要对桌面机或服务器进行拆机操作才能查看。另一种是从计算机厂商的网...

【Linux系统】第6节 Linux系统压缩与解压缩文件

【Linux系统】第6节 Linux系统压缩与解压缩文件

压缩与解压缩实例操作 对文件进行压缩与解压缩 打开终端,并以超级管理员身份登录运行,回到根目录下,先查询根目录下有哪些目录与文件,因为tmp是存放临时文件的,方便练习,进入该目录。 在/tmp目录中...