Python中Scapy使用方法,模块中的常用函数,简单的端口扫描编写

Scapy是一个强大的网络数据包操作库,用于网络嗅探、漏洞利用开发等。它可以创建、修改和发送几乎任何网络协议的数据包。本文介绍了如何使用Scapy构造IP、Ether数据包,设置源、目标地址,以及通过send()、sendp()、sr()、sr1()和srp()函数发送和接收数据包。还展示了如何进行简单的端口扫描和使用sniff()函数监听网络流量。

目录

scapy是什么

scapy的使用

IP()

src()和dst()

Ether()

采用分层的方式来构造数据包

raw()和hexdump()

summary()和show()

如何在scapy中发送和接收数据包

send()和sendp()

sr()、sr1()和srp()

简单的端口扫描

sniff()

使用scapy编写简单的端口扫描


scapy是什么

scapy是一个可用作网络嗅探,独立运行的工具,它提供了一个和python相同的交互方式命令行环境,可以在kali内单独运行,该类库在网络安全领域有非常广泛用例,可用于漏洞利用开发、流量的分析捕获等等。我们使用这个库实现对网络数据包的发送、监听和解析,编写可以用进行网络探测扫描的脚本

scapy的使用

scapy库pycharm内的导入

file → settings → project:pythonproject → python interpreter

点击“+”,搜索scapy,install package

IP()

在scapy中,使用了”类+属性”的方法来构造数据包,每一个网络协议都是一个类,所以只需要实例化一下这个类,就可以创建一个该协议的数据包,假设我们构造一个IP数据包,如下:

IP() 

导入scapy库构造数据包

from scapy.layers.inet import IP

pkt = IP()
print(pkt)

执行结果如图下所示,以字节格式显示了IP数据包的结果,由于bytes保存的就是原始的字节数据,可以直接在网络上进行传输

src()和dst()

对于IP来说,最重要的就是源ip和目的ip,这两个属性分别以src类和dst类来实现

比如我们想构造一个发往“192.168.200.1”的数据包

from scapy.layers.inet import IP
from scapy.all import ls

pkt = IP(dst="192.168.200.1")
ls(pkt)

执行结果如下图,src为源ip,dst则是目标ip,ls()类用来实现查看一个数据包的详细信息

以上是构造了一个最简单的数据包,IP类的属性非常复杂,除了最重要的源地址和目的地址外,还有TTL值,版本,长度,协议类型,校验等等

在了解了src和dst后,我们可以构造一个TTL值为22,源地址为192.168.200.140且目的地址为192.168.200.1的数据包

from scapy.layers.inet import *
from scapy.all import ls

pkt = IP(src="192.168.200.140",dst="192.168.200.1",ttl=22)
ls(pkt)

Ether()

scapy采用分层的方式来构造数据包,以最简单的TCP/IP协议簇为例,自顶而下分别为

应用层↓

        传输层↓

            &n

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值