Python 黑帽编程 4.2 Sniffer之数据本地存储和加载
在上一节,我们完成了编写一个简易的Sniffer的第一步——数据捕获。 很多时候,我们需要将捕获的数据先保存到磁盘上,之后再使用工具或者自己编写代码来进行详细分析。 本节我们在上一节的基础上来讲解保存捕获数据的方式,当然使用tcpdump或者WireShark都可以 很方便的存储数据包。
4.2.1 使用pcapy保存和读取数据
前文我们使用 pcapy的open_live方法,可以获取pcapy的一个实例对象,通过该对象的dump_open 方法可以获取一个dump对象,通过dump对象可以保存数据包到本地磁盘。示例如下:
上面的代码中,我们首先通过dump_open方法获取dumper对象,随后在循环捕获数据的时候 调用save_packet方法,该方法中调用dump方法将数据保存到本地。运行结果如下:
下面我们看看如何从磁盘读取pcap文件。
在上面的带码中,我们使用pcapy的open_offline方法从本地打开一个pcap文件,之后就可以 循环处理每一个数据包了。运行结果如下:
4.2.2 使用Scapy保存和读取数据
上一节我们讲了Scapy的基础用法,Scapy支持将捕获的数据保存成多种数据格式,比如hex,base64等, 利用Scapy来保存捕获的数据到pcap文件,有两种方式,第一种为使用PcapWriter模块,例如:
初始化PcapWriter对象需要传入三个参数,要保存的文件名、是否追加数据,是否同步顺序添加。 之后在packetHandler方法中,调用write方法将数据包写入文件。运行结果如下:
另外一种方式为配置sniff方法的offline参数。例如:
读取pcap文件可以使用scapy.all 模块中的rdpcap方法。例如:
如上,rdpcap方法接收一个文件路径参数,返回所有的数据包。运行结果如下:
4.2.3 小结
读取和保存数据的方法很多,这里结合本教程实例,只介绍这两种较为简单的方法。
- JQuery笔记(四) 通用选择的尝试
- Docker容器学习梳理--基础环境安装
- Javascript:模仿淘宝的信用评价
- 好米有好价! 两枚4字母域名均以五位数交易
- Docker容器学习梳理--Volume数据卷使用
- 菜单常用:复位全部并设置某个项的样式
- Mysql更换MyISAM存储引擎为Innodb的操作记录
- 比特币分叉倒计时,糖果福利又来了
- 执行git push出现"Everything up-to-date"
- linux下EOF写法梳理
- 用AngularJS来实现异步数据的购物车功能设计
- span不如div的地方
- 分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL
- 10x Python开发者必读:本月Python文章TOP 10
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Deepin安装与基础使用
- Golang 单元测试详尽指引
- Pigeon- Flutter多端接口一致性以及规范化管理实践
- Linux之PAM系统模块详解说明
- 快速上手联邦学习——腾讯自研联邦学习平台PowerFL实战
- Linux发行版的镜像网站及开源软件收集
- 自建图床应用,我只推荐 Serverless
- 手把手教你使用 Nginx Ingress 实现金丝雀发布
- Kettle构建Hadoop ETL实践(六):数据转换与装载
- 从面试角度一文学完 Kafka
- Kettle构建Hadoop ETL实践(七):定期自动执行ETL作业
- 轻松理解JVM的分代模型
- Mybatis的几种传参方式,你了解多少?
- 搭建NFS Server
- Paxos 分布式必问的内容,没有之一