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 小结

读取和保存数据的方法很多,这里结合本教程实例,只介绍这两种较为简单的方法。


原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2017-02-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

python: IO操作

13530
来自专栏coder修行路

多进程、协程、事件驱动及select poll epoll

多线程的使用场景 IO操作不占用CPU 计算占用cpu python多线程不适合cpu密集型操作的任务,适合IO操作密集型的任务 多进程 简单的一个多进程例子:...

40590
来自专栏海天一树

小朋友学Python(17):文件

Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。 一、打开和关闭文件 例1 (1)创建名为test...

28650
来自专栏转载gongluck的CSDN博客

UNPv13:#第1章#简介

概述 ? TCP本身并不提供记录结束标志:如果应用程序需要确定记录的边界,它就要自己去实现,已有一些常用的方法可供选择。从TCP套接字读取数据时,我们总...

32290
来自专栏电光石火

给博客添加节日雪花

二话不说先上效果图: ? 需要的朋友请看下面的说明,对JQ比较了解的朋友可以直接下载。 下载地址:jQuery圣诞下雪花.rar 注意事项 ...

23470
来自专栏爱撒谎的男孩

Struts2之动态调用

-在struts核心配置文件详解(action)中已经详细讲解了method的用法,使用这个方式可以指定Action类中的不同的方法映射请求,那么就完成了动态调...

33860
来自专栏雅俗

Linux服务器通过crontab自动备份数据库

执行 crontab 命令如果报 command not found,就表明没有安装

31160
来自专栏游戏开发那些事

【Linux程序设计】之进程控制&守护进程

这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的。

19520
来自专栏流媒体

C语言编译过程

预编译结果解释 # linenum filename flags 分别对应行号、文件、标识。 flag对应的含义

26720
来自专栏Youngxj

解决Emlog博客程序伪静态后URL不是唯一地址的教程

27440

扫码关注云+社区

领取腾讯云代金券