利用python-pypcap抓取带VLAN标签的数据包方法
作者:chenxiangneu 发布时间:2021-03-15 04:46:20
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函数的说明如下:
此处需要说明的是,在实际使用中发现提供了cnt参数后程序运行会报错,而不加cnt参数可以成功运行,即采用fpcap.loop(callback,None)。
4)实现包处理回调函数callback
callback函数声明如下:
这里需要说明的是,参数timestamp和pkt会由loop函数自动传入,pkt表示数据包,但其类型是buffer类型,这里可以采用图中的scapy.layers.l2.Ether(str(pkt))将pkt转化为scapy的Ether类型[如果包为dot3类型的,也将自动转化为Dot3类型的对象,此处针对isis协议]。然后再通过p.time = timestamp将时间戳信息更新到包中。后续就可以按照处理scapy的Ether类型包的方式进行进一步包处理。
4、示例
下述代码实现了一个线程类,能够在指定的接口iface上抓取进入该接口的包并打印包概要信息。
来源:https://blog.csdn.net/chenxiangneu/article/details/78350406


猜你喜欢
- 本文实例讲述了MySQL重定位数据目录的实现方法。分享给大家供大家参考。具体方法如下:MySQL允许重定位数据目录或其中的成员,这里就来介绍
- 从MySQL 5.0 开始,支持了一个全新的SQL句法:PREPARE stmt_name FROM preparable_stmt;EXE
- 目录前言全局参数持久化写在最后总结参考文档:前言自从 2018 年发布第一版 MySQL 8.0.11 正式版至今,MySQL 版本已经更新
- Python偏函数Python偏函数和我们之前所学习的函数传参中的缺省参数有些类似,但是在实际应用中还是有所区别的,下面通过模拟一个场景一步
- 前言 好长时间没摸数据库了,周末在家写了个报表的存储过程,一时间对使用存储过程实
- 关于混淆矩阵的概念,可参考此篇博文混淆矩阵1.混淆矩阵混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真
- Jupyter Notebook读取csv文件失败1.IndentationError: expected an indented bloc
- 在实际工作中,有时候需要对判断字符串是否为合法的json格式解决方法使用json.loads,这样更加符合‘Pythonic'写法代
- *和&的区别 :& 是取地址符号 , 即取得某个变量的地址 , 如 ; &a*是指针运算符 , 可以表示一个变量是指
- 1 如何创建项目数据库首先,在虚拟机数据库中建立一个与项目同名的数据库,方便管理。(django_test) bd@DF:~$ mysql
- 若是只引用jquery的话,监听单选按钮改变事件如下:<input type="radio" name="
- 前言这次,我们要用Pygame写一个Pong游戏先看看效果:需要的模块:Pygame在python文件同目录下新建resources文件夹,
- 创建之前项目之前 记得改一下 maven 提高下载Pom速度 记得 setting 中
- photoshop快捷键大全: 工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)相关文章:网页设计软件FrontPag
- 简介MySQL通过复制(Replication)实现存储系统的高可用。目前,MySQL支持的复制方式有:异步复制(Asynchronous
- 1.官网下载MySQL下载Mysql点击下载mysql. 或点击这里下载下载完成后解压到某一个文件夹(记住这个路径,一会要用到)2.配置初始
- 1、pip下载安装1.1 pip下载进入https://pypi.python.org/pypi/pip,下载 .tar.gz压缩包1.2&
- 前言作为Web开发人员,在 Web浏览器中存储数据以改善用户体验和提升Web应用程序性能是非常常见的。在大多数情况下,可供我们使用就是Loc
- 现如今,各个国家交流密切,通过翻译使我们打破了语言壁垒,而翻译在互联网上的存在也尤为普遍。python中执行翻译操作的包是translate
- 一、说明之前写了一篇“Python执行系统命令教程”讲了如何执行系统命令。除了执行系统命令外,我们有时还需要动态地执行一些python代码,