PyShark入门(1):简介
admin
2023-07-31 01:47:54
0

原文地址:http://zodiacg.net/2016/07/in…

本系列文章译自thePacketGeek的系列文章。原创翻译,转载请注明出处。

文章作者以PyShark为基础开发了Cloud-Pcap,一个类似CloudShark的pcap在线存储、分析工具。

你可以使用PyShark在网络接口上进行嗅探,或者打开存储的pcap文件进行分析。如PyShark主页文档中展示的:

import pyshark

# 打开存储的捕获文件
cap = pyshark.FileCapture(\'/tmp/mycapture.cap\')

# 从网络接口上进行捕获
capture = pyshark.LiveCapture(interface=\'eth0\')
capture.sniff(timeout=10)

使用 LiveCapture 或者 FileCapture 方法建立 Capture 对象后,在捕获(capture)和数据包(packet)层面就会有多个方法和属性可用。PyShark的强大在于可以调用tshark内建的所有数据包解码器。我这里只简单展示一下你可以做的一些事情,后续的文章中会展开更深入的说明。

  1. 获取数据包摘要(类似于tshark捕获的输出)

    >>> for pkt in cap:
    ...:     print pkt
    ...:
    2 0.512323 0.512323 fe80::f141:48a9:9a2c:73e5 ff02::c SSDP 208 M-SEARCH * HTTP/
    3 1.331469 0.819146 fe80::159a:5c9f:529c:f1eb ff02::c SSDP 208 M-SEARCH * HTTP/
    4 2.093188 0.761719 192.168.1.1 239.255.255.250 SSDP 395 NOTIFY * HTTP/1.  0x0000 (0)
    5 2.096287 0.003099 192.168.1.1 239.255.255.250 SSDP 332 NOTIFY * HTTP/1.  0x0000 (0)
  2. 按层深入获取数据包属性

    >>> pkt.   #(tab auto-complete)
    pkt.captured_length     pkt.highest_layer       pkt.ip                  pkt.pretty_print        pkt.transport_layer
    pkt.eth                 pkt.http                pkt.layers              pkt.sniff_time          pkt.udp
    pkt.frame_info          pkt.interface_captured  pkt.length              pkt.sniff_timestamp
    >>>
    >>> pkt[pkt.highest_layer].    #(tab auto-complete)
    pkt_app.                 pkt_app.get_field_value  pkt_app.raw_mode         pkt_app.request_version
    pkt_app.DATA_LAYER       pkt_app.get_raw_value    pkt_app.request
    pkt_app.chat             pkt_app.layer_name       pkt_app.request_method
    pkt_app.get_field        pkt_app.pretty_print     pkt_app.request_uri
  3. 遍历数据包,对每个数据包使用给定函数处理

    >>> cap = pyshark.FileCapture(\'test.pcap\', keep_packets=False)
    >>> def print_highest_layer(pkt)
    ...: print pkt.highest_layer
    >>> cap.apply_on_packets(print_highest_layer)
    HTTP
    HTTP
    HTTP
    HTTP
    HTTP
    ... (truncated)

这些只算是管中窥豹! 谁能想到在Python脚本中使用tshark/Wireshark的强大力量会如此容易呢!
我现在发现的唯一缺陷是性能。一旦你开始处理几千个数据包,PyShark就开始变慢了。
后续文章中会说明需要那些措施来保留内存。


下一篇:PyShark入门(2): FileCapture和LiveCapture模块

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...