博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 黑帽编程 4.2 Sniffer之数据本地存储和加载
阅读量:7091 次
发布时间:2019-06-28

本文共 1755 字,大约阅读时间需要 5 分钟。

在上一节,我们完成了编写一个简易的Sniffer的第一步——数据捕获。

很多时候,我们需要将捕获的数据先保存到磁盘上,之后再使用工具或者自己编写代码来进行详细分析。
本节我们在上一节的基础上来讲解保存捕获数据的方式,当然使用tcpdump或者WireShark都可以
很方便的存储数据包。

4.2.1 使用pcapy保存和读取数据

前文我们使用 pcapy的open_live方法,可以获取pcapy的一个实例对象,通过该对象的dump_open

方法可以获取一个dump对象,通过dump对象可以保存数据包到本地磁盘。示例如下:

#!/usr/bin/pythonimport pcapydev = "eth0"filter = "tcp and port 80"def save_packet(hdr, data):    dumper.dump(hdr, data)pcap = pcapy.open_live(dev, 1500, 0, 100)dumper = pcap.dump_open('sniffer.pcap')pcap.setfilter(filter)pcap.loop(0, save_packet)

上面的代码中,我们首先通过dump_open方法获取dumper对象,随后在循环捕获数据的时候

调用save_packet方法,该方法中调用dump方法将数据保存到本地。运行结果如下:

42533-20170209172626651-1238763104.jpg

下面我们看看如何从磁盘读取pcap文件。

#!/usr/bin/pythonimport pcapydev = "eth0"filter = "tcp and port 80"def read_packet(hdr, data):    print datapcap = pcapy.open_offline('sniffer.pcap')pcap.loop(0, read_packet)

在上面的带码中,我们使用pcapy的open_offline方法从本地打开一个pcap文件,之后就可以

循环处理每一个数据包了。运行结果如下:

42533-20170209172638760-350778629.jpg

4.2.2 使用Scapy保存和读取数据

上一节我们讲了Scapy的基础用法,Scapy支持将捕获的数据保存成多种数据格式,比如hex,base64等,

利用Scapy来保存捕获的数据到pcap文件,有两种方式,第一种为使用PcapWriter模块,例如:

from scapy.all import *from scapy.utils import PcapWriterdef packetHandler(pkt):    pktdump.write(pkt)pktdump = PcapWriter("ssss.pcap", append=True, sync=True)sniff(filter='tcp and port 80',prn=packetHandler,iface='eth0')

初始化PcapWriter对象需要传入三个参数,要保存的文件名、是否追加数据,是否同步顺序添加。

之后在packetHandler方法中,调用write方法将数据包写入文件。运行结果如下:

42533-20170209172647416-1382500081.jpg

另外一种方式为配置sniff方法的offline参数。例如:

sniff(filter='tcp and port 80',iface='eth0',offline="temp.cap")

读取pcap文件可以使用scapy.all 模块中的rdpcap方法。例如:

from scapy.all import *packets = rdpcap('ssss.pcap')for packet in packets:    print packet

如上,rdpcap方法接收一个文件路径参数,返回所有的数据包。运行结果如下:

42533-20170209172658104-284022367.jpg

4.2.3 小结

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


查看更多Python黑客编程及安全类文章,请关注玄魂工作室微信订阅号(xuanhun521)。

42533-20160109131841371-224661679.jpg

本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/p/6383083.html,如需转载请自行联系原作者

你可能感兴趣的文章
java实现泛域名解析,附SpringMVC源码示例
查看>>
mysql 导出 csv格式数据
查看>>
从Exchange 通往Office 365系列(十五)配置ADRMS与Exchange结合
查看>>
好用的软件之Xmind
查看>>
elasticsearch rpm安装以及配置修改
查看>>
Javascript获取元素的坐标
查看>>
使用 lsof 查找打开的文件
查看>>
Linkwedo 提升信息在决策中的力量
查看>>
雨林木风GhostXP_SP3装机版YN11.6_2011.06更新
查看>>
我的友情链接
查看>>
vim8.0 不能用鼠标
查看>>
OpenGL进阶(十) - obj文件的导入
查看>>
剑指XX游戏(八) - 腾讯2013校园招聘技术类笔试题详解
查看>>
docker 添加基础命令
查看>>
arm7上搭建boa并进行测试cgi+html
查看>>
iptables/netfiles基本使用
查看>>
angularJS拍照
查看>>
HTML5接入与OC交互
查看>>
错误整理:No plugin found for prefix 'jetty' in the....
查看>>
端口号简介
查看>>