【转】scapy 构造以太网注入帧
1. 描述
使用scapy进行以太网帧的注入,相对于RAW_SOCKET还是比较简单的。在讲述packet注入之前,先了解一下scapy伪造以太网帧的相关知识。下图为以太网帧格式和scapy对应的封装包格式。
2. 示例
2.1 使用scapy构造IP数据包
进入scapy环境,输入以下代码:
>>>
>>> pkt = IP()/ICMP()/”hello”
>>>
>>>
>>> pkt.show()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= icmp
chksum= None
src= 127.0.0.1
dst= 127.0.0.1
\options\
###[ ICMP ]###
type= echo-request
code= 0
chksum= None
id= 0x0
seq= 0x0
###[ Raw ]###
load= ‘hello’
上面代码的意思是,构造一个pkt的包,在IP层中封装了ICMP包,负载的数据位“hello”。通过pkt.show()函数显示包的详细信息。
2.2 发送packet
- sendp——在第二层次上发送数据包。需要给定正确的网卡接口。
- send——在第三层次上发送数据包。根据本地的路由表来进行路由发送。
- 循环发送相同的包。
- 间隔几秒发送一次包。
2.2.1 第三层次上发送包(layer 3)
首先,我们在第三层次上发送packet来做测试。在这之前先另起一个终端,输入以下命令,对流量做一下监听。
tcpdump -i eth0 -XX -vvv icmp
然后运行send(pkt)命令发送数据包,观察结果:
监听结果:
从结果上看,我们发送了一个ICMP请求包,收到了百度的一个ICMP答复包,还可以看到我们发送的数据。
####2.2.2 第三层次发送包(layer 3)
使用重构数据包,然后用sendp()函数发送。
sendp(Ether()/IP(dst= "www.baidu.com")/ICMP()/"XXX",iface="eth0")
Ether()构造以太网帧,和第三层次不同的是,在第二层次上发送要指定网卡接口, 这里我使用eth0。执行代码,成功发送一个数据包。如果想要循环发送,可以使用loop选项。
sendp(Ether()/IP(dst= "www.baidu.com")/ICMP()/"XXX",iface="eth0",loop=1)
代码执行后,会快速的循环发送这个数据包,使用ctrl+C结束。
如果想在两次发送数据包之间有一定的时间间隔,使用inter选项。
sendp(Ether()/IP(dst= "www.baidu.com")/ICMP()/"XXX",iface="eth0",loop=1,inter=1)
表示每隔1秒发送一个数据包。
2.3 在层次2和层次3上发送和接收包
- 层次3
- ——sr()。返回答复和没有答复的包。
- ——sr1()。返回仅仅答复或者发送的包。
- 层次2
- ——srp()
- ——srp1()
执行sr(IP(dst="www.baidu.com")/ICMP()/"XXX"),观察执行结果:
成功发送了一个数据包,接收到了2个数据包,其中一个为答复包。这是我要集中注意的地方。将收到的数据赋值给自定义的变量,并查看。
使用sr1()函数,效果:
【转】scapy 构造以太网注入帧的更多相关文章
- WCF+Autofac 实现构造函数依赖注入
1.新建一个项目 2.要对WCF服务实现Autofac注入,需要实现2个接口,IInstanceProvider与IServiceBehavior,并让实现IServiceBehavior的类成为一个 ...
- 【转】以太网最大帧和最小帧、MTU
根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + ...
- 以太网最大帧和最小帧、MTU
根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + ...
- scapy构造打印ARP数据包
ARP格式: 用于以太网的ARP请求/应答分组格式 各字段含义: 帧类型:表示数据部分用什么协议封装(0800表示IP,0806表示ARP,8035表示RARP). 硬件类型:表示硬件地址的类型(其中 ...
- HCNA(二)以太网的帧结构
一.网络通讯协议 一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议. IEEE802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理 ...
- scapy构造数据包
一.进入scapy交互界面 在终端下输入:scapy ,进入交互界面: 二.查看scapy已经实现的网络协议 ls() 列出scapy中已实现的网络协议 ls(协议类型) 查看某个协议头部字段格式 l ...
- laravel中的构造函数依赖注入理解
laravel中的自动依赖注入是非常强大的,刚开始会疑惑为什么只要在构造函数中传入一个强制类型的变量(就是参数有类型限制)过去就行了? 通过查看源码即查阅资料发现其实这其中有一个php技术,就是反射技 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧
摘要: 本文摘抄并整理了以太网相关理论知识,包括CSMA/CD协议机制及工作.LAN互连,详细分析了Ethernet II帧格式,最后给出Ethernet II帧实例. 一.以太网[1] 1. ...
- SSM-Spring-04:Spring的DI的构造注入,P命名注入,和集合注入
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- DI和IOC相比,DI更偏向于实现 DI的set方式注入在前面入门案例里有写,所以此处不多啰嗦,直接开搞,先说 ...
随机推荐
- git各种撤销提交
Git的几种状态 未修改 工作区 已修改 ↓ 工作区 已暂存 ↓ 暂存区 已提交 ↓ 本地仓库 已推送 ↓ 远程仓库 已修改 未暂存 已经修改了文件,还未进行git add 恢复方法 使用一下任意 ...
- The 2018 ACM-ICPC China JiangSu Provincial Programming Contest快速幂取模及求逆元
题目来源 The 2018 ACM-ICPC China JiangSu Provincial Programming Contest 35.4% 1000ms 65536K Persona5 Per ...
- 洛谷P4843 清理雪道
题意:给你DAG,求最小路径边覆盖.路径可重. 解:首先可以想到边转点,发现有n²条边,果断超时. 有源汇有上下界最小流. 建图:每条边都建立一条边,流量限制为[1, 1]. 源点向每个点连边,因为都 ...
- 【洛谷P1018】乘积最大 dp+高精度
题目大意:给定一个 N 个数组成的串,可以在串中插入 M 个乘号,求乘积最大是多少.N <= 40 阶段:前 i 个数用了 j 个乘号. 仅用阶段可以表示出一个状态,因此状态转移方程为 \(dp ...
- 【洛谷P1073】最优贸易
题目大意:给定一个 N 个点,M 条边(存在反向边)的有向图,点有点权,求一条从 1 到 N 的路径上,任意选出两个点 p,q (p 在前,q在后),两点点权的差值最大. 根据最短路的 dp 思想,可 ...
- 由asp的一个错误,看语言的不同:asp & java
今天查看网页源代码,无意发现源代码尾部抛出asp的错误信息,但没有显示在网页上. 如果没查看源代码,还没发现asp运行代码出错了. 大致情况是这样,在asp中,有一个变量来表示用户当前使用的容量,注意 ...
- apigateway-kong(七)配置说明
这一部分应该在最开始介绍,但是我觉得在对kong有一定了解后再回头看下配置,会理解的更深刻.接下来对这个配置文件里的参数做个详细的解释便于更好的使用或优化kong网关. 目录 一.配置加载 二.验证配 ...
- Sublime Text3—Project(项目管理)
摘要 Project 可以理解为项目.工程或者站点,以下称项目.使用项目管理的好处是:不用将所有文件都放到同一个根目录,可以将相关但不同路径的文件组成一个Project,每个项目都是独立的,文件的状态 ...
- Eclipse导入模板格式Xml配置文件
Eclipse一般常用的可以导入两处 *.xml 格式的模板,一个是常用的注释格式模板,另一个是代码格式化时用的模板,导入方法如下: 假设: 1.xml 是代码注释格式模板 2.xml 是代码 ...
- 设置 webstorm 对 .vue 高亮
1. 首先安装vue插件,安装方法: setting --> plugin ,点击plugin,在内容部分的左侧输入框输入vue,会出现两个关于vue的插件,点击安装即可.安装完成后,就可 ...