想试一试读取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文件相关推荐

  1. python模块的发布_(转载)Python中模块的发布与安装

    模块(Module) Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个 ...

  2. java poi 读取xlsx文件_使用POI读取xlsx文件(SXSSFWorkbook)

    我正在尝试使用POI来读取大型xlsx文件的第一次测试,但要使用小文件进行简单测试,我无法显示单元格的值.使用POI读取xlsx文件(SXSSFWorkbook) 有人可以告诉我什么是我的错误.所有的 ...

  3. ncl批量处理多个nc文件_利用MATLAB读取NC文件并绘图

    最近需要对很多NC 文件进行绘图,通常情况下,我一直用GMT,不过不知道为什么,笔记本上的GMT 用不了了,可能是版本的问题,但是我下了很多版本都无法使用,画出来的图都有问题.由于笔记本安装硬盘也就2 ...

  4. java jdom 读取xml文件_使用Jdom读取XML文件方法

    使用Jdom读取XML文件方法,学习Spring时,我们经常看到很多xml配置文件,Spring通过在配置文件中的配置,使用IOC(控制反转),从而实现代码的灵活性,本篇我就为大家介绍一种解析xml方 ...

  5. python解析jmeter.jtl文件_通过ant-jmeter读取jtl文件拆分数据并insert DB

    第一:需独立创建一个job 第二:需按照一定规范输出 因此,放弃解析csv方式,直接解析自动化生成的原始jtl文件并集成到ant-jmeter中,不在独立一个job而是跟项目在一起,直接在持续集成过程 ...

  6. python网格搜索核函数_(转载)Python机器学习笔记GridSearchCV(网格搜索)

    转载声明 介绍 在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就 ...

  7. python pip工具命令_转载 Python 安装setuptools和pip工具操作方法(必看)

    本文章转载自 脚本之家 http://www.jb51.net  感谢! setuptools模块和pip模块是python进行第三方库扩展的极重要工具,例如我们在需要安装一些爬虫或者数据分析的包时就 ...

  8. python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30

    2.1 定义函数 def 函数名(参数): 代码1 代码2 ...... 2.2 调⽤函数 函数名(参数) 注意: 1. 不同的需求,参数可有可⽆. 2. 在Python中,函数必须先定义后使⽤. 2 ...

  9. java sax读写xml文件_使用SAXReader读取xml文件

    搜索热词 原XML文件: 99999 5275 0 001 9999 20151221 018888 0100010 5275 6600 99898989 000 c1aaaax QD00112210 ...

最新文章

  1. Linux 使用者身份與群組記錄的檔案
  2. elasticsearch数据长期保存的方案
  3. 有关计算机组装的书,计算机组装实习报告书.doc
  4. WebGL之sprite精灵效果显式数字贴图
  5. 46.Express框架 GET 方法和POST 方法
  6. csv文件导入sqlite
  7. 【转】Linux 静态库与共享库的使用
  8. oracle rman恢复表空间,Oracle数据库RMAN恢复之表空间和数据块介质的恢复
  9. 【渝粤题库】国家开放大学2021春2219房屋构造与维护管理题目
  10. [js] 说说你对js对象生命周期的理解
  11. 前端学习(1926)vue之电商管理系统电商系统之美化一层循环的UI结构for循环渲染第二层结构
  12. iOS开发-面试总结(十五)
  13. 七年级计算机与信息安全教案,计算机与信息安全教案.docx
  14. python人工智能入门优达视频_python入门视频教你搭建机器学习Python环境的正确姿势...
  15. Redis教程(一):Redis简介
  16. python中plot画图_matplotlib基础绘图命令之errorbar的使用
  17. 谨以此送给所有单身的MM
  18. 1.1.2 Greedy Gift Givers 贪婪的送礼者
  19. 《PMP学习笔记》1.3 五大过程组十大知识领域
  20. 关于结构体、类、联合体、位域等所占内存大小计算

热门文章

  1. python中os.path.basename的使用
  2. C++ STL 文件内容的显示和追加
  3. 生成式对抗网络GAN生成手写数字
  4. AD打板过程简介(搭配某份教程实现)
  5. Python3 多线程(连接池)操作MySQL插入数据
  6. python学习Day4 流程控制(if分支,while循环,for循环)
  7. Websocket实现即时通讯
  8. ContentPresenter元素
  9. POJ - 1008 Maya Calendar
  10. SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易