OS-Ken PCAP file library helps you to read/write PCAP file which file format are described in The Wireshark Wiki.
For loading the packet data containing in PCAP files, you can use pcaplib.Reader.
os_ken.lib.pcaplib.
Reader
(file_obj)¶PCAP file reader
Argument | Description |
---|---|
file_obj | File object which reading PCAP file in binary mode |
Example of usage:
from os_ken.lib import pcaplib
from os_ken.lib.packet import packet
frame_count = 0
# iterate pcaplib.Reader that yields (timestamp, packet_data)
# in the PCAP file
for ts, buf in pcaplib.Reader(open('test.pcap', 'rb')):
frame_count += 1
pkt = packet.Packet(buf)
print("%d, %f, %s" % (frame_count, ts, pkt))
For dumping the packet data which your OSKenApp received, you can use pcaplib.Writer.
os_ken.lib.pcaplib.
Writer
(file_obj, snaplen=65535, network=1)¶PCAP file writer
Argument | Description |
---|---|
file_obj | File object which writing PCAP file in binary mode |
snaplen | Max length of captured packets (in octets) |
network | Data link type. (e.g. 1 for Ethernet, see tcpdump.org for details) |
Example of usage:
...
from os_ken.lib import pcaplib
class SimpleSwitch13(app_manager.OSKenApp):
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
def __init__(self, *args, **kwargs):
super(SimpleSwitch13, self).__init__(*args, **kwargs)
self.mac_to_port = {}
# Create pcaplib.Writer instance with a file object
# for the PCAP file
self.pcap_writer = pcaplib.Writer(open('mypcap.pcap', 'wb'))
...
@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
def _packet_in_handler(self, ev):
# Dump the packet data into PCAP file
self.pcap_writer.write_pkt(ev.msg.data)
...
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.