python3使用winpcap

  • 关于winpcap的简单介绍
  • winpcap抓包介绍(各函数及其参数)
  • 对于上面的示例代码的介绍

关于winpcap的简单介绍

winpcap的历史说起来就比较麻烦了, 简单来说,他使用unix下跨平台 抓包工具libpcap 往上封装而成,感兴趣的可以自行查询,同级别的还有npcap,但是,npcap相对来说比winpcap优势更大,哈哈,从wireshark3.0开始,默认的将网卡核心驱动由winpcap换成了npcap 。

winpcap抓包介绍(各函数及其参数)

python使用winpcap的模块是winpcapy,傻瓜式安装,话不多说,先直接上代码。

from winpcapy import WinPcapDevices
from winpcapy import WinPcapUtilsimport dpkt
import time
import datetime# list_device = WinPcapDevices.list_devices()
# print(list_device)def packet_callback(win_pcap, param, header, pkt_data):eth = dpkt.ethernet.Ethernet(pkt_data)# # 判断是否为IP数据报if not isinstance(eth.data, dpkt.ip.IP):print("Non IP packet type not supported ", eth.data.__class__.__name__)return# 抓IP数据包packet = eth.data# 取出分片信息df = bool(packet.off & dpkt.ip.IP_DF)mf = bool(packet.off & dpkt.ip.IP_MF)offset = packet.off & dpkt.ip.IP_OFFMASK# 输出数据包信息:time,src,dst,protocol,length,ttl,df,mf,offset,checksumoutput1 = {'time':time.strftime('%Y-%m-%d %H:%M:%S',(time.localtime()))}output2 = {'src':'%d.%d.%d.%d'%tuple(packet.src) , 'dst':'%d.%d.%d.%d'%tuple(packet.dst)}output3 = {'protocol':packet.p, 'len':packet.len, 'ttl':packet.ttl}output4 = {'df':df, 'mf':mf, 'offset':offset, 'checksum':packet.sum}print()print(output1)print(output2)print(output3)print(output4)WinPcapUtils.capture_on(pattern="Realtek PCIe GBE Family Controller", callback=packet_callback)

对于上面的示例代码的介绍

  1. 导入库介绍
from winpcapy import WinPcapDevices
from winpcapy import WinPcapUtilsimport dpkt
import time
import datetime
  • WinPcapDevices这个类实现了本机网卡设备的匹配与查找,WinPcapDevices.list_devices()可以直接打印出本机所有的网络设备。
  • WinPcapUtils这两个类用来捕获和发送流量,本文主要讲述数据包的捕获。
  • dpkt这个库将数据帧解析成 极其方便使用的对象,使用它可以让我们为你更关注数据包本身内容,而不是怎么去费力把字节数据 捣鼓成能直接识别的信息。

2.抓包方式
winpcapy提供了两种通过制定网络设备的抓包方式,一种是通过设备的描述去模糊匹配 符合该描述的第一个设备,另一种是直接拿设备的设备名去匹配。分别对应WinPcapUtils.capture_on(pattern, callback)和WinPcapUtils.capture_on_device_name(device_name, callback),无论是那种方式,归根结底都是要拿设备名称去 抓捕对应的流量,但是通过设备名更加的精确(capture_on_device_name),如果不知道自己是需要 抓本机那个设备的流量,可以本地通过命令行ipconfig /all查看自己设备的描述,拿着该设备的描述通过WinPcapDevices.list_devices()函数返回的{‘设备名称’:‘设备描述’}字典 来对应设备名。

  1. capture_on_device_name()参数介绍
    capture_on_device_name提供两个参数,一个是设备名称,另一个是回调函数,设备名怎么获得上面已经有了详细的介绍,回调函数接收四个参数,直接套用了pcap中packet_handler函数,只不过包装了成了python可以使用的,win_pcap,param,header,pkt_data;win_pcap是嗅探对象本身,win_pcap.stop()可以停止嗅探,param可以先不用管,header.contents中有caplen,len,ts属性,caplen是可以参看捕获的数据帧的长度,len一般情况下等于caplen,ts中含有tv_sec和tv_usec属性,分别是数据包发送时的时间戳以及微秒数,pkt_data是数据包本身。

  2. 使用dpkt解析数据帧
    dpkt提供了解析数据帧的功能,也提供了将数据帧储存为pcap文件的能力(dpkt.pcap.Writer(f_pcap).writepkt(pdata, ptime))。关于dpkt这个模块怎么使用,本文不细说,官方文档讲解的非常清楚。

