赞
踩
**Scapy **是一种用于计算机网络的数据包处理工具,由 Philippe Biondi 用 Python 编写。它可以伪造或解码数据包,通过网络发送它们,捕获它们,并匹配请求和响应。它还可以用于处理扫描、跟踪路由、探测、单元测试、攻击和网络发现等任务。
Scapy 为 libpcap(Windows 上是 WinPCap/Npcap)提供了一个Python接口,与 Wireshark 提供视图和捕获GUI的方式类似。它可以与许多其他程序接口来提供可视化,包括用于解码数据包的 Wireshark、用于提供图形的GnuPlot、用于可视化的 graphviz 或 VPython 等。
Scapy自2018年起开始支持Python 3(Scapy 2.4.0+)。
Kamene是Scapy的一个独立分支。最初,创建它的目的是向 Scapy 添加 Python 3 的支持,并将其命名为scapy3k。自2018年更名为Kamene,继续独立发展。
——维基百科
Scapy是一个Python程序,使用户能够发送,嗅探,剖析和伪造网络数据包。此功能允许构建可探测,扫描或攻击网络的工具。更多内容可以查看 Scapy 的官方文档。
首先我们需要通过 pip 的方式安装 scapy 包:pip install scapy
Scapy 不仅仅可以做为 Python 库进行程序的编写,它同时也为我们提供了一种命令行的交互方式,下面我们通过的方式来对 Scapy 进行简单使用:
>>> scapy >>> a = Ether()/IP()/TCP() # 使用默认参数构造一个TCP数据包 >>> a.show() # 显示包的信息 ###[ Ethernet ]### dst= e5:d3:32:d7:6b:4c src= b7:58:7f:44:7a:e5 type= IPv4 ###[ IP ]### version= 4 ihl= None tos= 0x0 len= None id= 1 flags= frag= 0 ttl= 64 proto= tcp chksum= None src= 192.168.0.110 dst= 127.0.0.1 \options\ ###[ TCP ]### sport= ftp_data # 默认源端口为ftp_data的20端口 dport= http # 默认目的端口是http的80端口 seq= 0 ack= 0 dataofs= None reserved= 0 flags= S window= 8192 chksum= None urgptr= 0 options= []
>>> packet = IP(dst='192.168.0.106')/ICMP()/b"I'm a ping bag" # 构造一个 ping 包 >>> reply = sr1(packet) # 发送包并接收一个回应的包 Begin emission: ..Finished sending 1 packets. ........................* Received 27 packets, got 1 answers, remaining 0 packets >>> reply.show() # 显示接收包的信息 ###[ IP ]### version= 4 ihl= 5 tos= 0x0 len= 42 id= 55515 flags= frag= 0 ttl= 64 proto= icmp chksum= 0x1fd0 src= 192.168.0.106 dst= 192.168.0.109 \options\ ###[ ICMP ]### type= echo-reply code= 0 chksum= 0x87fd id= 0x0 seq= 0x0 ###[ Raw ]### load= "I'm a ping bag" # 可以发现返回的数据和我们发送的是一样的
通过上面的两个例子,我们简单的使用了一下 scapy,能够很明确的体会到 scapy 功能的强大与使用的简单,想要学习更多 scapy 的命令行使用可以查看官方文档进行学习。
在后面的学习中,我们将使用 scapy 用编写 Python 程序的方式来完成我们的各种需求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。