资讯专栏INFORMATION COLUMN

PyShark入门(1):简介

includecmath / 1816人阅读

摘要:如主页文档中展示的打开存储的捕获文件从网络接口上进行捕获使用或者方法建立对象后,在捕获和数据包层面就会有多个方法和属性可用。的强大在于可以调用内建的所有数据包解码器。后续文章中会说明需要那些措施来保留内存。下一篇入门和模块

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

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

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

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

</>复制代码

  1. import pyshark
  2. # 打开存储的捕获文件
  3. cap = pyshark.FileCapture("/tmp/mycapture.cap")
  4. # 从网络接口上进行捕获
  5. capture = pyshark.LiveCapture(interface="eth0")
  6. capture.sniff(timeout=10)

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

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

</>复制代码

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

按层深入获取数据包属性

</>复制代码

  1. >>> pkt. #(tab auto-complete)
  2. pkt.captured_length pkt.highest_layer pkt.ip pkt.pretty_print pkt.transport_layer
  3. pkt.eth pkt.http pkt.layers pkt.sniff_time pkt.udp
  4. pkt.frame_info pkt.interface_captured pkt.length pkt.sniff_timestamp
  5. >>>
  6. >>> pkt[pkt.highest_layer]. #(tab auto-complete)
  7. pkt_app. pkt_app.get_field_value pkt_app.raw_mode pkt_app.request_version
  8. pkt_app.DATA_LAYER pkt_app.get_raw_value pkt_app.request
  9. pkt_app.chat pkt_app.layer_name pkt_app.request_method
  10. pkt_app.get_field pkt_app.pretty_print pkt_app.request_uri

遍历数据包,对每个数据包使用给定函数处理

</>复制代码

  1. >>> cap = pyshark.FileCapture("test.pcap", keep_packets=False)
  2. >>> def print_highest_layer(pkt)
  3. ...: print pkt.highest_layer
  4. >>> cap.apply_on_packets(print_highest_layer)
  5. HTTP
  6. HTTP
  7. HTTP
  8. HTTP
  9. HTTP
  10. ... (truncated)

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


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

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

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

相关文章

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

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

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

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

    cooxer 评论0 收藏0
  • PyShark入门(3):capture对象

    摘要:,和属性是之前传递给或者的值。方法使得对象可以通过循环进行遍历。方法是另一种遍历数据包的方式,它接受一个函数作为参数并将之作用于所有的数据包。下面的脚本会将所有的数据包加入到一个列表中并打印总数上一篇入门和模块下一篇入门对象 原文链接:http://zodiacg.net/2016/07/in... 本系列文章译自thePacketGeek的系列文章。原创翻译,转载请注明出处。 我们已...

    Youngdze 评论0 收藏0
  • 大数据入门指南(GitHub开源项目)

    摘要:项目地址前言大数据技术栈思维导图大数据常用软件安装指南一分布式文件存储系统分布式计算框架集群资源管理器单机伪集群环境搭建集群环境搭建常用命令的使用基于搭建高可用集群二简介及核心概念环境下的安装部署和命令行的基本使用常用操作分区表和分桶表视图 项目GitHub地址:https://github.com/heibaiying... 前 言 大数据技术栈思维导图 大数据常用软件安装指...

    guyan0319 评论0 收藏0
  • Spring Boot简介 & 入门

    摘要:开发环境及版本要求及以上版本开发工具简称推荐使用,同样可以使用实践。注解职责应用启动时容器会加载并注入到容器。扫描被修饰的配置类,也会扫描组件的配置类,并启动加载其默认配置。 1. Spring Boot简介   Spring Boot是由Pivotal团队提供的全新框架,秉承习惯优于配置的理念,简化了Spring应用程序创建和开发,无须过多关注配置,可以将更多精力放在业务代码上。 2...

    李文鹏 评论0 收藏0

发表评论

0条评论

includecmath

|高级讲师

TA的文章

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