From 33b961e73a23a987964bb59fb244cbc520e85f9e Mon Sep 17 00:00:00 2001 From: Jarry Shaw Date: Tue, 22 Sep 2026 23:33:39 -0400 Subject: [PATCH] chore(examples): stop tracking the four rendered capture reports (#685) * `examples/captures/pcapng.txt` recorded `packet -> NIL` for four blocks that had been carrying their octets since #683, and nothing had noticed, because nothing reads a rendered report back: no test asserts on one, and `docs/source/demo.rst` only quotes them as hand-written transcripts. * Regenerating them on every parser change is work with no reader, so the four reports -- `out.json`, `out.plist`, `out.txt` and `pcapng.txt` -- are no longer tracked. `.gitignore` loses their un-ignore exceptions and the existing `examples/captures/*` line covers them; they stay on disk for anyone who has them already. * `in.pcap` and `dhcp.pcapng` stay tracked. They are inputs nothing in the repository regenerates, and the unit tier reads both on a fresh clone. * `examples/legacy_smoke/` is the only thing that rebuilds the reports -- `make fixtures`, not `make samples`, since `examples/generators/make_samples.py` never produced them. That README section and the Makefile comments called them "committed"; they now say what a fresh clone has to run, and why the reports are not worth tracking. * No packaging change. `MANIFEST.in` already prunes `examples/captures` wholesale, and the build is plain setuptools with no git-aware file finder, so the sdist and wheel listings are identical either way -- measured, and neither artifact ever carried a single file from that directory. * The tier guard needs no change either: `tests._tiers.committed_captures()` asks `git ls-files` rather than holding a list of names, so it reports two tracked captures instead of six on its own. tests/project/test_capture_tracking.py is new -- 5 tests and 8 subtests -- and pins that git tracks no rendered report, that both inputs stay tracked, and that no module under tests/ reads a report through `sample_path()`. Two of its tests fail across four subtests with the reports restored to the index, which is the regression it exists for. It skips where git cannot answer, so an unpacked source tarball still runs. No pcapkit module changes, so library coverage is unmoved by construction. Fixes #685 --- .gitignore | 18 +- examples/captures/out.json | 557 ------------------ examples/captures/out.plist | 751 ------------------------- examples/captures/out.txt | 472 ---------------- examples/captures/pcapng.txt | 581 ------------------- examples/legacy_smoke/Makefile | 7 +- examples/legacy_smoke/README.rst | 34 +- tests/project/test_capture_tracking.py | 173 ++++++ 8 files changed, 214 insertions(+), 2379 deletions(-) delete mode 100644 examples/captures/out.json delete mode 100644 examples/captures/out.plist delete mode 100644 examples/captures/out.txt delete mode 100644 examples/captures/pcapng.txt create mode 100644 tests/project/test_capture_tracking.py diff --git a/.gitignore b/.gitignore index 1246744ac1..4dc889a4a0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,12 +6,22 @@ pcapkit-temp.html # generated captures at examples/sample/, and nothing should track them. examples/sample/ examples/captures/* -!examples/captures/out.json -!examples/captures/out.plist -!examples/captures/out.txt +# Only the two genuine *inputs* are tracked. Everything else in this directory is +# build output: the captures `examples/generators/make_samples.py` writes, and the +# reference reports `examples/legacy_smoke/` renders out of these two inputs -- +# out.json, out.plist, out.txt and pcapng.txt, via `make fixtures` there. +# +# Those four used to be tracked, and the reason they no longer are is that a +# tracked report goes stale silently. Nothing reads one back, so nothing notices +# when a parser change alters how a frame renders: #685 was exactly that, with +# pcapng.txt still recording `packet -> NIL` for four blocks long after #683 gave +# PCAP-NG packet blocks their captured octets back. Regenerating them on every such +# change is work with no reader, and the tier guard in `tests/_tiers.py` asks git +# which captures are tracked rather than hardcoding a list, so dropping them here +# is the whole change -- see `examples/legacy_smoke/README.rst` for how to rebuild +# them locally. !examples/captures/in.pcap !examples/captures/dhcp.pcapng -!examples/captures/pcapng.txt src !requirements.txt diff --git a/examples/captures/out.json b/examples/captures/out.json deleted file mode 100644 index b9e18ab92d..0000000000 --- a/examples/captures/out.json +++ /dev/null @@ -1,557 +0,0 @@ -{ - "Global Header": { - "magic_number": { - "data": { - "type": "bytes", - "value": "\ufffd\u00f2\ufffd", - "hex": "d4c3b2a1" - }, - "byteorder": "little", - "nanosecond": false - }, - "version": { - "type": "VersionInfo", - "value": [ 2, 4 ] - }, - "thiszone": 0, - "sigfigs": 0, - "snaplen": 262144, - "network": "LinkType::ETHERNET [1]", - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "Frame 1": { - "frame_info": { - "ts_sec": 1511106545, - "ts_usec": 471719, - "incl_len": 86, - "orig_len": 86 - }, - "time": "2017-11-19T15:49:05.471719", - "number": 1, - "time_epoch": "1511106545.471719", - "len": 86, - "cap_len": 86, - "ethernet": { - "dst": "40:33:1a:d1:85:1c", - "src": "a4:5e:60:d9:6b:97", - "type": "EtherType::Internet_Protocol_version_6 [34525]", - "ipv6": { - "version": 6, - "class": 0, - "label": 0, - "payload": 32, - "next": "TransType::IPv6_ICMP [58]", - "limit": 255, - "src": "fe80::a6:87f9:2793:16ee", - "dst": "fe80::1ccd:7c77:bac7:46b7", - "hdr_len": 40, - "raw_len": 32, - "protocol": "TransType::IPv6_ICMP [58]", - "raw": { - "protocol": "TransType::IPv6_ICMP [58]", - "error": null, - "packet": { - "type": "bytes", - "value": "\ufffd\u0000\u000e\ufffd\u0000\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd\u0001\u0001\ufffd^`\ufffdk\ufffd", - "hex": "87000eaa00000000fe800000000000001ccd7c77bac746b70101a45e60d96b97" - } - }, - "packet": { - "type": "bytes", - "value": "\ufffd\u0000\u000e\ufffd\u0000\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd\u0001\u0001\ufffd^`\ufffdk\ufffd", - "hex": "87000eaa00000000fe800000000000001ccd7c77bac746b70101a45e60d96b97" - } - }, - "packet": { - "type": "bytes", - "value": "`\u0000\u0000\u0000\u0000 :\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ufffd\ufffd\ufffd'\ufffd\u0016\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd\ufffd\u0000\u000e\ufffd\u0000\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd\u0001\u0001\ufffd^`\ufffdk\ufffd", - "hex": "6000000000203afffe8000000000000000a687f9279316eefe800000000000001ccd7c77bac746b787000eaa00000000fe800000000000001ccd7c77bac746b70101a45e60d96b97" - } - }, - "protocols": "Ethernet:IPv6:IPv6_ICMP", - "packet": { - "type": "bytes", - "value": "\ufffd\u0011Z\u001e\ufffd\u0008\u0000N\u0000\u0000\u0000N\u0000\u0000\u0000\ufffd^`\ufffdk\ufffd@3\u001a\u0445\u001c\ufffd\ufffd`\u0000\u0000\u0000\u0000\u0018:\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ufffd\ufffd\ufffd'\ufffd\u0016\ufffd\u0000?\ufffd@\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000", - "hex": "f1a7115a1ed208004e0000004e000000a45e60d96b9740331ad1851c86dd6000000000183afffe800000000000001ccd7c77bac746b7fe8000000000000000a687f9279316ee88003f8240000000fe80000000000000" - } - }, - "Frame 2": { - "frame_info": { - "ts_sec": 1511106545, - "ts_usec": 578078, - "incl_len": 78, - "orig_len": 78 - }, - "time": "2017-11-19T15:49:05.578078", - "number": 2, - "time_epoch": "1511106545.578078", - "len": 78, - "cap_len": 78, - "ethernet": { - "dst": "a4:5e:60:d9:6b:97", - "src": "40:33:1a:d1:85:1c", - "type": "EtherType::Internet_Protocol_version_6 [34525]", - "ipv6": { - "version": 6, - "class": 0, - "label": 0, - "payload": 24, - "next": "TransType::IPv6_ICMP [58]", - "limit": 255, - "src": "fe80::1ccd:7c77:bac7:46b7", - "dst": "fe80::a6:87f9:2793:16ee", - "hdr_len": 40, - "raw_len": 24, - "protocol": "TransType::IPv6_ICMP [58]", - "raw": { - "protocol": "TransType::IPv6_ICMP [58]", - "error": null, - "packet": { - "type": "bytes", - "value": "\ufffd\u0000?\ufffd@\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd", - "hex": "88003f8240000000fe800000000000001ccd7c77bac746b7" - } - }, - "packet": { - "type": "bytes", - "value": "\ufffd\u0000?\ufffd@\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd", - "hex": "88003f8240000000fe800000000000001ccd7c77bac746b7" - } - }, - "packet": { - "type": "bytes", - "value": "`\u0000\u0000\u0000\u0000\u0018:\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ufffd\ufffd\ufffd'\ufffd\u0016\ufffd\u0000?\ufffd@\u0000\u0000\u0000\ufffd\ufffd\u0000\u0000\u0000\u0000\u0000\u0000\u001c\ufffd|w\ufffd\ufffdF\ufffd", - "hex": "6000000000183afffe800000000000001ccd7c77bac746b7fe8000000000000000a687f9279316ee88003f8240000000fe800000000000001ccd7c77bac746b7" - } - }, - "protocols": "Ethernet:IPv6:IPv6_ICMP", - "packet": { - "type": "bytes", - "value": "\ufffd\ufffd\u0011ZL\ufffd\u000b\u00006\u0000\u0000\u00006\u0000\u0000\u0000\ufffd^`\ufffdk\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdG\u0008\u0000E\u0000\u0000(\ufffd4@\u0000+\u0006z\ufffd{\ufffd\u0487\ufffd\ufffd\u0001d\u0000P\ufffd\ufffd\u055f\ufffdT\ufffdz\ufffd\ufffdP\u0011|\ufffd|\ufffd\u0000\u0000\ufffd\ufffd\u0011Z\ufffd\ufffd\u000b\u0000", - "hex": "f5a7115a4cde0b003600000036000000a45e60d96b97b8f883a5f947080045000028c53440002b067a867b81d287c0a801640050d7c0d59fb154a67aa0ff50117cb07c8e0000f5a7115a8cde0b00" - } - }, - "Frame 3": { - "frame_info": { - "ts_sec": 1511106549, - "ts_usec": 777804, - "incl_len": 54, - "orig_len": 54 - }, - "time": "2017-11-19T15:49:09.777804", - "number": 3, - "time_epoch": "1511106549.777804", - "len": 54, - "cap_len": 54, - "ethernet": { - "dst": "a4:5e:60:d9:6b:97", - "src": "b8:f8:83:a5:f9:47", - "type": "EtherType::Internet_Protocol_version_4 [2048]", - "ipv4": { - "version": 4, - "hdr_len": 20, - "tos": { - "pre": "ToSPrecedence::Routine [0]", - "del": "ToSDelay::NORMAL [0]", - "thr": "ToSThroughput::NORMAL [0]", - "rel": "ToSReliability::NORMAL [0]", - "ecn": "ToSECN::Not_ECT [0]" - }, - "len": 40, - "id": 50484, - "flags": { - "df": true, - "mf": false - }, - "offset": 0, - "ttl": 43.0, - "protocol": "TransType::TCP [6]", - "checksum": { - "type": "bytes", - "value": "z\ufffd", - "hex": "7a86" - }, - "src": "123.129.210.135", - "dst": "192.168.1.100", - "tcp": { - "srcport": { - "enum": "AppType::www_http [www-http [80 - tcp|udp]]", - "svc": "www-http", - "port": 80, - "proto": "TransportProtocol::tcp|udp [3]" - }, - "dstport": { - "enum": "AppType::PORT_55232_tcp [unknown [55232 - tcp]]", - "svc": "unknown", - "port": 55232, - "proto": "TransportProtocol::tcp [1]" - }, - "seq": 3584012628, - "ack": 2793054463, - "hdr_len": 20, - "flags": { - "cwr": false, - "ece": false, - "urg": false, - "ack": true, - "psh": false, - "rst": false, - "syn": false, - "fin": true - }, - "window_size": 31920, - "checksum": { - "type": "bytes", - "value": "|\ufffd", - "hex": "7c8e" - }, - "urgent_pointer": 0, - "connection": "Flags::ACK|FIN [34816]", - "nopayload": { - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "packet": { - "type": "bytes", - "value": "\u0000P\ufffd\ufffd\u055f\ufffdT\ufffdz\ufffd\ufffdP\u0011|\ufffd|\ufffd\u0000\u0000", - "hex": "0050d7c0d59fb154a67aa0ff50117cb07c8e0000" - } - }, - "packet": { - "type": "bytes", - "value": "E\u0000\u0000(\ufffd4@\u0000+\u0006z\ufffd{\ufffd\u0487\ufffd\ufffd\u0001d\u0000P\ufffd\ufffd\u055f\ufffdT\ufffdz\ufffd\ufffdP\u0011|\ufffd|\ufffd\u0000\u0000", - "hex": "45000028c53440002b067a867b81d287c0a801640050d7c0d59fb154a67aa0ff50117cb07c8e0000" - } - }, - "protocols": "Ethernet:IPv4:TCP", - "packet": { - "type": "bytes", - "value": "\ufffd\ufffd\u0011Z\ufffd\ufffd\u000b\u00006\u0000\u0000\u00006\u0000\u0000\u0000\ufffd\ufffd\ufffd\ufffd\ufffdG\ufffd^`\ufffdk\ufffd\u0008\u0000E\u0000\u0000(\u0000\u0000@\u0000@\u0006*\ufffd\ufffd\ufffd\u0001d{\ufffd\u0487\ufffd\ufffd\u0000P", - "hex": "f5a7115a8cde0b003600000036000000b8f883a5f947a45e60d96b970800450000280000400040062abbc0a801647b81d287d7c00050" - } - }, - "Frame 4": { - "frame_info": { - "ts_sec": 1511106549, - "ts_usec": 777868, - "incl_len": 54, - "orig_len": 54 - }, - "time": "2017-11-19T15:49:09.777868", - "number": 4, - "time_epoch": "1511106549.777868", - "len": 54, - "cap_len": 54, - "ethernet": { - "dst": "b8:f8:83:a5:f9:47", - "src": "a4:5e:60:d9:6b:97", - "type": "EtherType::Internet_Protocol_version_4 [2048]", - "ipv4": { - "version": 4, - "hdr_len": 20, - "tos": { - "pre": "ToSPrecedence::Routine [0]", - "del": "ToSDelay::NORMAL [0]", - "thr": "ToSThroughput::NORMAL [0]", - "rel": "ToSReliability::NORMAL [0]", - "ecn": "ToSECN::Not_ECT [0]" - }, - "len": 40, - "id": 0, - "flags": { - "df": true, - "mf": false - }, - "offset": 0, - "ttl": 64.0, - "protocol": "TransType::TCP [6]", - "checksum": { - "type": "bytes", - "value": "*\ufffd", - "hex": "2abb" - }, - "src": "192.168.1.100", - "dst": "123.129.210.135", - "tcp": { - "srcport": { - "enum": "AppType::PORT_55232_tcp [unknown [55232 - tcp]]", - "svc": "unknown", - "port": 55232, - "proto": "TransportProtocol::tcp [1]" - }, - "dstport": { - "enum": "AppType::www_http [www-http [80 - tcp|udp]]", - "svc": "www-http", - "port": 80, - "proto": "TransportProtocol::tcp|udp [3]" - }, - "seq": 2793054463, - "ack": 3584012629, - "hdr_len": 20, - "flags": { - "cwr": false, - "ece": false, - "urg": false, - "ack": true, - "psh": false, - "rst": false, - "syn": false, - "fin": false - }, - "window_size": 65535, - "checksum": { - "type": "bytes", - "value": "\ufffd>", - "hex": "f93e" - }, - "urgent_pointer": 0, - "connection": "Flags::ACK [2048]", - "nopayload": { - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "packet": { - "type": "bytes", - "value": "\ufffd\ufffd\u0000P\ufffdz\ufffd\ufffd\u055f\ufffdUP\u0010\ufffd\ufffd\ufffd>\u0000\u0000", - "hex": "d7c00050a67aa0ffd59fb1555010fffff93e0000" - } - }, - "packet": { - "type": "bytes", - "value": "E\u0000\u0000(\u0000\u0000@\u0000@\u0006*\ufffd\ufffd\ufffd\u0001d{\ufffd\u0487\ufffd\ufffd\u0000P\ufffdz\ufffd\ufffd\u055f\ufffdUP\u0010\ufffd\ufffd\ufffd>\u0000\u0000", - "hex": "450000280000400040062abbc0a801647b81d287d7c00050a67aa0ffd59fb1555010fffff93e0000" - } - }, - "protocols": "Ethernet:IPv4:TCP", - "packet": { - "type": "bytes", - "value": "\ufffd\ufffd\u0011Z8\ufffd\r\u00006\u0000\u0000\u00006\u0000\u0000\u0000\ufffd\ufffd\ufffd\ufffd\ufffdG\ufffd^`\ufffdk\ufffd\u0008\u0000E\u0000\u0000(\u0000\u0000@\u0000@\u0006*\ufffd\ufffd\ufffd\u0001d{\ufffd\u0487\u05f0\u0000P", - "hex": "f5a7115a38f10d003600000036000000b8f883a5f947a45e60d96b970800450000280000400040062abbc0a801647b81d287d7b00050" - } - }, - "Frame 5": { - "frame_info": { - "ts_sec": 1511106549, - "ts_usec": 913720, - "incl_len": 54, - "orig_len": 54 - }, - "time": "2017-11-19T15:49:09.913720", - "number": 5, - "time_epoch": "1511106549.91372", - "len": 54, - "cap_len": 54, - "ethernet": { - "dst": "b8:f8:83:a5:f9:47", - "src": "a4:5e:60:d9:6b:97", - "type": "EtherType::Internet_Protocol_version_4 [2048]", - "ipv4": { - "version": 4, - "hdr_len": 20, - "tos": { - "pre": "ToSPrecedence::Routine [0]", - "del": "ToSDelay::NORMAL [0]", - "thr": "ToSThroughput::NORMAL [0]", - "rel": "ToSReliability::NORMAL [0]", - "ecn": "ToSECN::Not_ECT [0]" - }, - "len": 40, - "id": 0, - "flags": { - "df": true, - "mf": false - }, - "offset": 0, - "ttl": 64.0, - "protocol": "TransType::TCP [6]", - "checksum": { - "type": "bytes", - "value": "*\ufffd", - "hex": "2abb" - }, - "src": "192.168.1.100", - "dst": "123.129.210.135", - "tcp": { - "srcport": { - "enum": "AppType::PORT_55216_tcp [unknown [55216 - tcp]]", - "svc": "unknown", - "port": 55216, - "proto": "TransportProtocol::tcp [1]" - }, - "dstport": { - "enum": "AppType::www_http [www-http [80 - tcp|udp]]", - "svc": "www-http", - "port": 80, - "proto": "TransportProtocol::tcp|udp [3]" - }, - "seq": 768904481, - "ack": 1835365486, - "hdr_len": 20, - "flags": { - "cwr": false, - "ece": false, - "urg": false, - "ack": true, - "psh": false, - "rst": false, - "syn": false, - "fin": true - }, - "window_size": 65535, - "checksum": { - "type": "bytes", - "value": "*\ufffd", - "hex": "2af4" - }, - "urgent_pointer": 0, - "connection": "Flags::ACK|FIN [34816]", - "nopayload": { - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - }, - "packet": { - "type": "bytes", - "value": "\u05f0\u0000P-\u050d!metnP\u0011\ufffd\ufffd*\ufffd\u0000\u0000", - "hex": "d7b000502dd48d216d65746e5011ffff2af40000" - } - }, - "packet": { - "type": "bytes", - "value": "E\u0000\u0000(\u0000\u0000@\u0000@\u0006*\ufffd\ufffd\ufffd\u0001d{\ufffd\u0487\u05f0\u0000P-\u050d!metnP\u0011\ufffd\ufffd*\ufffd\u0000\u0000", - "hex": "450000280000400040062abbc0a801647b81d287d7b000502dd48d216d65746e5011ffff2af40000" - } - }, - "protocols": "Ethernet:IPv4:TCP", - "packet": { - "type": "bytes", - "value": "\ufffd\ufffd\u0011Z\u0013\u0005\u0001\u0000\ufffd\u0000\u0000\u0000\ufffd\u0000\u0000\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdG\u0008\u0000E\u0000\u0000\ufffd\u0000\u0000@\u0000@\u0011x\ufffd\ufffd\ufffd\u0001\u0001\ufffd\ufffd\ufffd\ufffd\ufffdD\u0013\ufffd", - "hex": "f7a7115a130501009f0000009f000000ffffffffffffb8f883a5f94708004500009100004000401178b3c0a80101ffffffff92441389" - } - }, - "Frame 6": { - "frame_info": { - "ts_sec": 1511106551, - "ts_usec": 66835, - "incl_len": 159, - "orig_len": 159 - }, - "time": "2017-11-19T15:49:11.066835", - "number": 6, - "time_epoch": "1511106551.066835", - "len": 159, - "cap_len": 159, - "ethernet": { - "dst": "ff:ff:ff:ff:ff:ff", - "src": "b8:f8:83:a5:f9:47", - "type": "EtherType::Internet_Protocol_version_4 [2048]", - "ipv4": { - "version": 4, - "hdr_len": 20, - "tos": { - "pre": "ToSPrecedence::Routine [0]", - "del": "ToSDelay::NORMAL [0]", - "thr": "ToSThroughput::NORMAL [0]", - "rel": "ToSReliability::NORMAL [0]", - "ecn": "ToSECN::Not_ECT [0]" - }, - "len": 145, - "id": 0, - "flags": { - "df": true, - "mf": false - }, - "offset": 0, - "ttl": 64.0, - "protocol": "TransType::UDP [17]", - "checksum": { - "type": "bytes", - "value": "x\ufffd", - "hex": "78b3" - }, - "src": "192.168.1.1", - "dst": "255.255.255.255", - "udp": { - "srcport": { - "enum": "AppType::unassigned_37444 [unassigned [37444 - undefined]]", - "svc": "unassigned", - "port": 37444, - "proto": "TransportProtocol::undefined [0]" - }, - "dstport": { - "enum": "AppType::commplex_link [commplex-link [5001 - tcp|udp]]", - "svc": "commplex-link", - "port": 5001, - "proto": "TransportProtocol::tcp|udp [3]" - }, - "len": 125, - "checksum": { - "type": "bytes", - "value": "c\ufffd", - "hex": "63b1" - }, - "raw": { - "protocol": null, - "error": null, - "packet": { - "type": "bytes", - "value": "\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4", - "hex": "01010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34" - } - }, - "packet": { - "type": "bytes", - "value": "\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4", - "hex": "01010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34" - } - }, - "packet": { - "type": "bytes", - "value": "\ufffdD\u0013\ufffd\u0000}c\ufffd\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4", - "hex": "92441389007d63b101010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34" - } - }, - "packet": { - "type": "bytes", - "value": "E\u0000\u0000\ufffd\u0000\u0000@\u0000@\u0011x\ufffd\ufffd\ufffd\u0001\u0001\ufffd\ufffd\ufffd\ufffd\ufffdD\u0013\ufffd\u0000}c\ufffd\u0001\u0001\u000e\u0000\ufffd+\ufffd\ufffd\ufffd\ufffd\u0000g\u0000\u0000\u0000\u0006\u0000\nTL-WDR6300\u0000\u000b\u0000\u00036.0\u0000\u0007\u0000\u0001\u0001\u0000\u0005\u0000\u0011B8-F8-83-A5-F9-47\u0000\u0008\u0000\u000b192.168.1.1\u0000\t\u0000\ntplogin.cn\u0000\n\u0000\u000eTL-WDR6300 6.0\u0000\f\u0000\u00051.7.4", - "hex": "4500009100004000401178b3c0a80101ffffffff92441389007d63b101010e00e12b83c7f98b006700000006000a544c2d57445236333030000b0003362e3000070001010005001142382d46382d38332d41352d46392d34370008000b3139322e3136382e312e310009000a74706c6f67696e2e636e000a000e544c2d5744523633303020362e30000c0005312e372e34" - } - }, - "protocols": "Ethernet:IPv4:UDP:Raw", - "packet": { - "type": "bytes", - "value": "", - "hex": "" - } - } -} \ No newline at end of file diff --git a/examples/captures/out.plist b/examples/captures/out.plist deleted file mode 100644 index 815ece9fab..0000000000 --- a/examples/captures/out.plist +++ /dev/null @@ -1,751 +0,0 @@ - - - - - Global Header - - magic_number - - data - 1MOyoQ== - byteorder - little - nanosecond - - - version - - type - VersionInfo - value - - 2 - 4 - - - thiszone - 0 - sigfigs - 0 - snaplen - 262144 - network - LinkType::ETHERNET [1] - packet - - - Frame 1 - - frame_info - - ts_sec - 1511106545 - ts_usec - 471719 - incl_len - 86 - orig_len - 86 - - time - 2017-11-19T15:49:05.471719Z - number - 1 - time_epoch - 1511106545.471719 - len - 86 - cap_len - 86 - ethernet - - dst - 40:33:1a:d1:85:1c - src - a4:5e:60:d9:6b:97 - type - EtherType::Internet_Protocol_version_6 [34525] - ipv6 - - version - 6 - class - 0 - label - 0 - payload - 32 - next - TransType::IPv6_ICMP [58] - limit - 255 - src - fe80::a6:87f9:2793:16ee - dst - fe80::1ccd:7c77:bac7:46b7 - hdr_len - 40 - raw_len - 32 - protocol - TransType::IPv6_ICMP [58] - raw - - protocol - TransType::IPv6_ICMP [58] - packet - hwAOqgAAAAD+gAAAAAAAABzNfHe6x0a3AQGkXmDZa5c= - - packet - hwAOqgAAAAD+gAAAAAAAABzNfHe6x0a3AQGkXmDZa5c= - - packet - YAAAAAAgOv/+gAAAAAAAAACmh/knkxbu/oAAAAAAAAAczXx3usdGt4cADqoAAAAA/oAAAAAAAAAczXx3usdGtwEBpF5g2WuX - - protocols - Ethernet:IPv6:IPv6_ICMP - packet - 8acRWh7SCABOAAAATgAAAKReYNlrl0AzGtGFHIbdYAAAAAAYOv/+gAAAAAAAABzNfHe6x0a3/oAAAAAAAAAApof5J5MW7ogAP4JAAAAA/oAAAAAAAAA= - - Frame 2 - - frame_info - - ts_sec - 1511106545 - ts_usec - 578078 - incl_len - 78 - orig_len - 78 - - time - 2017-11-19T15:49:05.578078Z - number - 2 - time_epoch - 1511106545.578078 - len - 78 - cap_len - 78 - ethernet - - dst - a4:5e:60:d9:6b:97 - src - 40:33:1a:d1:85:1c - type - EtherType::Internet_Protocol_version_6 [34525] - ipv6 - - version - 6 - class - 0 - label - 0 - payload - 24 - next - TransType::IPv6_ICMP [58] - limit - 255 - src - fe80::1ccd:7c77:bac7:46b7 - dst - fe80::a6:87f9:2793:16ee - hdr_len - 40 - raw_len - 24 - protocol - TransType::IPv6_ICMP [58] - raw - - protocol - TransType::IPv6_ICMP [58] - packet - iAA/gkAAAAD+gAAAAAAAABzNfHe6x0a3 - - packet - iAA/gkAAAAD+gAAAAAAAABzNfHe6x0a3 - - packet - YAAAAAAYOv/+gAAAAAAAABzNfHe6x0a3/oAAAAAAAAAApof5J5MW7ogAP4JAAAAA/oAAAAAAAAAczXx3usdGtw== - - protocols - Ethernet:IPv6:IPv6_ICMP - packet - 9acRWkzeCwA2AAAANgAAAKReYNlrl7j4g6X5RwgARQAAKMU0QAArBnqGe4HSh8CoAWQAUNfA1Z+xVKZ6oP9QEXywfI4AAPWnEVqM3gsA - - Frame 3 - - frame_info - - ts_sec - 1511106549 - ts_usec - 777804 - incl_len - 54 - orig_len - 54 - - time - 2017-11-19T15:49:09.777804Z - number - 3 - time_epoch - 1511106549.777804 - len - 54 - cap_len - 54 - ethernet - - dst - a4:5e:60:d9:6b:97 - src - b8:f8:83:a5:f9:47 - type - EtherType::Internet_Protocol_version_4 [2048] - ipv4 - - version - 4 - hdr_len - 20 - tos - - pre - ToSPrecedence::Routine [0] - del - ToSDelay::NORMAL [0] - thr - ToSThroughput::NORMAL [0] - rel - ToSReliability::NORMAL [0] - ecn - ToSECN::Not_ECT [0] - - len - 40 - id - 50484 - flags - - df - - mf - - - offset - 0 - ttl - 43.0 - protocol - TransType::TCP [6] - checksum - eoY= - src - 123.129.210.135 - dst - 192.168.1.100 - tcp - - srcport - - enum - AppType::www_http [www-http [80 - tcp|udp]] - svc - www-http - port - 80 - proto - TransportProtocol::tcp|udp [3] - - dstport - - enum - AppType::PORT_55232_tcp [unknown [55232 - tcp]] - svc - unknown - port - 55232 - proto - TransportProtocol::tcp [1] - - seq - 3584012628 - ack - 2793054463 - hdr_len - 20 - flags - - cwr - - ece - - urg - - ack - - psh - - rst - - syn - - fin - - - window_size - 31920 - checksum - fI4= - urgent_pointer - 0 - connection - Flags::ACK|FIN [34816] - nopayload - - packet - - - packet - - - packet - AFDXwNWfsVSmeqD/UBF8sHyOAAA= - - packet - RQAAKMU0QAArBnqGe4HSh8CoAWQAUNfA1Z+xVKZ6oP9QEXywfI4AAA== - - protocols - Ethernet:IPv4:TCP - packet - 9acRWozeCwA2AAAANgAAALj4g6X5R6ReYNlrlwgARQAAKAAAQABABiq7wKgBZHuB0ofXwABQ - - Frame 4 - - frame_info - - ts_sec - 1511106549 - ts_usec - 777868 - incl_len - 54 - orig_len - 54 - - time - 2017-11-19T15:49:09.777868Z - number - 4 - time_epoch - 1511106549.777868 - len - 54 - cap_len - 54 - ethernet - - dst - b8:f8:83:a5:f9:47 - src - a4:5e:60:d9:6b:97 - type - EtherType::Internet_Protocol_version_4 [2048] - ipv4 - - version - 4 - hdr_len - 20 - tos - - pre - ToSPrecedence::Routine [0] - del - ToSDelay::NORMAL [0] - thr - ToSThroughput::NORMAL [0] - rel - ToSReliability::NORMAL [0] - ecn - ToSECN::Not_ECT [0] - - len - 40 - id - 0 - flags - - df - - mf - - - offset - 0 - ttl - 64.0 - protocol - TransType::TCP [6] - checksum - Krs= - src - 192.168.1.100 - dst - 123.129.210.135 - tcp - - srcport - - enum - AppType::PORT_55232_tcp [unknown [55232 - tcp]] - svc - unknown - port - 55232 - proto - TransportProtocol::tcp [1] - - dstport - - enum - AppType::www_http [www-http [80 - tcp|udp]] - svc - www-http - port - 80 - proto - TransportProtocol::tcp|udp [3] - - seq - 2793054463 - ack - 3584012629 - hdr_len - 20 - flags - - cwr - - ece - - urg - - ack - - psh - - rst - - syn - - fin - - - window_size - 65535 - checksum - +T4= - urgent_pointer - 0 - connection - Flags::ACK [2048] - nopayload - - packet - - - packet - - - packet - 18AAUKZ6oP/Vn7FVUBD///k+AAA= - - packet - RQAAKAAAQABABiq7wKgBZHuB0ofXwABQpnqg/9WfsVVQEP//+T4AAA== - - protocols - Ethernet:IPv4:TCP - packet - 9acRWjjxDQA2AAAANgAAALj4g6X5R6ReYNlrlwgARQAAKAAAQABABiq7wKgBZHuB0ofXsABQ - - Frame 5 - - frame_info - - ts_sec - 1511106549 - ts_usec - 913720 - incl_len - 54 - orig_len - 54 - - time - 2017-11-19T15:49:09.913720Z - number - 5 - time_epoch - 1511106549.91372 - len - 54 - cap_len - 54 - ethernet - - dst - b8:f8:83:a5:f9:47 - src - a4:5e:60:d9:6b:97 - type - EtherType::Internet_Protocol_version_4 [2048] - ipv4 - - version - 4 - hdr_len - 20 - tos - - pre - ToSPrecedence::Routine [0] - del - ToSDelay::NORMAL [0] - thr - ToSThroughput::NORMAL [0] - rel - ToSReliability::NORMAL [0] - ecn - ToSECN::Not_ECT [0] - - len - 40 - id - 0 - flags - - df - - mf - - - offset - 0 - ttl - 64.0 - protocol - TransType::TCP [6] - checksum - Krs= - src - 192.168.1.100 - dst - 123.129.210.135 - tcp - - srcport - - enum - AppType::PORT_55216_tcp [unknown [55216 - tcp]] - svc - unknown - port - 55216 - proto - TransportProtocol::tcp [1] - - dstport - - enum - AppType::www_http [www-http [80 - tcp|udp]] - svc - www-http - port - 80 - proto - TransportProtocol::tcp|udp [3] - - seq - 768904481 - ack - 1835365486 - hdr_len - 20 - flags - - cwr - - ece - - urg - - ack - - psh - - rst - - syn - - fin - - - window_size - 65535 - checksum - KvQ= - urgent_pointer - 0 - connection - Flags::ACK|FIN [34816] - nopayload - - packet - - - packet - - - packet - 17AAUC3UjSFtZXRuUBH//yr0AAA= - - packet - RQAAKAAAQABABiq7wKgBZHuB0ofXsABQLdSNIW1ldG5QEf//KvQAAA== - - protocols - Ethernet:IPv4:TCP - packet - 96cRWhMFAQCfAAAAnwAAAP///////7j4g6X5RwgARQAAkQAAQABAEXizwKgBAf////+SRBOJ - - Frame 6 - - frame_info - - ts_sec - 1511106551 - ts_usec - 66835 - incl_len - 159 - orig_len - 159 - - time - 2017-11-19T15:49:11.066835Z - number - 6 - time_epoch - 1511106551.066835 - len - 159 - cap_len - 159 - ethernet - - dst - ff:ff:ff:ff:ff:ff - src - b8:f8:83:a5:f9:47 - type - EtherType::Internet_Protocol_version_4 [2048] - ipv4 - - version - 4 - hdr_len - 20 - tos - - pre - ToSPrecedence::Routine [0] - del - ToSDelay::NORMAL [0] - thr - ToSThroughput::NORMAL [0] - rel - ToSReliability::NORMAL [0] - ecn - ToSECN::Not_ECT [0] - - len - 145 - id - 0 - flags - - df - - mf - - - offset - 0 - ttl - 64.0 - protocol - TransType::UDP [17] - checksum - eLM= - src - 192.168.1.1 - dst - 255.255.255.255 - udp - - srcport - - enum - AppType::unassigned_37444 [unassigned [37444 - undefined]] - svc - unassigned - port - 37444 - proto - TransportProtocol::undefined [0] - - dstport - - enum - AppType::commplex_link [commplex-link [5001 - tcp|udp]] - svc - commplex-link - port - 5001 - proto - TransportProtocol::tcp|udp [3] - - len - 125 - checksum - Y7E= - raw - - packet - AQEOAOErg8f5iwBnAAAABgAKVEwtV0RSNjMwMAALAAM2LjAABwABAQAFABFCOC1GOC04My1BNS1GOS00NwAIAAsxOTIuMTY4LjEuMQAJAAp0cGxvZ2luLmNuAAoADlRMLVdEUjYzMDAgNi4wAAwABTEuNy40 - - packet - AQEOAOErg8f5iwBnAAAABgAKVEwtV0RSNjMwMAALAAM2LjAABwABAQAFABFCOC1GOC04My1BNS1GOS00NwAIAAsxOTIuMTY4LjEuMQAJAAp0cGxvZ2luLmNuAAoADlRMLVdEUjYzMDAgNi4wAAwABTEuNy40 - - packet - kkQTiQB9Y7EBAQ4A4SuDx/mLAGcAAAAGAApUTC1XRFI2MzAwAAsAAzYuMAAHAAEBAAUAEUI4LUY4LTgzLUE1LUY5LTQ3AAgACzE5Mi4xNjguMS4xAAkACnRwbG9naW4uY24ACgAOVEwtV0RSNjMwMCA2LjAADAAFMS43LjQ= - - packet - RQAAkQAAQABAEXizwKgBAf////+SRBOJAH1jsQEBDgDhK4PH+YsAZwAAAAYAClRMLVdEUjYzMDAACwADNi4wAAcAAQEABQARQjgtRjgtODMtQTUtRjktNDcACAALMTkyLjE2OC4xLjEACQAKdHBsb2dpbi5jbgAKAA5UTC1XRFI2MzAwIDYuMAAMAAUxLjcuNA== - - protocols - Ethernet:IPv4:UDP:Raw - packet - - - - diff --git a/examples/captures/out.txt b/examples/captures/out.txt deleted file mode 100644 index 824fb657b7..0000000000 --- a/examples/captures/out.txt +++ /dev/null @@ -1,472 +0,0 @@ -Global Header - |-- magic_number - | |-- data -> d4 c3 b2 a1 - | |-- byteorder -> little - | |-- nanosecond -> False - |-- version - | |-- type -> VersionInfo - | |-- value - | |--> 2 - | |--> 4 - |-- thiszone -> 0 - |-- sigfigs -> 0 - |-- snaplen -> 262144 - |-- network -> LinkType::ETHERNET [1] - |-- packet -> NIL - -Frame 1 - |-- frame_info - | |-- ts_sec -> 1511106545 - | |-- ts_usec -> 471719 - | |-- incl_len -> 86 - | |-- orig_len -> 86 - |-- time -> 2017-11-19T15:49:05.471719 - |-- number -> 1 - |-- time_epoch -> 1511106545.471719 - |-- len -> 86 - |-- cap_len -> 86 - |-- ethernet - | |-- dst -> 40:33:1a:d1:85:1c - | |-- src -> a4:5e:60:d9:6b:97 - | |-- type - | | |--> EtherType::Internet_Protocol_version_6 - | | [34525] - | |-- ipv6 - | | |-- version -> 6 - | | |-- class -> 0 - | | |-- label -> 0 - | | |-- payload -> 32 - | | |-- next -> TransType::IPv6_ICMP [58] - | | |-- limit -> 255 - | | |-- src -> fe80::a6:87f9:2793:16ee - | | |-- dst -> fe80::1ccd:7c77:bac7:46b7 - | | |-- hdr_len -> 40 - | | |-- raw_len -> 32 - | | |-- protocol -> TransType::IPv6_ICMP [58] - | | |-- raw - | | | |-- protocol -> TransType::IPv6_ICMP [58] - | | | |-- error -> NIL - | | | |-- packet - | | | |--> 87 00 0e aa 00 00 00 00 fe 80 00 00 00 00 00 00 - | | | 1c cd 7c 77 ba c7 46 b7 01 01 a4 5e 60 d9 6b 97 - | | |-- packet - | | |--> 87 00 0e aa 00 00 00 00 fe 80 00 00 00 00 00 00 - | | 1c cd 7c 77 ba c7 46 b7 01 01 a4 5e 60 d9 6b 97 - | |-- packet - | |--> 60 00 00 00 00 20 3a ff fe 80 00 00 00 00 00 00 - | 00 a6 87 f9 27 93 16 ee fe 80 00 00 00 00 00 00 - | 1c cd 7c 77 ba c7 46 b7 87 00 0e aa 00 00 00 00 - | fe 80 00 00 00 00 00 00 1c cd 7c 77 ba c7 46 b7 - | 01 01 a4 5e 60 d9 6b 97 - |-- protocols -> Ethernet:IPv6:IPv6_ICMP - |-- packet - |--> f1 a7 11 5a 1e d2 08 00 4e 00 00 00 4e 00 00 00 - a4 5e 60 d9 6b 97 40 33 1a d1 85 1c 86 dd 60 00 - 00 00 00 18 3a ff fe 80 00 00 00 00 00 00 1c cd - 7c 77 ba c7 46 b7 fe 80 00 00 00 00 00 00 00 a6 - 87 f9 27 93 16 ee 88 00 3f 82 40 00 00 00 fe 80 - 00 00 00 00 00 00 - -Frame 2 - |-- frame_info - | |-- ts_sec -> 1511106545 - | |-- ts_usec -> 578078 - | |-- incl_len -> 78 - | |-- orig_len -> 78 - |-- time -> 2017-11-19T15:49:05.578078 - |-- number -> 2 - |-- time_epoch -> 1511106545.578078 - |-- len -> 78 - |-- cap_len -> 78 - |-- ethernet - | |-- dst -> a4:5e:60:d9:6b:97 - | |-- src -> 40:33:1a:d1:85:1c - | |-- type - | | |--> EtherType::Internet_Protocol_version_6 - | | [34525] - | |-- ipv6 - | | |-- version -> 6 - | | |-- class -> 0 - | | |-- label -> 0 - | | |-- payload -> 24 - | | |-- next -> TransType::IPv6_ICMP [58] - | | |-- limit -> 255 - | | |-- src -> fe80::1ccd:7c77:bac7:46b7 - | | |-- dst -> fe80::a6:87f9:2793:16ee - | | |-- hdr_len -> 40 - | | |-- raw_len -> 24 - | | |-- protocol -> TransType::IPv6_ICMP [58] - | | |-- raw - | | | |-- protocol -> TransType::IPv6_ICMP [58] - | | | |-- error -> NIL - | | | |-- packet - | | | |--> 88 00 3f 82 40 00 00 00 fe 80 00 00 00 00 00 00 - | | | 1c cd 7c 77 ba c7 46 b7 - | | |-- packet - | | |--> 88 00 3f 82 40 00 00 00 fe 80 00 00 00 00 00 00 - | | 1c cd 7c 77 ba c7 46 b7 - | |-- packet - | |--> 60 00 00 00 00 18 3a ff fe 80 00 00 00 00 00 00 - | 1c cd 7c 77 ba c7 46 b7 fe 80 00 00 00 00 00 00 - | 00 a6 87 f9 27 93 16 ee 88 00 3f 82 40 00 00 00 - | fe 80 00 00 00 00 00 00 1c cd 7c 77 ba c7 46 b7 - |-- protocols -> Ethernet:IPv6:IPv6_ICMP - |-- packet - |--> f5 a7 11 5a 4c de 0b 00 36 00 00 00 36 00 00 00 - a4 5e 60 d9 6b 97 b8 f8 83 a5 f9 47 08 00 45 00 - 00 28 c5 34 40 00 2b 06 7a 86 7b 81 d2 87 c0 a8 - 01 64 00 50 d7 c0 d5 9f b1 54 a6 7a a0 ff 50 11 - 7c b0 7c 8e 00 00 f5 a7 11 5a 8c de 0b 00 - -Frame 3 - |-- frame_info - | |-- ts_sec -> 1511106549 - | |-- ts_usec -> 777804 - | |-- incl_len -> 54 - | |-- orig_len -> 54 - |-- time -> 2017-11-19T15:49:09.777804 - |-- number -> 3 - |-- time_epoch -> 1511106549.777804 - |-- len -> 54 - |-- cap_len -> 54 - |-- ethernet - | |-- dst -> a4:5e:60:d9:6b:97 - | |-- src -> b8:f8:83:a5:f9:47 - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 40 - | | |-- id -> 50484 - | | |-- flags - | | | |-- df -> True - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 43.0 - | | |-- protocol -> TransType::TCP [6] - | | |-- checksum -> 7a 86 - | | |-- src -> 123.129.210.135 - | | |-- dst -> 192.168.1.100 - | | |-- tcp - | | | |-- srcport - | | | | |-- enum - | | | | | |--> AppType::www_http [www-http [80 - - | | | | | tcp|udp]] - | | | | |-- svc -> www-http - | | | | |-- port -> 80 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- dstport - | | | | |-- enum - | | | | | |--> AppType::PORT_55232_tcp [unknown [55232 - | | | | | - tcp]] - | | | | |-- svc -> unknown - | | | | |-- port -> 55232 - | | | | |-- proto -> TransportProtocol::tcp [1] - | | | |-- seq -> 3584012628 - | | | |-- ack -> 2793054463 - | | | |-- hdr_len -> 20 - | | | |-- flags - | | | | |-- cwr -> False - | | | | |-- ece -> False - | | | | |-- urg -> False - | | | | |-- ack -> True - | | | | |-- psh -> False - | | | | |-- rst -> False - | | | | |-- syn -> False - | | | | |-- fin -> True - | | | |-- window_size -> 31920 - | | | |-- checksum -> 7c 8e - | | | |-- urgent_pointer -> 0 - | | | |-- connection -> Flags::ACK|FIN [34816] - | | | |-- nopayload - | | | | |-- packet -> NIL - | | | |-- packet -> NIL - | | |-- packet - | | |--> 00 50 d7 c0 d5 9f b1 54 a6 7a a0 ff 50 11 7c b0 - | | 7c 8e 00 00 - | |-- packet - | |--> 45 00 00 28 c5 34 40 00 2b 06 7a 86 7b 81 d2 87 - | c0 a8 01 64 00 50 d7 c0 d5 9f b1 54 a6 7a a0 ff - | 50 11 7c b0 7c 8e 00 00 - |-- protocols -> Ethernet:IPv4:TCP - |-- packet - |--> f5 a7 11 5a 8c de 0b 00 36 00 00 00 36 00 00 00 - b8 f8 83 a5 f9 47 a4 5e 60 d9 6b 97 08 00 45 00 - 00 28 00 00 40 00 40 06 2a bb c0 a8 01 64 7b 81 - d2 87 d7 c0 00 50 - -Frame 4 - |-- frame_info - | |-- ts_sec -> 1511106549 - | |-- ts_usec -> 777868 - | |-- incl_len -> 54 - | |-- orig_len -> 54 - |-- time -> 2017-11-19T15:49:09.777868 - |-- number -> 4 - |-- time_epoch -> 1511106549.777868 - |-- len -> 54 - |-- cap_len -> 54 - |-- ethernet - | |-- dst -> b8:f8:83:a5:f9:47 - | |-- src -> a4:5e:60:d9:6b:97 - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 40 - | | |-- id -> 0 - | | |-- flags - | | | |-- df -> True - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 64.0 - | | |-- protocol -> TransType::TCP [6] - | | |-- checksum -> 2a bb - | | |-- src -> 192.168.1.100 - | | |-- dst -> 123.129.210.135 - | | |-- tcp - | | | |-- srcport - | | | | |-- enum - | | | | | |--> AppType::PORT_55232_tcp [unknown [55232 - | | | | | - tcp]] - | | | | |-- svc -> unknown - | | | | |-- port -> 55232 - | | | | |-- proto -> TransportProtocol::tcp [1] - | | | |-- dstport - | | | | |-- enum - | | | | | |--> AppType::www_http [www-http [80 - - | | | | | tcp|udp]] - | | | | |-- svc -> www-http - | | | | |-- port -> 80 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- seq -> 2793054463 - | | | |-- ack -> 3584012629 - | | | |-- hdr_len -> 20 - | | | |-- flags - | | | | |-- cwr -> False - | | | | |-- ece -> False - | | | | |-- urg -> False - | | | | |-- ack -> True - | | | | |-- psh -> False - | | | | |-- rst -> False - | | | | |-- syn -> False - | | | | |-- fin -> False - | | | |-- window_size -> 65535 - | | | |-- checksum -> f9 3e - | | | |-- urgent_pointer -> 0 - | | | |-- connection -> Flags::ACK [2048] - | | | |-- nopayload - | | | | |-- packet -> NIL - | | | |-- packet -> NIL - | | |-- packet - | | |--> d7 c0 00 50 a6 7a a0 ff d5 9f b1 55 50 10 ff ff - | | f9 3e 00 00 - | |-- packet - | |--> 45 00 00 28 00 00 40 00 40 06 2a bb c0 a8 01 64 - | 7b 81 d2 87 d7 c0 00 50 a6 7a a0 ff d5 9f b1 55 - | 50 10 ff ff f9 3e 00 00 - |-- protocols -> Ethernet:IPv4:TCP - |-- packet - |--> f5 a7 11 5a 38 f1 0d 00 36 00 00 00 36 00 00 00 - b8 f8 83 a5 f9 47 a4 5e 60 d9 6b 97 08 00 45 00 - 00 28 00 00 40 00 40 06 2a bb c0 a8 01 64 7b 81 - d2 87 d7 b0 00 50 - -Frame 5 - |-- frame_info - | |-- ts_sec -> 1511106549 - | |-- ts_usec -> 913720 - | |-- incl_len -> 54 - | |-- orig_len -> 54 - |-- time -> 2017-11-19T15:49:09.913720 - |-- number -> 5 - |-- time_epoch -> 1511106549.91372 - |-- len -> 54 - |-- cap_len -> 54 - |-- ethernet - | |-- dst -> b8:f8:83:a5:f9:47 - | |-- src -> a4:5e:60:d9:6b:97 - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 40 - | | |-- id -> 0 - | | |-- flags - | | | |-- df -> True - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 64.0 - | | |-- protocol -> TransType::TCP [6] - | | |-- checksum -> 2a bb - | | |-- src -> 192.168.1.100 - | | |-- dst -> 123.129.210.135 - | | |-- tcp - | | | |-- srcport - | | | | |-- enum - | | | | | |--> AppType::PORT_55216_tcp [unknown [55216 - | | | | | - tcp]] - | | | | |-- svc -> unknown - | | | | |-- port -> 55216 - | | | | |-- proto -> TransportProtocol::tcp [1] - | | | |-- dstport - | | | | |-- enum - | | | | | |--> AppType::www_http [www-http [80 - - | | | | | tcp|udp]] - | | | | |-- svc -> www-http - | | | | |-- port -> 80 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- seq -> 768904481 - | | | |-- ack -> 1835365486 - | | | |-- hdr_len -> 20 - | | | |-- flags - | | | | |-- cwr -> False - | | | | |-- ece -> False - | | | | |-- urg -> False - | | | | |-- ack -> True - | | | | |-- psh -> False - | | | | |-- rst -> False - | | | | |-- syn -> False - | | | | |-- fin -> True - | | | |-- window_size -> 65535 - | | | |-- checksum -> 2a f4 - | | | |-- urgent_pointer -> 0 - | | | |-- connection -> Flags::ACK|FIN [34816] - | | | |-- nopayload - | | | | |-- packet -> NIL - | | | |-- packet -> NIL - | | |-- packet - | | |--> d7 b0 00 50 2d d4 8d 21 6d 65 74 6e 50 11 ff ff - | | 2a f4 00 00 - | |-- packet - | |--> 45 00 00 28 00 00 40 00 40 06 2a bb c0 a8 01 64 - | 7b 81 d2 87 d7 b0 00 50 2d d4 8d 21 6d 65 74 6e - | 50 11 ff ff 2a f4 00 00 - |-- protocols -> Ethernet:IPv4:TCP - |-- packet - |--> f7 a7 11 5a 13 05 01 00 9f 00 00 00 9f 00 00 00 - ff ff ff ff ff ff b8 f8 83 a5 f9 47 08 00 45 00 - 00 91 00 00 40 00 40 11 78 b3 c0 a8 01 01 ff ff - ff ff 92 44 13 89 - -Frame 6 - |-- frame_info - | |-- ts_sec -> 1511106551 - | |-- ts_usec -> 66835 - | |-- incl_len -> 159 - | |-- orig_len -> 159 - |-- time -> 2017-11-19T15:49:11.066835 - |-- number -> 6 - |-- time_epoch -> 1511106551.066835 - |-- len -> 159 - |-- cap_len -> 159 - |-- ethernet - | |-- dst -> ff:ff:ff:ff:ff:ff - | |-- src -> b8:f8:83:a5:f9:47 - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 145 - | | |-- id -> 0 - | | |-- flags - | | | |-- df -> True - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 64.0 - | | |-- protocol -> TransType::UDP [17] - | | |-- checksum -> 78 b3 - | | |-- src -> 192.168.1.1 - | | |-- dst -> 255.255.255.255 - | | |-- udp - | | | |-- srcport - | | | | |-- enum - | | | | | |--> AppType::unassigned_37444 [unassigned - | | | | | [37444 - undefined]] - | | | | |-- svc -> unassigned - | | | | |-- port -> 37444 - | | | | |-- proto -> TransportProtocol::undefined [0] - | | | |-- dstport - | | | | |-- enum - | | | | | |--> AppType::commplex_link [commplex-link - | | | | | [5001 - tcp|udp]] - | | | | |-- svc -> commplex-link - | | | | |-- port -> 5001 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- len -> 125 - | | | |-- checksum -> 63 b1 - | | | |-- raw - | | | | |-- protocol -> NIL - | | | | |-- error -> NIL - | | | | |-- packet - | | | | |--> 01 01 0e 00 e1 2b 83 c7 f9 8b 00 67 00 00 00 06 - | | | | 00 0a 54 4c 2d 57 44 52 36 33 30 30 00 0b 00 03 - | | | | 36 2e 30 00 07 00 01 01 00 05 00 11 42 38 2d 46 - | | | | 38 2d 38 33 2d 41 35 2d 46 39 2d 34 37 00 08 00 - | | | | 0b 31 39 32 2e 31 36 38 2e 31 2e 31 00 09 00 0a - | | | | 74 70 6c 6f 67 69 6e 2e 63 6e 00 0a 00 0e 54 4c - | | | | 2d 57 44 52 36 33 30 30 20 36 2e 30 00 0c 00 05 - | | | | 31 2e 37 2e 34 - | | | |-- packet - | | | |--> 01 01 0e 00 e1 2b 83 c7 f9 8b 00 67 00 00 00 06 - | | | 00 0a 54 4c 2d 57 44 52 36 33 30 30 00 0b 00 03 - | | | 36 2e 30 00 07 00 01 01 00 05 00 11 42 38 2d 46 - | | | 38 2d 38 33 2d 41 35 2d 46 39 2d 34 37 00 08 00 - | | | 0b 31 39 32 2e 31 36 38 2e 31 2e 31 00 09 00 0a - | | | 74 70 6c 6f 67 69 6e 2e 63 6e 00 0a 00 0e 54 4c - | | | 2d 57 44 52 36 33 30 30 20 36 2e 30 00 0c 00 05 - | | | 31 2e 37 2e 34 - | | |-- packet - | | |--> 92 44 13 89 00 7d 63 b1 01 01 0e 00 e1 2b 83 c7 - | | f9 8b 00 67 00 00 00 06 00 0a 54 4c 2d 57 44 52 - | | 36 33 30 30 00 0b 00 03 36 2e 30 00 07 00 01 01 - | | 00 05 00 11 42 38 2d 46 38 2d 38 33 2d 41 35 2d - | | 46 39 2d 34 37 00 08 00 0b 31 39 32 2e 31 36 38 - | | 2e 31 2e 31 00 09 00 0a 74 70 6c 6f 67 69 6e 2e - | | 63 6e 00 0a 00 0e 54 4c 2d 57 44 52 36 33 30 30 - | | 20 36 2e 30 00 0c 00 05 31 2e 37 2e 34 - | |-- packet - | |--> 45 00 00 91 00 00 40 00 40 11 78 b3 c0 a8 01 01 - | ff ff ff ff 92 44 13 89 00 7d 63 b1 01 01 0e 00 - | e1 2b 83 c7 f9 8b 00 67 00 00 00 06 00 0a 54 4c - | 2d 57 44 52 36 33 30 30 00 0b 00 03 36 2e 30 00 - | 07 00 01 01 00 05 00 11 42 38 2d 46 38 2d 38 33 - | 2d 41 35 2d 46 39 2d 34 37 00 08 00 0b 31 39 32 - | 2e 31 36 38 2e 31 2e 31 00 09 00 0a 74 70 6c 6f - | 67 69 6e 2e 63 6e 00 0a 00 0e 54 4c 2d 57 44 52 - | 36 33 30 30 20 36 2e 30 00 0c 00 05 31 2e 37 2e - | 34 - |-- protocols -> Ethernet:IPv4:UDP:Raw - |-- packet -> NIL diff --git a/examples/captures/pcapng.txt b/examples/captures/pcapng.txt deleted file mode 100644 index 9c3c284174..0000000000 --- a/examples/captures/pcapng.txt +++ /dev/null @@ -1,581 +0,0 @@ -Section Header 1 - |-- type - | |--> BlockType::Section_Header_Block - | [168627466] - |-- length -> 28 - |-- byteorder -> little - |-- version - | |-- type -> VersionInfo - | |-- value - | |--> 1 - | |--> 0 - |-- section_length -> -1 - |-- options -> NIL - |-- packet -> NIL - -Interface Description 1 - |-- type - | |--> BlockType::Interface_Description_Block - | [1] - |-- length -> 32 - |-- linktype -> LinkType::ETHERNET [1] - |-- snaplen -> 65535 - |-- options - | |-- OptionType::if_tsresol [if_tsresol [9]] - | | |--> -- - | | |-- type - | | | |-- enum -> OptionType::if_tsresol [if_tsresol [9]] - | | | |-- opt_name -> if_tsresol - | | | |-- opt_value -> 9 - | | |-- length -> 1 - | | |-- resolution -> 1000000 - | |-- OptionType::opt_endofopt [opt_endofopt [0]] - | |--> -- - | |-- type - | | |-- enum - | | | |--> OptionType::opt_endofopt [opt_endofopt - | | | [0]] - | | |-- opt_name -> opt_endofopt - | | |-- opt_value -> 0 - | |-- length -> 0 - |-- packet -> NIL - -Frame 1 - |-- type -> BlockType::Enhanced_Packet_Block [6] - |-- length -> 348 - |-- section_number -> 1 - |-- number -> 1 - |-- interface_id -> 0 - |-- timestamp -> 2004-12-05T19:16:24.317453+00:00 - |-- timestamp_epoch -> 1102274184.317453 - |-- captured_len -> 314 - |-- original_len -> 314 - |-- options -> NIL - |-- ethernet - | |-- dst -> ff:ff:ff:ff:ff:ff - | |-- src -> 00:0b:82:01:fc:42 - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 300 - | | |-- id -> 43062 - | | |-- flags - | | | |-- df -> False - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 250.0 - | | |-- protocol -> TransType::UDP [17] - | | |-- checksum -> 17 8b - | | |-- src -> 0.0.0.0 - | | |-- dst -> 255.255.255.255 - | | |-- udp - | | | |-- srcport - | | | | |-- enum -> AppType::bootpc [bootpc [68 - tcp|udp]] - | | | | |-- svc -> bootpc - | | | | |-- port -> 68 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- dstport - | | | | |-- enum -> AppType::bootps [bootps [67 - tcp|udp]] - | | | | |-- svc -> bootps - | | | | |-- port -> 67 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- len -> 280 - | | | |-- checksum -> 59 1f - | | | |-- raw - | | | | |-- protocol -> NIL - | | | | |-- error -> NIL - | | | | |-- packet - | | | | |--> 01 01 06 00 00 00 3d 1d 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 82 01 - | | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | | 35 01 01 3d 07 01 00 0b 82 01 fc 42 32 04 00 00 - | | | | 00 00 37 04 01 03 06 2a ff 00 00 00 00 00 00 00 - | | | |-- packet - | | | |--> 01 01 06 00 00 00 3d 1d 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 82 01 - | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | 35 01 01 3d 07 01 00 0b 82 01 fc 42 32 04 00 00 - | | | 00 00 37 04 01 03 06 2a ff 00 00 00 00 00 00 00 - | | |-- packet - | | |--> 00 44 00 43 01 18 59 1f 01 01 06 00 00 00 3d 1d - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 0b 82 01 fc 42 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 63 82 53 63 35 01 01 3d 07 01 00 0b - | | 82 01 fc 42 32 04 00 00 00 00 37 04 01 03 06 2a - | | ff 00 00 00 00 00 00 00 - | |-- packet - | |--> 45 00 01 2c a8 36 00 00 fa 11 17 8b 00 00 00 00 - | ff ff ff ff 00 44 00 43 01 18 59 1f 01 01 06 00 - | 00 00 3d 1d 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 0b 82 01 fc 42 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 63 82 53 63 35 01 01 3d - | 07 01 00 0b 82 01 fc 42 32 04 00 00 00 00 37 04 - | 01 03 06 2a ff 00 00 00 00 00 00 00 - |-- protocols -> Ethernet:IPv4:UDP:Raw - |-- packet -> NIL - -Frame 2 - |-- type -> BlockType::Enhanced_Packet_Block [6] - |-- length -> 376 - |-- section_number -> 1 - |-- number -> 2 - |-- interface_id -> 0 - |-- timestamp -> 2004-12-05T19:16:24.317748+00:00 - |-- timestamp_epoch -> 1102274184.317748 - |-- captured_len -> 342 - |-- original_len -> 342 - |-- options -> NIL - |-- ethernet - | |-- dst -> 00:0b:82:01:fc:42 - | |-- src -> 00:08:74:ad:f1:9b - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 328 - | | |-- id -> 1093 - | | |-- flags - | | | |-- df -> False - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 128.0 - | | |-- protocol -> TransType::UDP [17] - | | |-- checksum -> 00 00 - | | |-- src -> 192.168.0.1 - | | |-- dst -> 192.168.0.10 - | | |-- udp - | | | |-- srcport - | | | | |-- enum -> AppType::bootps [bootps [67 - tcp|udp]] - | | | | |-- svc -> bootps - | | | | |-- port -> 67 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- dstport - | | | | |-- enum -> AppType::bootpc [bootpc [68 - tcp|udp]] - | | | | |-- svc -> bootpc - | | | | |-- port -> 68 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- len -> 308 - | | | |-- checksum -> 22 33 - | | | |-- raw - | | | | |-- protocol -> NIL - | | | | |-- error -> NIL - | | | | |-- packet - | | | | |--> 02 01 06 00 00 00 3d 1d 00 00 00 00 00 00 00 00 - | | | | c0 a8 00 0a c0 a8 00 01 00 00 00 00 00 0b 82 01 - | | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | | 35 01 02 01 04 ff ff ff 00 3a 04 00 00 07 08 3b - | | | | 04 00 00 0c 4e 33 04 00 00 0e 10 36 04 c0 a8 00 - | | | | 01 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 - | | | |-- packet - | | | |--> 02 01 06 00 00 00 3d 1d 00 00 00 00 00 00 00 00 - | | | c0 a8 00 0a c0 a8 00 01 00 00 00 00 00 0b 82 01 - | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | 35 01 02 01 04 ff ff ff 00 3a 04 00 00 07 08 3b - | | | 04 00 00 0c 4e 33 04 00 00 0e 10 36 04 c0 a8 00 - | | | 01 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 - | | |-- packet - | | |--> 00 43 00 44 01 34 22 33 02 01 06 00 00 00 3d 1d - | | 00 00 00 00 00 00 00 00 c0 a8 00 0a c0 a8 00 01 - | | 00 00 00 00 00 0b 82 01 fc 42 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 63 82 53 63 35 01 02 01 04 ff ff ff - | | 00 3a 04 00 00 07 08 3b 04 00 00 0c 4e 33 04 00 - | | 00 0e 10 36 04 c0 a8 00 01 ff 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 - | |-- packet - | |--> 45 00 01 48 04 45 00 00 80 11 00 00 c0 a8 00 01 - | c0 a8 00 0a 00 43 00 44 01 34 22 33 02 01 06 00 - | 00 00 3d 1d 00 00 00 00 00 00 00 00 c0 a8 00 0a - | c0 a8 00 01 00 00 00 00 00 0b 82 01 fc 42 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 63 82 53 63 35 01 02 01 - | 04 ff ff ff 00 3a 04 00 00 07 08 3b 04 00 00 0c - | 4e 33 04 00 00 0e 10 36 04 c0 a8 00 01 ff 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 - |-- protocols -> Ethernet:IPv4:UDP:Raw - |-- packet -> NIL - -Frame 3 - |-- type -> BlockType::Enhanced_Packet_Block [6] - |-- length -> 348 - |-- section_number -> 1 - |-- number -> 3 - |-- interface_id -> 0 - |-- timestamp -> 2004-12-05T19:16:24.387484+00:00 - |-- timestamp_epoch -> 1102274184.387484 - |-- captured_len -> 314 - |-- original_len -> 314 - |-- options -> NIL - |-- ethernet - | |-- dst -> ff:ff:ff:ff:ff:ff - | |-- src -> 00:0b:82:01:fc:42 - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 300 - | | |-- id -> 43063 - | | |-- flags - | | | |-- df -> False - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 250.0 - | | |-- protocol -> TransType::UDP [17] - | | |-- checksum -> 17 8a - | | |-- src -> 0.0.0.0 - | | |-- dst -> 255.255.255.255 - | | |-- udp - | | | |-- srcport - | | | | |-- enum -> AppType::bootpc [bootpc [68 - tcp|udp]] - | | | | |-- svc -> bootpc - | | | | |-- port -> 68 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- dstport - | | | | |-- enum -> AppType::bootps [bootps [67 - tcp|udp]] - | | | | |-- svc -> bootps - | | | | |-- port -> 67 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- len -> 280 - | | | |-- checksum -> 9f bd - | | | |-- raw - | | | | |-- protocol -> NIL - | | | | |-- error -> NIL - | | | | |-- packet - | | | | |--> 01 01 06 00 00 00 3d 1e 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 82 01 - | | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | | 35 01 03 3d 07 01 00 0b 82 01 fc 42 32 04 c0 a8 - | | | | 00 0a 36 04 c0 a8 00 01 37 04 01 03 06 2a ff 00 - | | | |-- packet - | | | |--> 01 01 06 00 00 00 3d 1e 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 82 01 - | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | 35 01 03 3d 07 01 00 0b 82 01 fc 42 32 04 c0 a8 - | | | 00 0a 36 04 c0 a8 00 01 37 04 01 03 06 2a ff 00 - | | |-- packet - | | |--> 00 44 00 43 01 18 9f bd 01 01 06 00 00 00 3d 1e - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 0b 82 01 fc 42 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 63 82 53 63 35 01 03 3d 07 01 00 0b - | | 82 01 fc 42 32 04 c0 a8 00 0a 36 04 c0 a8 00 01 - | | 37 04 01 03 06 2a ff 00 - | |-- packet - | |--> 45 00 01 2c a8 37 00 00 fa 11 17 8a 00 00 00 00 - | ff ff ff ff 00 44 00 43 01 18 9f bd 01 01 06 00 - | 00 00 3d 1e 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 0b 82 01 fc 42 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 63 82 53 63 35 01 03 3d - | 07 01 00 0b 82 01 fc 42 32 04 c0 a8 00 0a 36 04 - | c0 a8 00 01 37 04 01 03 06 2a ff 00 - |-- protocols -> Ethernet:IPv4:UDP:Raw - |-- packet -> NIL - -Frame 4 - |-- type -> BlockType::Enhanced_Packet_Block [6] - |-- length -> 376 - |-- section_number -> 1 - |-- number -> 4 - |-- interface_id -> 0 - |-- timestamp -> 2004-12-05T19:16:24.387798+00:00 - |-- timestamp_epoch -> 1102274184.387798 - |-- captured_len -> 342 - |-- original_len -> 342 - |-- options -> NIL - |-- ethernet - | |-- dst -> 00:0b:82:01:fc:42 - | |-- src -> 00:08:74:ad:f1:9b - | |-- type - | | |--> EtherType::Internet_Protocol_version_4 - | | [2048] - | |-- ipv4 - | | |-- version -> 4 - | | |-- hdr_len -> 20 - | | |-- tos - | | | |-- pre -> ToSPrecedence::Routine [0] - | | | |-- del -> ToSDelay::NORMAL [0] - | | | |-- thr -> ToSThroughput::NORMAL [0] - | | | |-- rel -> ToSReliability::NORMAL [0] - | | | |-- ecn -> ToSECN::Not_ECT [0] - | | |-- len -> 328 - | | |-- id -> 1094 - | | |-- flags - | | | |-- df -> False - | | | |-- mf -> False - | | |-- offset -> 0 - | | |-- ttl -> 128.0 - | | |-- protocol -> TransType::UDP [17] - | | |-- checksum -> 00 00 - | | |-- src -> 192.168.0.1 - | | |-- dst -> 192.168.0.10 - | | |-- udp - | | | |-- srcport - | | | | |-- enum -> AppType::bootps [bootps [67 - tcp|udp]] - | | | | |-- svc -> bootps - | | | | |-- port -> 67 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- dstport - | | | | |-- enum -> AppType::bootpc [bootpc [68 - tcp|udp]] - | | | | |-- svc -> bootpc - | | | | |-- port -> 68 - | | | | |-- proto -> TransportProtocol::tcp|udp [3] - | | | |-- len -> 308 - | | | |-- checksum -> df db - | | | |-- raw - | | | | |-- protocol -> NIL - | | | | |-- error -> NIL - | | | | |-- packet - | | | | |--> 02 01 06 00 00 00 3d 1e 00 00 00 00 00 00 00 00 - | | | | c0 a8 00 0a 00 00 00 00 00 00 00 00 00 0b 82 01 - | | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | | 35 01 05 3a 04 00 00 07 08 3b 04 00 00 0c 4e 33 - | | | | 04 00 00 0e 10 36 04 c0 a8 00 01 01 04 ff ff ff - | | | | 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | | 00 00 00 00 00 00 00 00 00 00 00 00 - | | | |-- packet - | | | |--> 02 01 06 00 00 00 3d 1e 00 00 00 00 00 00 00 00 - | | | c0 a8 00 0a 00 00 00 00 00 00 00 00 00 0b 82 01 - | | | fc 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 - | | | 35 01 05 3a 04 00 00 07 08 3b 04 00 00 0c 4e 33 - | | | 04 00 00 0e 10 36 04 c0 a8 00 01 01 04 ff ff ff - | | | 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | | 00 00 00 00 00 00 00 00 00 00 00 00 - | | |-- packet - | | |--> 00 43 00 44 01 34 df db 02 01 06 00 00 00 3d 1e - | | 00 00 00 00 00 00 00 00 c0 a8 00 0a 00 00 00 00 - | | 00 00 00 00 00 0b 82 01 fc 42 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 63 82 53 63 35 01 05 3a 04 00 00 07 - | | 08 3b 04 00 00 0c 4e 33 04 00 00 0e 10 36 04 c0 - | | a8 00 01 01 04 ff ff ff 00 ff 00 00 00 00 00 00 - | | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | | 00 00 00 00 - | |-- packet - | |--> 45 00 01 48 04 46 00 00 80 11 00 00 c0 a8 00 01 - | c0 a8 00 0a 00 43 00 44 01 34 df db 02 01 06 00 - | 00 00 3d 1e 00 00 00 00 00 00 00 00 c0 a8 00 0a - | 00 00 00 00 00 00 00 00 00 0b 82 01 fc 42 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 63 82 53 63 35 01 05 3a - | 04 00 00 07 08 3b 04 00 00 0c 4e 33 04 00 00 0e - | 10 36 04 c0 a8 00 01 01 04 ff ff ff 00 ff 00 00 - | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - | 00 00 00 00 00 00 00 00 - |-- protocols -> Ethernet:IPv4:UDP:Raw - |-- packet -> NIL diff --git a/examples/legacy_smoke/Makefile b/examples/legacy_smoke/Makefile index e7b6bb4bd3..6b5ca2407b 100644 --- a/examples/legacy_smoke/Makefile +++ b/examples/legacy_smoke/Makefile @@ -4,17 +4,18 @@ #: `make fixtures PYTHON=../../.venv/bin/python`. PYTHON ?= python -#: Timezone the committed fixtures are generated in. Pinned because pcapkit renders +#: Timezone the reference reports are generated in. Pinned because pcapkit renders #: frame timestamps in the host's local zone, so an unpinned run rewrites every #: timestamp line with wherever it happened to be run. UTC is also the only zone in #: which PCAP-NG's `timestamp_epoch` comes out as the true UNIX epoch -- see the #: README for the reason. FIXTURE_TZ ?= UTC -## Regenerate the four committed fixtures in ../captures/. +## Build the four reference reports in ../captures/. Git tracks none of them -- they +## are generated output, so a fresh clone has to run this before it has them (#685). ## out.json, out.plist, out.txt <- test_extractor.py, from ../captures/in.pcap ## pcapng.txt <- test_pcapng.py, from ../captures/dhcp.pcapng -## Both inputs are committed, so this needs no `make samples` first. +## Both inputs *are* committed, so this needs no `make samples` first. fixtures: TZ=$(FIXTURE_TZ) $(PYTHON) test_extractor.py TZ=$(FIXTURE_TZ) $(PYTHON) test_pcapng.py diff --git a/examples/legacy_smoke/README.rst b/examples/legacy_smoke/README.rst index ccb2dd70c2..d7d769ec43 100644 --- a/examples/legacy_smoke/README.rst +++ b/examples/legacy_smoke/README.rst @@ -112,12 +112,14 @@ Most of these run with nothing but ``pcapkit``. These do not: capture into a temporary file -- never into ``../captures/``, which holds generated captures the test suite pins. -Regenerating the committed fixtures ------------------------------------ +Regenerating the reference reports +---------------------------------- -Four files in ``../captures/`` are committed outputs rather than inputs, and they are -produced by two of the scripts here. To refresh them after a change to how -``pcapkit`` renders a capture: +Four files in ``../captures/`` are reports rather than inputs -- ``out.json``, +``out.plist``, ``out.txt`` and ``pcapng.txt`` -- and they are produced by two of the +scripts here. **Git does not track them**, so a fresh clone does not have them. Build +them the way you would any other generated capture, and again after a change to how +``pcapkit`` renders one: .. code-block:: shell @@ -130,15 +132,25 @@ That is the whole recipe. It runs, equivalently: TZ=UTC python test_extractor.py # ../captures/out.json, out.plist, out.txt <- in.pcap TZ=UTC python test_pcapng.py # ../captures/pcapng.txt <- dhcp.pcapng -Both inputs are committed, so this works on a fresh clone with no ``make samples`` +Both *inputs* are committed, so this works on a fresh clone with no ``make samples`` first. Use ``make fixtures PYTHON=../../.venv/bin/python`` to pick a specific interpreter. +These four were tracked once, and #685 is why they are not any more. Nothing reads a +report back -- no test asserts on one, and the docs only quote them as prose -- so a +parser change that alters how a frame renders leaves the committed copy quietly wrong, +with no failure anywhere to say so. ``pcapng.txt`` sat recording ``packet -> NIL`` for +four blocks that had started carrying their captured octets, and the staleness was +found by reading the file rather than by anything breaking. Generating them on demand +means the copy on your disk describes the tree you are standing in, which was the only +thing that made them worth looking at. + ``TZ=UTC`` **is not decoration.** ``pcapkit`` renders frame timestamps in the host's local zone, so an unpinned run rewrites every timestamp line in all four files with -wherever it happened to be run -- which is how these fixtures came to disagree with -each other, the PCAP three having been generated at UTC-05:00 and ``pcapng.txt`` at -UTC+08:00. Pinning UTC makes the output reproducible on any host. It also happens to -be the only zone in which PCAP-NG's ``timestamp_epoch`` is the true UNIX epoch: +wherever it happened to be run -- which is how these reports came to disagree with +each other while they were still tracked, the PCAP three having been generated at +UTC-05:00 and ``pcapng.txt`` at UTC+08:00. Pinning UTC makes the output reproducible on +any host, so two runs can be diffed against each other. It also happens to be the only +zone in which PCAP-NG's ``timestamp_epoch`` is the true UNIX epoch: ``PCAPNG._read_timestamp`` adds the zone's UTC offset to the value it returns, so a -fixture generated anywhere else bakes in that offset. +report generated anywhere else bakes in that offset. diff --git a/tests/project/test_capture_tracking.py b/tests/project/test_capture_tracking.py new file mode 100644 index 0000000000..140330c2ea --- /dev/null +++ b/tests/project/test_capture_tracking.py @@ -0,0 +1,173 @@ +# -*- coding: utf-8 -*- +"""What git is allowed to track under :file:`examples/captures/`. + +That directory holds two kinds of file, and only one of them belongs in the +index. The *inputs* -- :file:`in.pcap` and :file:`dhcp.pcapng` -- are captures +nothing in the repository can reconstruct, so they are committed. Everything else +is output: the captures :file:`examples/generators/make_samples.py` writes, and +the rendered reports :file:`examples/legacy_smoke/` produces out of those two +inputs -- :file:`out.json`, :file:`out.plist`, :file:`out.txt` and +:file:`pcapng.txt`, via ``make fixtures`` there. + +Those four reports were tracked once, and GitHub issue #685 is why they are not +any more. A tracked report has no reader: no test asserts on one, and the +documentation only quotes them as prose. So a parser change that alters how a +frame renders leaves the committed copy wrong with nothing anywhere to say so -- +:file:`pcapng.txt` sat recording ``packet -> NIL`` for four blocks that had +started carrying their captured octets, and it was found by somebody reading the +file rather than by anything failing. + +Untracking them fixed that instance. This module is what keeps it fixed, because +the mistake is one commit away in either direction and neither direction looks +interesting in a diff review: + +* ``git add -f examples/captures/out.txt`` on a freshly rebuilt report puts the + staleness straight back, :file:`.gitignore` notwithstanding -- and so would a + new ``!examples/captures/...`` exception line; +* an over-eager cleanup that dropped the two real inputs as well would break the + whole unit tier, which is entitled to read them on a fresh clone. + +The rule is stated by *suffix* rather than as a list of the two names, so adding +a genuine input capture needs no edit here while committing a rendered report +fails immediately. That is the same trade :mod:`tests._tiers` makes, and this +module reuses its answer rather than shelling out to git a second time. + +This module is unit-tier and reads no capture: it asks what git tracks, and it +parses test modules as text. Both work on a fresh clone. + +""" +from __future__ import annotations + +import pathlib +import unittest + +from tests import _tiers + +#: Reports rendered by :file:`examples/legacy_smoke/`, none of which git tracks. +#: Named explicitly, rather than derived as "everything without a capture +#: suffix", because these four are the ones that were tracked and the ones any +#: regression would most likely reinstate. +RENDERED_REPORTS = ('out.json', 'out.plist', 'out.txt', 'pcapng.txt') +#: The captures that must stay committed, because nothing regenerates them: +#: :file:`in.pcap` is read by roughly fifty modules and :file:`dhcp.pcapng` by +#: nine, and the unit tier reads both on a fresh clone. +INPUT_CAPTURES = ('dhcp.pcapng', 'in.pcap') + + +class TrackedCaptureTests(unittest.TestCase): + """Which files under :file:`examples/captures/` git has in its index.""" + + def setUp(self) -> None: + reason = _tiers.guard_unavailable_reason() + if reason is not None: + self.skipTest(f'git cannot answer here: {reason}') + + tracked = _tiers.committed_captures() + assert tracked is not None + self.tracked = tracked + + def test_every_tracked_file_is_an_input_capture(self) -> None: + """No rendered report, and nothing else generated, is in the index. + + The assertion is on the suffix rather than on the exact set of names, so + a new input fixture can be committed without touching this file. A + rendered report cannot: none of :data:`RENDERED_REPORTS` ends in a + capture suffix, which is precisely what makes them catchable here. + + """ + offenders = sorted( + name for name in self.tracked + if not name.endswith(_tiers.CAPTURE_SUFFIXES) + ) + self.assertEqual( + offenders, [], + f'git tracks {offenders} under examples/captures/, which are not input ' + f'captures. Generated output does not belong in the index -- it goes stale ' + f'silently, which is GitHub issue #685. Rebuild these locally instead: ' + f'`cd examples/legacy_smoke && make fixtures` for the rendered reports, ' + f'`{_tiers.REGENERATE_SAMPLES_CMD}` for the captures.' + ) + + def test_no_rendered_report_is_tracked(self) -> None: + """:data:`RENDERED_REPORTS` by name, in case the suffix rule is relaxed. + + Redundant with :meth:`test_every_tracked_file_is_an_input_capture` today + and deliberately so: that test's reach depends on + :data:`~tests._tiers.CAPTURE_SUFFIXES`, and a future ``.txt`` capture + format would widen the suffix list and quietly let these four back in. + + """ + for name in RENDERED_REPORTS: + with self.subTest(report=name): + self.assertNotIn( + name, self.tracked, + f'examples/captures/{name} is a rendered report and must not be ' + f'tracked -- see GitHub issue #685' + ) + + def test_both_input_captures_are_tracked(self) -> None: + """The opposite mistake, which would break the unit tier. + + Without this, :meth:`test_every_tracked_file_is_an_input_capture` would + pass on a checkout that tracks nothing under that directory at all. + + """ + for name in INPUT_CAPTURES: + with self.subTest(capture=name): + self.assertIn( + name, self.tracked, + f'examples/captures/{name} is an input nothing regenerates, and the ' + f'unit tier reads it on a fresh clone, so it has to stay committed' + ) + + def test_tracked_inputs_are_present_on_disk(self) -> None: + """A tracked name is a file that is actually there. + + Cheap, and it distinguishes "git tracks it" from "a checkout has it", + which is the distinction the whole tier rule turns on. + + """ + for name in sorted(self.tracked): + with self.subTest(capture=name): + self.assertTrue( + (_tiers.SAMPLE_ROOT / name).is_file(), + f'git tracks examples/captures/{name} but it is not on disk' + ) + + +class ReportReadTests(unittest.TestCase): + """That no test module reads a rendered report as though it were a capture. + + This is the regression untracking invites, and it is *not* covered by the + tier guard's own audit. That audit only flags a **unit-tier** module reading + a capture git does not track. These four are worse than untracked: nothing + rebuilds them as part of fixture generation either, because + :file:`examples/generators/make_samples.py` does not produce them -- only + ``make fixtures`` under :file:`examples/legacy_smoke/` does, and neither CI + nor ``make test-all`` runs that. So a read of one fails in *every* tier, on + every machine that has not run that target by hand. + + """ + + def test_sample_path_is_never_called_with_a_report(self) -> None: + """Across the whole suite, both tiers, however the call is spelled.""" + reports = frozenset(RENDERED_REPORTS) + offenders = [] + + for module in sorted(_tiers.TESTS_ROOT.rglob('test_*.py')): + for call in _tiers.sample_path_calls(str(module)): + if call.name in reports: + location = module.relative_to(_tiers.ROOT).as_posix() + offenders.append(f'{location}:{call.lineno} reads {call.name!r}') + + self.assertEqual( + offenders, [], + f'{offenders} read a rendered report through sample_path(). Those reports ' + f'are not tracked and `{_tiers.REGENERATE_SAMPLES_CMD}` does not build them, ' + f'so the read fails wherever `make fixtures` has not been run by hand. Assert ' + f'on a report the test renders into its own temporary directory instead.' + ) + + +if __name__ == '__main__': + unittest.main()