原文地址: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内建的所有数据包解码器。我这里只简单展示一下你可以做的一些事情,后续的文章中会展开更深入的说明。
- 获取数据包摘要(类似于tshark捕获的输出)
>>> for pkt in cap: …: print pkt …: 2 0. 0. fe80::f141:48a9:9a2c:73e5 ff02::c SSDP 208 M-SEARCH * HTTP/ 3 1. 0. fe80::159a:5c9f:529c:f1eb ff02::c SSDP 208 M-SEARCH * HTTP/ 4 2.093188 0. 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) - 按层深入获取数据包属性
>>> 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 - 遍历数据包,对每个数据包使用给定函数处理
>>> 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)
下一篇:PyShark入门(2): FileCapture和LiveCapture模块
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/274038.html