Python scapy 构建多层嵌套数据包

Scapy 是一个相当灵活的网络库,并没有限制数据包可以有多少层,使用时可以根据需要添加或删除层(注意遵循正确的协议栈顺序,逐层向上构建,不要打乱顺序,至少我把IP放在ICMP后面是ping不通的...不服可以亲自体会一下 σ`∀´)σ),以及修改每一层的参数:

from scapy.all import *  # 构建一个数据包,包含多个层次  
packet = (  Ether(dst="ff:ff:ff:ff:ff:ff", src="00:00:00:00:00:01") /  # 以太网层  IP(dst="192.168.1.1", src="192.168.1.2") /  # IP 层  TCP(dport=80, flags="S") /  # TCP 层  Raw(load="GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n")  # 原始数据层  
)  # 发送数据包  
send(packet)  # 嗅探数据包,并过滤出刚才发送的数据包  
# sniff() 函数中的 filter 参数使用了 BPF(Berkeley Packet Filter)语法来过滤数据包
# 过滤出源 IP 地址为 "192.168.1.2" 且目的 TCP 端口为 80 的数据包
# count=1 参数指定我们只嗅探一个数据包。
sniffed_packets = sniff(filter="ip src 192.168.1.2 and tcp port 80", count=1)  for packet in sniffed_packets:  packet.show()

上面代码构建了一个包含四层的数据包:

  1. Ether 层:以太网层,包含目的和源 MAC 地址。
  2. IP 层:网络层,包含目的和源 IP 地址。
  3. TCP 层:传输层,这里是一个 TCP SYN 数据包,指定了目的端口(dport)为 80,并设置了 TCP 标志(flags)为 "S"。
  4. Raw 层:原始数据层,这里包含了一个简单的 HTTP GET 请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/674727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于modbus rtu协议操作PLC的EPICS示例

硬件设备 本实验中使用到的设备如下: 1、S7-200 Smart SR20 PLC 作为受控设备,执行机构。 S7-200 Smart是西门子的一款小型PLC产品(以下简称Smart系列)。 Smart系列PLC是西门子公司经过大量调研,为中国小型自动化…

Javaweb之SpringBootWeb案例之登录校验功能的详细解析

2. 登录校验 2.1 问题分析 我们已经完成了基础登录功能的开发与测试,在我们登录成功后就可以进入到后台管理系统中进行数据的操作。 但是当我们在浏览器中新的页面上输入地址:http://localhost:9528/#/system/dept,发现没有登录仍然可以进…

五、优化日程(Optimize Your Schedule)

3. Optimize Your Schedule 三、优化日程 The right length of time for focus is the time you have available.If you only have half an hour to squeeze in on a side project, then that’s the time you have.If you can devote a block of four hours every morning, ma…

async 与 await(JavaScript)

目录捏 前言一、async二、await三、使用方法总结 前言 async / await 是 ES2017(ES8) 提出的基于 Promise 解决异步的最终方案。上一篇文章介绍了 回调地狱 与 Promise(JavaScript),因为 Promise 的编程模型依然充斥着大量的 then 方法&#…

【力扣】查找总价格为目标值的两个商品,双指针法

查找总价格为目标值的两个商品原题地址 方法一:双指针 这道题和力扣第一题“两数之和”非常像,区别是这道题已经把数组排好序了,所以不考虑暴力枚举和哈希集合的方法,而是利用单调性,使用双指针求解。 考虑数组 pri…

2024-02-08 思考-楚门的世界

摘要: 要看清世界的真实面貌并不容易,甚至会让人震惊到无法瞠目。那么何为楚门的世界?一层又一层所构建的幻象,究竟是什么? 要看到生活其间的世界的真实,需要的更多的是勇气承受这一切。 规则与秩序: 很奇怪一个充分…

Rust入门1——HelloWorld

文章目录 一、HelloWorld二、控制台输入 以最简单的两个Rust程序例子入门Rust。首先需要下载安装Rust,之后在VSCode或Clion中运行Rust需要下载Rust插件 一、HelloWorld fn main(){println!("Hello World!"); }二、控制台输入 use std::io::stdin; fn …

可达鸭二月月赛——入门赛第四场(周三)题解

可达鸭二月月赛——入门赛第四场(周三)题解 博文作者:王胤皓 题目(可达鸭学员应该能打开,打不开的题解里有题目简述)题解(点击即可跳转,里面有我的名字)T1 小可喝水linkT2 \texttt{ }\texttt{ …

数据结构:双向链表

文章目录 1. 双向带头循环链表的结构2. 相关操作2.1 创建节点2.2 尾插2.3 头插2.4 打印2.5 尾删2.6 头删2.7 查找2.8 指定位置前/后插入2.9 删除指定位置的节点2.10 删除指定位置后的节点2.11 销毁链表 3.顺序表与链表区别 1. 双向带头循环链表的结构 与单链表不同的是&#xf…

开源软件的崛起与软件行业的变革

开源软件的崛起与软件行业的变革 开源软件,作为信息技术领域的一场革命,正在深刻地改变着软件开发的方式和行业的生态。在这场技术的风暴中,开源软件以其独有的优势,逐渐成为软件行业的推动者,催生了一系列的变革。本…

详解计算机软件基本概念

软件基本概念 软件的定义 一个完整的计算机系统是由硬件系统和软件系统协同工作来完成某一给定的任务的。 只有硬件的计算机称为裸机,裸机必须安装了计算机软件后才可以完成各项任务。 从广义地讲,软件是指计算机程序、数据以及开发、使用和维护程序…

Docker引擎不同的日志驱动配置以及通过Filebeat采集容器日志的两种解决方案

Docker引擎不同的日志驱动配置以及通过Filebeat采集容器日志的两种解决方案 1、使用Docker容器日志 我们可以使用 docker logs 命令查看 Docker 容器内部应用程序运行时所产生的日志。 docker logs -f -t [容器id]使用 docker logs 命令可以免除首先进入 Docker 容器&#x…

Python 视频转场特效处理笔记

本文参考Python-OpenCV 实现美图秀秀视频剪辑效果【特效】_opencv 多张图片 视频 特效-CSDN博客 最近研究了点python处理视频相关的东西,本文展示特效包括,竖向开幕/横向开幕,渐隐/渐显,推近/拉远,方形开幕&#xff0…

Excel——有效性、二级菜单联动

一、录入规范数据 1.手动输入序列录入有效性信息 选择需要录入有效性的所有单元格 选择【数据】——【有效性】——【有效性】 在【允许】输入的值之间选择【序列】 在【序列】输入框中输入想要选择的值,中间用逗号(必须是英文逗号)隔开 。…

Spring Authorization Server Spring Security密码加密

文章目录 一、修改密码编码器二、效果三、注意点1. RegisteredClient2. UserDetailsService 一、修改密码编码器 以BCryptPasswordEncoder举例。 直接将其注册成PasswordEncoder 的Bean即可。 Beanpublic PasswordEncoder passwordEncoder() {// 密码为明文方式 // ret…

【Qt学习笔记】Qt Creator环境下 信号与槽 详解(自定义信号槽、断连、lambda表达式等)

文章目录 1. 信号槽概念1.1 信号的本质1.2 槽的本质1.3 标准信号槽1.4 信号槽 实例 2. 自定义信号槽2.1 自定义槽函数2.2 自定义信号2.3 带参 信号槽 3. 信号槽的意义 与 作用4. 信号槽断连 (了解)5. lamda表达式的使用5.1 基本用法5.2 捕获局部变量5.3 …

JavaScript相关(一)——作用域

本篇将从JS的执行上下文开始,去理解:变量提升、 栈式调用、作用域和闭包。 参考: 浏览器工作原理与实践 JS执行上下文 执行上下文是 JavaScript 执行一段代码时的运行环境,比如调用一个函数,就会生成这个函数的执行…

『运维备忘录』之 Ansible 自动化运维工具

一、简介 Ansible是基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能的自动化运维工具,广泛用于配置管理、应用部署以及任务协…

ES节点故障的容错方案

ES节点故障的容错方案 1. es启动加载逻辑1.1 segment和translg组成和分析1.2 es节点启动流程1.3 es集群的初始化和启动过程 2. master高可用2.1 选主逻辑2.1.1 过滤选主的节点列表2.1.2 Bully算法2.1.2 类Raft协议2.1.3 元数据合并 2.2 HA切换 3. 分片高可用3.1 集群分片汇报3.…

不同进制之间的转换

目录 前言进制转换10进制转2进制方法1方法2 2进制转10进制10进制转n进制n进制转10进制2进制与8进制和16进制之间的快速转换 代码实现10进制转n进制CPython n进制转10进制CPython 结尾 本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。 因此…