想试一试读取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解析pcap数据包

    Post Views: 29,789 零.前言 历时数月,终于结束了考研初试,Blog也很长时间没有更新了,期间还是有些小伙伴来Blog看文章很是感动.以后一定会坚持更新,尽量给大家推送一些干货.这次 ...

  2. python 读取大文件_Python读取大文件

    1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...

  3. python保存为mat文件_Python读取mat文件保存为pickle格式的实例代码

    Python使用pickle模块储存对象操作 Python读取mat文件,并保存为pickle格式的方法 这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把 ...

  4. python读取pdf文件_python读取pdf文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...

  5. python接口自动化参数化_Python读取txt文件数据的方法(用于接口自动化参数化数据)...

    小试牛刀: 1.需要python如何读取文件 2.需要python操作list 3.需要使用split()对字符串进行分割 代码运行截图 : 代码(copy) #encoding=utf-8 #1.r ...

  6. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  7. python编程单词排序_Python读取英文文件并记录每个单词出现次数后降序输出示例...

    本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序 ...

  8. python 读取文件_python读取docx文件,就是如此简单

    扫码加入千人跳槽求职QQ群或微信圈子,每日都有全国招聘信息哦     中文编码问题总是让人头疼(尤其是mac本),想要用Python读取word中的内容.用open()经常报错,通过百度搜索+问身边小 ...

  9. python处理mat数据_python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001. ...

  10. python修改yaml文件_Python读取yaml文件的详细教程

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

最新文章

  1. 《计算机组成原理》第04章在线测试
  2. 国家发钱了!研究生补贴一览表!
  3. Struts2中通过Ajax传递json数据
  4. 抖音下拉框中的下拉词是怎么出来的?
  5. oracle12c安装详解,Oracle12C安装教程
  6. html5回到顶部代码,返回顶部完整代码
  7. 关于异常结存的问题,库存结存为什么会产生数量为0,成本不为0的异常情况
  8. 中国甜奶油粉市场趋势报告、技术动态创新及市场预测
  9. Unhandled exception in al.exe(KERNELBASE.DLL):0xE06D7363:Microsoft C++Exception
  10. 角频率、圆周频率、归一化频率的区别
  11. 线程安全的随机数生成
  12. 助力课堂智能点名 | 爱莫AI场景化应用(四)
  13. 机器学习之经典算法(十一) 条件随机场
  14. JVM内存模型JVM内存模型
  15. 巴贝奇、阿达和他们的差分机
  16. vue2.0之多页面的开发
  17. 【建站指南】解决个人网站图片加载缓慢的问题
  18. 给自己的应用程序添加系统偏好设置
  19. 1. CUDA安装失败解决方法
  20. 洛谷P1017题解 [NOIP2000 提高组] 进制转换

热门文章

  1. 2021中国科学院文献情报中心期刊分区表 计算机(2)
  2. GitLab之创建项目组及项目
  3. 手把手教你一整套R语言数据分析+建模流程
  4. 十大经典排序算法(冒泡、选择、插入、希尔、快排..........)
  5. 使用vue创建项目的详细步骤
  6. Qt信号和槽机制详解
  7. 自抗扰控制理论(一)ADRC的原理
  8. java集合与数组的区别
  9. 在超市使用室内地图的5个好处
  10. 初学ansys:模态分析及谐响应分析