python处理pcap文件_[转载]Python读取pcap文件
想试一试读取pcap文件的内容,并且分析出pcap文件头,每一包数据的pcap头,每一包的数据内容(暂时不包括数据包的协议解析),关于pcap文件的格式,可以参看:http://blog.sina.com.cn/s/blog_4b5039210100fzrt.html
搞了一下午,写了一个py文件,rdpcap.py,想把里面的二进制文件全部弄成十六进制的,然后作为字符串写入到一个txt文件,转化成字符串是为了显示看起来方便。
程序如下:
#!/usr/bin/env python
#coding=utf-8
#读取pcap文件,解析相应的信息,为了在记事本中显示的方便,把二进制的信息
import struct
fpcap = open('test.pcap','rb')
ftxt = open('result.txt','w')
string_data = fpcap.read()
#pcap文件包头解析pcap_header =
{}
pcap_header['magic_number'] = string_data[0:4]
pcap_header['version_major'] = string_data[4:6]
pcap_header['version_minor'] = string_data[6:8]
pcap_header['thiszone'] = string_data[8:12]
pcap_header['sigfigs'] = string_data[12:16]
pcap_header['snaplen'] = string_data[16:20]
pcap_header['linktype'] = string_data[20:24]
#把pacp文件头信息写入result.txt
ftxt.write("Pcap文件的包头内容如下: n")
for key in
['magic_number','version_major','version_minor','thiszone',
'sigfigs','snaplen','linktype']:
ftxt.write(key+ " : " + repr(pcap_header[key])+'n')
#pcap文件的数据包解析
step = 0
packet_num = 0
packet_data = []
pcap_packet_header = {}
i =24
while(i
#数据包头各个字段
pcap_packet_header['GMTtime'] = string_data[i:i+4]
pcap_packet_header['MicroTime'] = string_data[i+4:i+8]
pcap_packet_header['caplen'] = string_data[i+8:i+12]
pcap_packet_header['len'] = string_data[i+12:i+16]
#求出此包的包长len packet_len = struct.unpack('I',pcap_packet_header['len'])[0]
#写入此包数据
packet_data.append(string_data[i+16:i+16+packet_len])
i = i+ packet_len+16
packet_num+=1
#把pacp文件里的数据包信息写入result.txt
for i in range(packet_num):
#先写每一包的包头 ftxt.write("这是第"+str(i)+"包数据的包头和数据:"+'n')
for key in
['GMTtime','MicroTime','caplen','len']:
ftxt.write(key+' : '+repr(pcap_packet_header[key])+'n')
#再写数据部分
ftxt.write('此包的数据内容'+repr(packet_data[i])+'n')
ftxt.write('一共有'+str(packet_num)+"包数据"+'n')
ftxt.close()
fpcap.close()
最终得到的result文件如下所示:字段显示的都是十六进制,其中的数据部分和wireshark打开,显示的十六进制窗口一样。
(其实如果程序想到得到某一个或某几个字节的十进制数,用struct还是很容易转换的)
python处理pcap文件_[转载]Python读取pcap文件相关推荐
- python模块的发布_(转载)Python中模块的发布与安装
模块(Module) Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个 ...
- java poi 读取xlsx文件_使用POI读取xlsx文件(SXSSFWorkbook)
我正在尝试使用POI来读取大型xlsx文件的第一次测试,但要使用小文件进行简单测试,我无法显示单元格的值.使用POI读取xlsx文件(SXSSFWorkbook) 有人可以告诉我什么是我的错误.所有的 ...
- ncl批量处理多个nc文件_利用MATLAB读取NC文件并绘图
最近需要对很多NC 文件进行绘图,通常情况下,我一直用GMT,不过不知道为什么,笔记本上的GMT 用不了了,可能是版本的问题,但是我下了很多版本都无法使用,画出来的图都有问题.由于笔记本安装硬盘也就2 ...
- java jdom 读取xml文件_使用Jdom读取XML文件方法
使用Jdom读取XML文件方法,学习Spring时,我们经常看到很多xml配置文件,Spring通过在配置文件中的配置,使用IOC(控制反转),从而实现代码的灵活性,本篇我就为大家介绍一种解析xml方 ...
- python解析jmeter.jtl文件_通过ant-jmeter读取jtl文件拆分数据并insert DB
第一:需独立创建一个job 第二:需按照一定规范输出 因此,放弃解析csv方式,直接解析自动化生成的原始jtl文件并集成到ant-jmeter中,不在独立一个job而是跟项目在一起,直接在持续集成过程 ...
- python网格搜索核函数_(转载)Python机器学习笔记GridSearchCV(网格搜索)
转载声明 介绍 在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就 ...
- python pip工具命令_转载 Python 安装setuptools和pip工具操作方法(必看)
本文章转载自 脚本之家 http://www.jb51.net 感谢! setuptools模块和pip模块是python进行第三方库扩展的极重要工具,例如我们在需要安装一些爬虫或者数据分析的包时就 ...
- python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30
2.1 定义函数 def 函数名(参数): 代码1 代码2 ...... 2.2 调⽤函数 函数名(参数) 注意: 1. 不同的需求,参数可有可⽆. 2. 在Python中,函数必须先定义后使⽤. 2 ...
- java sax读写xml文件_使用SAXReader读取xml文件
搜索热词 原XML文件: 99999 5275 0 001 9999 20151221 018888 0100010 5275 6600 99898989 000 c1aaaax QD00112210 ...
最新文章
- Linux 使用者身份與群組記錄的檔案
- elasticsearch数据长期保存的方案
- 有关计算机组装的书,计算机组装实习报告书.doc
- WebGL之sprite精灵效果显式数字贴图
- 46.Express框架 GET 方法和POST 方法
- csv文件导入sqlite
- 【转】Linux 静态库与共享库的使用
- oracle rman恢复表空间,Oracle数据库RMAN恢复之表空间和数据块介质的恢复
- 【渝粤题库】国家开放大学2021春2219房屋构造与维护管理题目
- [js] 说说你对js对象生命周期的理解
- 前端学习(1926)vue之电商管理系统电商系统之美化一层循环的UI结构for循环渲染第二层结构
- iOS开发-面试总结(十五)
- 七年级计算机与信息安全教案,计算机与信息安全教案.docx
- python人工智能入门优达视频_python入门视频教你搭建机器学习Python环境的正确姿势...
- Redis教程(一):Redis简介
- python中plot画图_matplotlib基础绘图命令之errorbar的使用
- 谨以此送给所有单身的MM
- 1.1.2 Greedy Gift Givers 贪婪的送礼者
- 《PMP学习笔记》1.3 五大过程组十大知识领域
- 关于结构体、类、联合体、位域等所占内存大小计算