利用python-pypcap抓取带VLAN标签的数据包方法


Posted in Python onJuly 23, 2019

1、背景介绍

在采用通常的socket抓包方式下,操作系统会自动将收到包的VLAN信息剥离,导致上层应用收到的包不会含有VLAN标签信息。而libpcap虽然是基于socket实现抓包,但在收到数据包后,会进一步恢复出剥离的VLAN信息,能够满足需要抓取带VLAN标签信息的数据包的需求场景。

python-pypcap包是对libpcap库的python语言封装,本文主要介绍如果利用python-pypcap在网络接口抓取带VLAN标签的数据包。

2、环境准备

libpcap-0.9.4

python-pypcap-1.15,该包依赖libpcap-0.9.4

可以通过在python交互式环境下运行import pcap,如果导入成功,说明python-pypcap-1.15已成功安装。

3、抓包实现

pypcap包封装了libpcap提供的许多接口函数,简单的抓包可以采用如下几个步骤完成:

1)Open a handle to a packetcapture descriptor.

fpcap = pcap.pcap(name=iface)

指定从iface接口抓包,此处可以添加其他相关抓包参数,大家可以参考对pcap.pcap类的说明。

2)设置过滤规则

fpcap.setfilter('inbound')

此处inbound表示抓取所有发送到该接口的包,不抓取从该接口发送出的数据包,规则的设置同tcpdump抓包设置过滤规则相同。

3)调用loop函数循环抓包

fpcap.loop(callback,None)

源文件中对loop函数的说明如下:

利用python-pypcap抓取带VLAN标签的数据包方法

此处需要说明的是,在实际使用中发现提供了cnt参数后程序运行会报错,而不加cnt参数可以成功运行,即采用fpcap.loop(callback,None)。

4)实现包处理回调函数callback

callback函数声明如下:

利用python-pypcap抓取带VLAN标签的数据包方法

这里需要说明的是,参数timestamp和pkt会由loop函数自动传入,pkt表示数据包,但其类型是buffer类型,这里可以采用图中的scapy.layers.l2.Ether(str(pkt))将pkt转化为scapy的Ether类型[如果包为dot3类型的,也将自动转化为Dot3类型的对象,此处针对isis协议]。然后再通过p.time = timestamp将时间戳信息更新到包中。后续就可以按照处理scapy的Ether类型包的方式进行进一步包处理。

4、示例

下述代码实现了一个线程类,能够在指定的接口iface上抓取进入该接口的包并打印包概要信息。

利用python-pypcap抓取带VLAN标签的数据包方法

以上这篇利用python-pypcap抓取带VLAN标签的数据包方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过线程实现定时器timer的方法
Mar 16 Python
python中print的不换行即时输出的快速解决方法
Jul 20 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
python3操作mysql数据库的方法
Jun 23 Python
Python批量更改文件名的实现方法
Oct 29 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
python删除不需要的python文件方法
Apr 24 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 #Python
Django ModelForm组件使用方法详解
Jul 23 #Python
Pandas之groupby( )用法笔记小结
Jul 23 #Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 #Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 #Python
Django 静态文件配置过程详解
Jul 23 #Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 #Python
You might like
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
jquery实现控制表格行高亮实例
2013/06/05 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
环境科学毕业生自荐信
2013/11/21 职场文书
高中生物教学反思
2014/02/05 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
主持人演讲稿
2014/05/13 职场文书
群教个人对照检查材料
2014/08/20 职场文书
单位工作证明书格式
2014/10/04 职场文书
车间统计员岗位职责
2015/04/14 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python