利用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
猜你喜欢
- 在 EeePC 上装了个 Mac OS X,相应的开发工具也选择了 Coda。在
- 获取文件目录的方法 :import os# '***获取当前目录***'os.getcwd()# '***获取上级目
- 今天实习公司分配了一个数据处理的任务。在将列表中的字符串连接成一个长路径时,我遇到了如下问题:import ospath_list = [&
- Python 通过pip安装Django详细介绍经过前面的 Python 包管理工具的学习,接下来我们就要基于前面的知识,来配置 Djang
- 相关验证码文章:asp制作验证码的方法 轩魂ASP中文验证码下载 先产生一个4位数的随机码源代码:ychar="0,1,2,3,4
- 这篇论坛文章着重介绍了Access数据库出现0x80004005问题的解决方法,更多内容请参考下文:项目做了三个月了,终于也差不多完成了,昨
- 今天偶然看到“一个有将近两年的div + CSS 开发经验和历史,曾经是Web标准绝对拥趸的同志”在自己的blog上发表放弃div+css的
- 基本概念gcache模块默认提供的是一个高速的内存缓存,操作效率非常高效,CPU性能损耗在ns纳秒级别。使用简单易上手,非常适合单机应用使用
- 首先我们有一个数据是一个mn的numpy矩阵现在我们希望能够进行给他加上一列变成一个m(n+1)的矩阵import numpy as npa
- 在使用Python的过程中,一定是离不开数据结构的, 也就是List-列表,Tuples-元组,Dictionaries-字典。那实际应用中
- 一、求解方法、算法和编程方案线性规划 (Linear Programming,LP) 是很多数模培训讲的第一个算法,算法很简单,思想很深刻。
- 减少HTTP请求,是可以提高网站速度的,把所有的背景图像都放到一个图片文件中,然后通过CSS的background-image和backgr
- 实例如下:/** * 数字格式转换成千分位 *@param{Object}num */function commafy(num){ &nbs
- 例如我们有如下结构的文件:pkg/ __init__.py libs/ some_lib.py __init__.py components
- 动机: 排序功能让我们页面上的数据显的更人性化,是我们在网站上见过的很普遍的一个功能效果了。以往的自动排序都是用大量的脚本代码来完成的,对一
- 本项目是利用五年左右的世界地震数据,通过python的pandas库、matplotlib库、basemap库等进行数据可视化,绘制出地震散
- 很多朋友对FrontPage2003中增加的网页布局功能很感兴趣,现在我们一起来深入了解这一实用功能。 用FrontPage200
- 新闻系统,相册系统可以用用哦,简单实用,有兴趣的可以自己扩充!^_^相册截图:<?xml version="1.0"
- Data Points Archive 有时, 为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如
- 做过主页的朋友,几乎没有一个人没用到它,它使我们排版更加轻松。有人说DW的表格没有Fp的好用,我认为不