利用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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
Python中splitlines()方法的使用简介
May 20 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python实现dijkstra最短路由算法
Jan 17 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
使用Python实现牛顿法求极值
Feb 10 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
Python LMDB库的使用示例
Feb 14 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
python实现动态创建类的方法分析
2019/06/25 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
Django操作session 的方法
2020/03/09 Python
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
简历上的自我评价
2014/02/03 职场文书
演讲稿格式
2014/04/30 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
美容院合作经营协议书
2014/10/10 职场文书
长城的导游词
2015/01/30 职场文书
法律讲堂观后感
2015/06/11 职场文书
小学新课改心得体会
2016/01/22 职场文书