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上抓取进入该接口的包并打印包概要信息。

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

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

本文地址: http://www.cppcns.com/jiaoben/python/266443.html

python抓取数据包_利用python-pypcap抓取带VLAN标签的数据包方法相关推荐

  1. 交换机是如何对数据包打标签去标签的_如何使用PC抓带vlan标签的数据包?王海军老师告诉你...

    1,问题描述 一般情况下(或在默认情况下),网卡是不能接收带有vlan标签的数据包的,我们可以通过对能接收vlan标签的网卡进行设置,进行抓取带vlan标签的数据包,方便网络工程师对网络故障的排查,具 ...

  2. python爬去百度文库_利用Python语言轻松爬取数据[精品文档]

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

  3. python爬取百度文库_利用Python语言轻松爬取数据

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

  4. python爬去朋友圈_利用Python爬取朋友圈数据,爬到你开始怀疑人生

    人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...

  5. python爬朋友圈数据_利用Python爬取朋友圈数据,爬到你开始怀疑人生

    人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...

  6. python 翻译库本地库_利用python爬取并翻译GEO数据库

    原标题:利用python爬取并翻译GEO数据库 GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这 ...

  7. python怎么读取sav格式_利用Python读取外部数据文件

    利用Python读取外部数据文件 [color=rgb(0, 0, 0) !important]刘顺祥 [color=rgb(0, 0, 0) !important]摘要: 不论是数据分析,数据可视化 ...

  8. 基于python的排课表系统_利用python爬取广西科技大学教务管理信息系统班级课表...

    操作环境 python 3.6.1 pycharm 5.0.3 WampServer 3.0.6 windows 8(64位) 特点 1.中途退出程序或者断网之后重连再次运行不会抓取到重复的课程表 2 ...

  9. python如何爬取sci论文_利用python爬取并翻译GEO数据库

    GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这里面挖掘(bai piao)数据,发个sci提前 ...

最新文章

  1. 高校计算机通识教育目标,美国高校计算机通识教育研究
  2. Spring中复杂类型注入
  3. [转]一次.NET Web应用程序安装包的制作经历:Sql数据库安装的3种方式 配置IIS及Web.Config文件...
  4. 数据结构——线性表:顺序表、单向链表、循环链表、双向链表
  5. tableau必知必会之学做常用的倾斜图(slopegraph)
  6. 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...
  7. 树莓派VNC server设置开机自启动
  8. 2021-08-10 HDFS Web报错Couldn‘t preview the file.
  9. 万字长文带你从零开始认识机器学习
  10. C++包含头文件时尖括号和双引号区别
  11. Netty工作笔记0056---Unpooled应用实例2
  12. 隐变量模型(latent variable model)
  13. Ubuntu下安装MySQL及简单操作
  14. 海康设备如何接入萤石开放平台
  15. java基础标识符,关键字,常量
  16. 微型计算机原理跟什么有关,微机原理 课后题 标准答案
  17. php每四位隔开,php数字每三位加逗号的功能函数
  18. 如何做好固定资产管理和盘点?切实可行的方案来了
  19. Pr安装完BCC插件后出现“找不到引入口”的窗口,从而使用不了Pr怎么办------如何卸载BCC,重新启用P
  20. 《程序员》10月精彩内容:iOS Android 10 年

热门文章

  1. ScrollView各属性,及代理方法汇总
  2. 问题-提示“请确定磁盘未满或未被写保护而且文件未被使用”
  3. nodejs 复制、移动文件
  4. C#将另一个应用程序的窗口移动到前端的问题
  5. MSP430程序库二UART异步串口
  6. 工厂供电MATLAB仿真,工厂供电虚拟仿真实验设计研究
  7. 简述php和web交互过程,PHP与Web页面交互操作实例分析
  8. python编写win 本地reader程序_使用Python、win32api和Acrobat Reader 9打印PDF
  9. 数字通信同步技术的matlab与fpga实现_数字通信电缆行业规模情况及趋势分析(附报告目录)...
  10. 人工智能导论 王万良教授_FCES2019 panel4:人工智能的第一堂课究竟讲什么?