python3使用winpcap相关推荐

  1. python3 arp局域网ip

    安装scapy依赖项 1. 环境: (1) 操作系统:win7 .server2012 (2) Python版本:Python3.6-64bit (3) 依赖模块Npcap(推荐) 或WinPcap. ...

  2. pip 无法卸载 pillow 解决方案 Not uninstalling pillow at /usr/lib/python3/dist-packages

    1. 问题现象 使用 pip 卸载 pillow 时无法卸载,报如下错误: $ sudo pip3 uninstall pillow Not uninstalling pillow at /usr/l ...

  3. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  4. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建

    Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...

  5. python2转python3文件

    python37 -m 2to3.py -w C:\Users\Administrator\Desktop\搜狗细胞词库处理.py 命令 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA ...

  6. Python3:ImportError: No module named 'compiler.ast'

    from compiler.ast import flatten 上面这条语句好像在python3 以后就废除了,如果使用的话就会报错. Traceback (most recent call las ...

  7. 安装win下的Anaconda ----针对python3.6.4版本

    我的python版本是3.6.4, Anaconda下载地址: Anaconda官网:https://repo.anaconda.com/archive/ 清华大学镜像站:https://mirror ...

  8. Python3 reversed 函数

    描述 reversed 函数返回一个反转的迭代器. 语法 以下是 reversed 的语法: reversed(seq)(seq) 参数 seq -- 要转换的序列,可以是 tuple, string ...

  9. Python3 try-except、raise和assert解析

    20220221 案例 def product(x):result = 1print(x)count = 0for i in x:try:result *= float(i)except Except ...

最新文章

  1. EMQ学习 ---集群
  2. delegate委托
  3. 关于CSS样式清除浮动的总结
  4. 3-18函数——作用域的查找空间
  5. 计算机语言中tc是什么,新人必须了解的几个TC常用语和脚本基础知识!
  6. ASP.NET技巧:字符自动截取问题
  7. Java Web学习总结(5)——HttpServletResponse对象详解
  8. MAVEN(一)中的Scope
  9. 《EDIUS 6.5快刀手高效剪辑技法》——1.5 常用视频术语简介
  10. cad转dxf格式文件太大_DWG格式怎么转换成DXF格式?实测好用的转换工具都在这了...
  11. win10键盘快捷键
  12. Photoshop(PS)CC2020安装教程【64位】
  13. 【2022年】安装vm虚拟机unbuntu 服务器版
  14. 医疗器械小程序或手机APP软件开发方案
  15. 使用 crypto 模块进行加密和解密
  16. 网站访问量等数据统计
  17. SpringCloud-7-配置中心
  18. 【接口篇 / Wan】(6.4) ❀ 01. 拨号宽带经过防火墙后的速度变化 ❀ FortiGate 防火墙
  19. QQ2018手机版 v7.9.0
  20. 学习如何基于鳄鱼(Alligator)设计交易系统

热门文章

  1. 小程序 苹果 X,XR等机型 小黑条适配
  2. 基于深度优先算法和A*算法的迷宫游戏开发(Java实现)
  3. android hashmap 写入文件,android – ACRA 4.9.0:如何将ACRA报告写入文件(在应用程序数据文件夹中)...
  4. 湖北工业大学计算机专硕学费,2019年湖北工业大学硕士研究生学费奖助政策详情...
  5. python jieba分词及中文词频统计
  6. 什么是蜘蛛池?-免费蜘蛛池搭建软件
  7. 【算法题】MapReduce编程,寻找二度人脉
  8. 【ES6 教程】第一章 新的ES6语法03—使用const 关键字定义常量
  9. 30道linux操作系统shell程序综合设计题
  10. 博士申请 | 香港理工大学OIG实验室招收AI医疗/医学影像方向全奖博士生