searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Scapy安装和使用

2023-05-12 10:42:43
242
0

Scapy是由python编写的工具,可使用这个模块来实现对网络数据包的发送、监听和解析,下面介绍的是在交互模式中scapy的使用。

1.    Scapy安装

可直接使用pip进行安装,pip install scapy

 

2.    Scapy使用

2.1.       scapy启动

直接使用scapy命令启动,启动界面如下:

2.2.       常用命令介绍

  • Lsc()查看支持的操作方法

以下为部分命令截图

  • Ls()查看支持设置的报文头部(协议报文)

通过ls(协议类型)可查看到具体的参数信息

2.3.       定义报文

可先定义报文,不同层之间用/隔开,按协议由底到上的顺序从左到右的顺序排列,如下所示:

>>> send_pkt = Ether(src="52:54:00:be:da:0c", dst="cc:c1:cc:cc:cc:cc") / IP(ttl=10, src="12.0.0.1", dst="10.25.153.113") / (ICMP(type=0x08, code=0x00, id=0x0100, seq=0x000f) / "payload")

通过show()可查看定义的报文信息:

通过summary可查看报文的摘要信息

>>> send_pkt.summary()
'Ether / IP / ICMP 12.0.0.1 > 10.25.153.113 echo-request 0 / Raw'

定义的各字段可以是具体值或是一个范围,如定义sip变化的报文可如下定义

2.4.       发送报文

 

常用的发送方法为sendp()和send(),其中sendp()为二层发包,需要指定网卡接口,send()为三层发包,自动根据路由表进行路由发送。

Send()常用的参数介绍:

Inter:发送两个报文之间的时间(单位:秒),默认值为0

Loop: 默认为0,不持续发送;设置为大于0的值,可持续发送

Count: 要发送的数据包数,默认为1

Return_packets: 返回发送的数据包

Iface:发送数据包的接口

    如下所示,指定发送报文的接口和个数:

 

2.5.       发送并接收报文

srp(): 二层发送包,返回答复和没有答复的包的数量

srp1(): 二层发送包,返回只答复或者发送的包的详细信息,显示这个参数的返回数据

​sr( ):三层发送包,返回答复和没有答复的包的数量

​sr1( ):三层发送包,返回只答复或者发送的包的详细信息,显示这个参数的返回数据

2.6.       抓包

Sniff():捕获经过本机网卡的数据包

Sniff()常用参数介绍:

Iface: 指定所要进行监听的网卡

Count: 指定监听到数据包的数量,达到指定的数量就会停止监听

Filter: 对数据包进行过滤,若要同时满足多个条件可用“and”“or”等关系运算符来表达

例:

查看捕获的报文:

或保存捕获的报文,之后下载查看

>>> wrpcap("rx.pcap",_)

确认该报文保存无误

0条评论
0 / 1000
1****m
3文章数
0粉丝数
1****m
3 文章 | 0 粉丝
1****m
3文章数
0粉丝数
1****m
3 文章 | 0 粉丝
原创

Scapy安装和使用

2023-05-12 10:42:43
242
0

Scapy是由python编写的工具,可使用这个模块来实现对网络数据包的发送、监听和解析,下面介绍的是在交互模式中scapy的使用。

1.    Scapy安装

可直接使用pip进行安装,pip install scapy

 

2.    Scapy使用

2.1.       scapy启动

直接使用scapy命令启动,启动界面如下:

2.2.       常用命令介绍

  • Lsc()查看支持的操作方法

以下为部分命令截图

  • Ls()查看支持设置的报文头部(协议报文)

通过ls(协议类型)可查看到具体的参数信息

2.3.       定义报文

可先定义报文,不同层之间用/隔开,按协议由底到上的顺序从左到右的顺序排列,如下所示:

>>> send_pkt = Ether(src="52:54:00:be:da:0c", dst="cc:c1:cc:cc:cc:cc") / IP(ttl=10, src="12.0.0.1", dst="10.25.153.113") / (ICMP(type=0x08, code=0x00, id=0x0100, seq=0x000f) / "payload")

通过show()可查看定义的报文信息:

通过summary可查看报文的摘要信息

>>> send_pkt.summary()
'Ether / IP / ICMP 12.0.0.1 > 10.25.153.113 echo-request 0 / Raw'

定义的各字段可以是具体值或是一个范围,如定义sip变化的报文可如下定义

2.4.       发送报文

 

常用的发送方法为sendp()和send(),其中sendp()为二层发包,需要指定网卡接口,send()为三层发包,自动根据路由表进行路由发送。

Send()常用的参数介绍:

Inter:发送两个报文之间的时间(单位:秒),默认值为0

Loop: 默认为0,不持续发送;设置为大于0的值,可持续发送

Count: 要发送的数据包数,默认为1

Return_packets: 返回发送的数据包

Iface:发送数据包的接口

    如下所示,指定发送报文的接口和个数:

 

2.5.       发送并接收报文

srp(): 二层发送包,返回答复和没有答复的包的数量

srp1(): 二层发送包,返回只答复或者发送的包的详细信息,显示这个参数的返回数据

​sr( ):三层发送包,返回答复和没有答复的包的数量

​sr1( ):三层发送包,返回只答复或者发送的包的详细信息,显示这个参数的返回数据

2.6.       抓包

Sniff():捕获经过本机网卡的数据包

Sniff()常用参数介绍:

Iface: 指定所要进行监听的网卡

Count: 指定监听到数据包的数量,达到指定的数量就会停止监听

Filter: 对数据包进行过滤,若要同时满足多个条件可用“and”“or”等关系运算符来表达

例:

查看捕获的报文:

或保存捕获的报文,之后下载查看

>>> wrpcap("rx.pcap",_)

确认该报文保存无误

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0