资讯专栏INFORMATION COLUMN

PyShark入门(3):capture对象

Youngdze / 3413人阅读

摘要:,和属性是之前传递给或者的值。方法使得对象可以通过循环进行遍历。方法是另一种遍历数据包的方式,它接受一个函数作为参数并将之作用于所有的数据包。下面的脚本会将所有的数据包加入到一个列表中并打印总数上一篇入门和模块下一篇入门对象

原文链接:http://zodiacg.net/2016/07/in...

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

我们已经了解了如何使用 FileCaptureLiveCapture 模块来捕获数据包,下面我们来看一下如何使用返回的 capture 对象。

dir(cap)
Out[3]:
["apply_on_packets",
 "close",
 "current_packet",
 "display_filter",
 "encryption",
 "input_filename",
 "next",
 "next_packet"]

(简洁起见以上列表经过了精简)

这些是我认为比较有用的方法和属性,其它大多数是用于调试或者捕获过程内部使用。 display_filterencryptioninput_filename 属性是之前传递给 FileCapture 或者 LiveCapture 的值。

此处真正强大的是apply_on_packets()next()方法。next()方法使得 capture 对象可以通过for循环进行遍历。
apply_on_packets() 方法是另一种遍历数据包的方式,它接受一个函数作为参数并将之作用于所有的数据包。

>>> 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)

这个方法也可以用于打印之外的功能,例如将数据包添加入一个列表进行其它处理。下面的脚本会将所有的数据包加入到一个列表中并打印总数:

import pyshark

def get_capture_count():
    p = pyshark.FileCapture("test.cap.pcap", keep_packets=False)

    count = []
    def counter(*args):
        count.append(args[0])

    p.apply_on_packets(counter, timeout=100000)

    return len(count)

print get_capture_count()

上一篇:PyShark入门(2):FileCapture和LiveCapture模块
下一篇:PyShark入门(4):capture对象

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38068.html

相关文章

  • PyShark入门(2):FileCapture和LiveCapture模块

    摘要:中进行数据包分析的两个典型方法是使用和模块。仅用于在嗅探时使用的过滤条件。仅用于保存的捕获文件的路径格式。用于在读取较大的捕获时节省内存。类似于使用或者进行嗅探,过滤器可以用于确定进入到返回的对象中的流量。 原文地址:http://zodiacg.net/2016/07/in... 本系列文章译自thePacketGeek的系列文章。原创翻译,转载请注明出处。 PyShark中进行数据...

    joyqi 评论0 收藏0
  • PyShark入门(1):简介

    摘要:如主页文档中展示的打开存储的捕获文件从网络接口上进行捕获使用或者方法建立对象后,在捕获和数据包层面就会有多个方法和属性可用。的强大在于可以调用内建的所有数据包解码器。后续文章中会说明需要那些措施来保留内存。下一篇入门和模块 原文地址:http://zodiacg.net/2016/07/in... 本系列文章译自thePacketGeek的系列文章。原创翻译,转载请注明出处。 文章作者...

    includecmath 评论0 收藏0
  • PyShark入门(4):packet对象

    摘要:以字节表示的数据包长度。当前数据包到达时间与第一个数据包的差值。的窗口大小仅用于数据包。如果你对的应用实例感兴趣,你可以看看我的项目上一篇入门对象 原文链接:http://zodiacg.net/2016/07/in... 本系列文章译自thePacketGeek的系列文章。原创翻译,转载请注明出处。 目前在这一系列文章中我们已经了解了如何捕获数据包和使用 capture 对象,我们终...

    cooxer 评论0 收藏0
  • vue入门笔记体系(五)vue指令

    摘要:指令指令带有前缀,以表示它们是提供的特殊特性。添加事件侦听器时使用模式。只当事件是从侦听器绑定的元素本身触发时才触发回调。差别在哪里将特性名转换为从开始支持语法糖,会扩展成一个更新父组件绑定值的侦听器。 vue指令 指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性。 v-text {{msg}} v-html //渲染HTML文本,更新元素的 innerHTML 。注意:内...

    myshell 评论0 收藏0

发表评论

0条评论

Youngdze

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<