利用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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
Python如何实现守护进程的方法示例
Feb 08 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
使用tensorflow实现线性回归
Sep 08 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
python 内置模块详解
Jan 01 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
为什么相对PHP黑python的更少
Jun 21 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
jQuery示例收集
2010/11/05 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
js实现密码强度检验
2017/01/15 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
python3 深浅copy对比详解
2019/08/12 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
如何用python批量调整视频声音
2020/12/22 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
团日活动策划书
2014/02/01 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
交通违章检讨书
2014/09/21 职场文书
大学生求职自荐信
2015/03/24 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript