packetfu 1.1.11 → 1.1.12.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rspec +2 -0
  4. data/.travis.yml +2 -3
  5. data/README.md +127 -0
  6. data/examples/100kpackets.rb +11 -10
  7. data/examples/ackscan.rb +4 -1
  8. data/examples/arp.rb +4 -5
  9. data/examples/arphood.rb +5 -4
  10. data/examples/dissect_thinger.rb +10 -7
  11. data/examples/ethernet.rb +8 -3
  12. data/examples/ids.rb +22 -4
  13. data/examples/idsv2.rb +25 -6
  14. data/examples/ifconfig.rb +6 -3
  15. data/examples/new-simple-stats.rb +5 -6
  16. data/examples/packetfu-shell.rb +11 -48
  17. data/examples/pcap2pcapng.rb +32 -0
  18. data/examples/simple-sniffer.rb +9 -4
  19. data/examples/simple-stats.rb +7 -8
  20. data/examples/slammer.rb +2 -2
  21. data/examples/uniqpcap.rb +17 -7
  22. data/lib/packetfu.rb +10 -175
  23. data/lib/packetfu/capture.rb +2 -2
  24. data/lib/packetfu/common.rb +142 -0
  25. data/lib/packetfu/config.rb +8 -8
  26. data/lib/packetfu/inject.rb +3 -3
  27. data/lib/packetfu/packet.rb +22 -18
  28. data/lib/packetfu/pcap.rb +2 -1
  29. data/lib/packetfu/pcapng.rb +37 -0
  30. data/lib/packetfu/pcapng/block.rb +25 -0
  31. data/lib/packetfu/pcapng/epb.rb +112 -0
  32. data/lib/packetfu/pcapng/file.rb +316 -0
  33. data/lib/packetfu/pcapng/idb.rb +125 -0
  34. data/lib/packetfu/pcapng/shb.rb +146 -0
  35. data/lib/packetfu/pcapng/spb.rb +83 -0
  36. data/lib/packetfu/pcapng/unknown_block.rb +60 -0
  37. data/lib/packetfu/protos.rb +3 -0
  38. data/lib/packetfu/protos/arp.rb +10 -10
  39. data/lib/packetfu/protos/icmpv6.rb +131 -0
  40. data/lib/packetfu/protos/icmpv6/header.rb +69 -0
  41. data/lib/packetfu/protos/icmpv6/mixin.rb +14 -0
  42. data/lib/packetfu/protos/ip.rb +4 -5
  43. data/lib/packetfu/protos/ipv6/header.rb +2 -0
  44. data/lib/packetfu/protos/udp.rb +24 -12
  45. data/lib/packetfu/structfu.rb +27 -0
  46. data/lib/packetfu/utils.rb +55 -9
  47. data/lib/packetfu/version.rb +1 -1
  48. data/packetfu.gemspec +13 -7
  49. data/spec/arp_spec.rb +11 -5
  50. data/spec/eth_spec.rb +20 -11
  51. data/spec/fake_packets.rb +28 -0
  52. data/spec/hsrp_spec.rb +15 -0
  53. data/spec/icmp_spec.rb +12 -5
  54. data/spec/icmpv6_spec.rb +98 -0
  55. data/spec/invalid_spec.rb +28 -0
  56. data/spec/ip_spec.rb +10 -5
  57. data/spec/ipv4_icmp.pcap +0 -0
  58. data/spec/ipv4_udp.pcap +0 -0
  59. data/spec/ipv6_icmp.pcap +0 -0
  60. data/spec/ipv6_spec.rb +4 -0
  61. data/spec/ipv6_udp.pcap +0 -0
  62. data/spec/lldp_spec.rb +36 -0
  63. data/spec/octets_spec.rb +43 -0
  64. data/spec/packet_spec.rb +24 -0
  65. data/spec/packetfu_spec.rb +6 -1
  66. data/spec/pcap_spec.rb +286 -0
  67. data/spec/pcapng/epb_spec.rb +81 -0
  68. data/spec/pcapng/file_spec.rb +295 -0
  69. data/spec/pcapng/file_spec_helper.rb +45 -0
  70. data/spec/pcapng/idb_spec.rb +53 -0
  71. data/spec/pcapng/shb_spec.rb +42 -0
  72. data/spec/pcapng/spb_spec.rb +43 -0
  73. data/spec/pcapng/unknown_block_spec.rb +36 -0
  74. data/spec/spec_helper.rb +3 -31
  75. data/spec/tcp_spec.rb +4 -1
  76. data/spec/udp_spec.rb +149 -1
  77. data/spec/utils_spec.rb +98 -15
  78. data/test/pcapng-test/output_be/advanced/test100.pcapng +0 -0
  79. data/test/pcapng-test/output_be/advanced/test100.txt +11 -0
  80. data/test/pcapng-test/output_be/advanced/test101.pcapng +0 -0
  81. data/test/pcapng-test/output_be/advanced/test101.txt +11 -0
  82. data/test/pcapng-test/output_be/advanced/test102.pcapng +0 -0
  83. data/test/pcapng-test/output_be/advanced/test102.txt +14 -0
  84. data/test/pcapng-test/output_be/basic/test001.pcapng +0 -0
  85. data/test/pcapng-test/output_be/basic/test001.txt +9 -0
  86. data/test/pcapng-test/output_be/basic/test002.pcapng +0 -0
  87. data/test/pcapng-test/output_be/basic/test002.txt +7 -0
  88. data/test/pcapng-test/output_be/basic/test003.pcapng +0 -0
  89. data/test/pcapng-test/output_be/basic/test003.txt +8 -0
  90. data/test/pcapng-test/output_be/basic/test004.pcapng +0 -0
  91. data/test/pcapng-test/output_be/basic/test004.txt +9 -0
  92. data/test/pcapng-test/output_be/basic/test005.pcapng +0 -0
  93. data/test/pcapng-test/output_be/basic/test005.txt +9 -0
  94. data/test/pcapng-test/output_be/basic/test006.pcapng +0 -0
  95. data/test/pcapng-test/output_be/basic/test006.txt +9 -0
  96. data/test/pcapng-test/output_be/basic/test007.pcapng +0 -0
  97. data/test/pcapng-test/output_be/basic/test007.txt +9 -0
  98. data/test/pcapng-test/output_be/basic/test008.pcapng +0 -0
  99. data/test/pcapng-test/output_be/basic/test008.txt +9 -0
  100. data/test/pcapng-test/output_be/basic/test009.pcapng +0 -0
  101. data/test/pcapng-test/output_be/basic/test009.txt +9 -0
  102. data/test/pcapng-test/output_be/basic/test010.pcapng +0 -0
  103. data/test/pcapng-test/output_be/basic/test010.txt +9 -0
  104. data/test/pcapng-test/output_be/basic/test011.pcapng +0 -0
  105. data/test/pcapng-test/output_be/basic/test011.txt +10 -0
  106. data/test/pcapng-test/output_be/basic/test012.pcapng +0 -0
  107. data/test/pcapng-test/output_be/basic/test012.txt +10 -0
  108. data/test/pcapng-test/output_be/basic/test013.pcapng +0 -0
  109. data/test/pcapng-test/output_be/basic/test013.txt +9 -0
  110. data/test/pcapng-test/output_be/basic/test014.pcapng +0 -0
  111. data/test/pcapng-test/output_be/basic/test014.txt +9 -0
  112. data/test/pcapng-test/output_be/basic/test015.pcapng +0 -0
  113. data/test/pcapng-test/output_be/basic/test015.txt +9 -0
  114. data/test/pcapng-test/output_be/basic/test016.pcapng +0 -0
  115. data/test/pcapng-test/output_be/basic/test016.txt +11 -0
  116. data/test/pcapng-test/output_be/basic/test017.pcapng +0 -0
  117. data/test/pcapng-test/output_be/basic/test017.txt +9 -0
  118. data/test/pcapng-test/output_be/basic/test018.pcapng +0 -0
  119. data/test/pcapng-test/output_be/basic/test018.txt +12 -0
  120. data/test/pcapng-test/output_be/difficult/test200.pcapng +0 -0
  121. data/test/pcapng-test/output_be/difficult/test200.txt +8 -0
  122. data/test/pcapng-test/output_be/difficult/test201.pcapng +0 -0
  123. data/test/pcapng-test/output_be/difficult/test201.txt +11 -0
  124. data/test/pcapng-test/output_be/difficult/test202.pcapng +0 -0
  125. data/test/pcapng-test/output_be/difficult/test202.txt +14 -0
  126. data/test/pcapng-test/output_le/advanced/test100.pcapng +0 -0
  127. data/test/pcapng-test/output_le/advanced/test100.txt +11 -0
  128. data/test/pcapng-test/output_le/advanced/test101.pcapng +0 -0
  129. data/test/pcapng-test/output_le/advanced/test101.txt +11 -0
  130. data/test/pcapng-test/output_le/advanced/test102.pcapng +0 -0
  131. data/test/pcapng-test/output_le/advanced/test102.txt +14 -0
  132. data/test/pcapng-test/output_le/basic/test001.pcapng +0 -0
  133. data/test/pcapng-test/output_le/basic/test001.txt +9 -0
  134. data/test/pcapng-test/output_le/basic/test002.pcapng +0 -0
  135. data/test/pcapng-test/output_le/basic/test002.txt +7 -0
  136. data/test/pcapng-test/output_le/basic/test003.pcapng +0 -0
  137. data/test/pcapng-test/output_le/basic/test003.txt +8 -0
  138. data/test/pcapng-test/output_le/basic/test004.pcapng +0 -0
  139. data/test/pcapng-test/output_le/basic/test004.txt +9 -0
  140. data/test/pcapng-test/output_le/basic/test005.pcapng +0 -0
  141. data/test/pcapng-test/output_le/basic/test005.txt +9 -0
  142. data/test/pcapng-test/output_le/basic/test006.pcapng +0 -0
  143. data/test/pcapng-test/output_le/basic/test006.txt +9 -0
  144. data/test/pcapng-test/output_le/basic/test007.pcapng +0 -0
  145. data/test/pcapng-test/output_le/basic/test007.txt +9 -0
  146. data/test/pcapng-test/output_le/basic/test008.pcapng +0 -0
  147. data/test/pcapng-test/output_le/basic/test008.txt +9 -0
  148. data/test/pcapng-test/output_le/basic/test009.pcapng +0 -0
  149. data/test/pcapng-test/output_le/basic/test009.txt +9 -0
  150. data/test/pcapng-test/output_le/basic/test010.pcapng +0 -0
  151. data/test/pcapng-test/output_le/basic/test010.txt +9 -0
  152. data/test/pcapng-test/output_le/basic/test011.pcapng +0 -0
  153. data/test/pcapng-test/output_le/basic/test011.txt +10 -0
  154. data/test/pcapng-test/output_le/basic/test012.pcapng +0 -0
  155. data/test/pcapng-test/output_le/basic/test012.txt +10 -0
  156. data/test/pcapng-test/output_le/basic/test013.pcapng +0 -0
  157. data/test/pcapng-test/output_le/basic/test013.txt +9 -0
  158. data/test/pcapng-test/output_le/basic/test014.pcapng +0 -0
  159. data/test/pcapng-test/output_le/basic/test014.txt +9 -0
  160. data/test/pcapng-test/output_le/basic/test015.pcapng +0 -0
  161. data/test/pcapng-test/output_le/basic/test015.txt +9 -0
  162. data/test/pcapng-test/output_le/basic/test016.pcapng +0 -0
  163. data/test/pcapng-test/output_le/basic/test016.txt +11 -0
  164. data/test/pcapng-test/output_le/basic/test017.pcapng +0 -0
  165. data/test/pcapng-test/output_le/basic/test017.txt +9 -0
  166. data/test/pcapng-test/output_le/basic/test018.pcapng +0 -0
  167. data/test/pcapng-test/output_le/basic/test018.txt +12 -0
  168. data/test/pcapng-test/output_le/difficult/test200.pcapng +0 -0
  169. data/test/pcapng-test/output_le/difficult/test200.txt +8 -0
  170. data/test/pcapng-test/output_le/difficult/test201.pcapng +0 -0
  171. data/test/pcapng-test/output_le/difficult/test201.txt +11 -0
  172. data/test/pcapng-test/output_le/difficult/test202.pcapng +0 -0
  173. data/test/pcapng-test/output_le/difficult/test202.txt +14 -0
  174. data/test/sample-ipv6.pcapng +0 -0
  175. data/test/sample-spb.pcapng +0 -0
  176. data/test/sample.pcapng +0 -0
  177. data/test/sample2.pcapng +0 -0
  178. metadata +190 -68
  179. checksums.yaml.gz.sig +0 -0
  180. data.tar.gz.sig +0 -2
  181. data/INSTALL.rdoc +0 -40
  182. data/README.rdoc +0 -64
  183. data/examples/examples.rb +0 -4
  184. data/setup.rb +0 -1586
  185. data/test/func_lldp.rb +0 -25
  186. data/test/ptest.rb +0 -16
  187. data/test/test_eth.rb +0 -93
  188. data/test/test_hsrp.rb +0 -20
  189. data/test/test_invalid.rb +0 -28
  190. data/test/test_octets.rb +0 -36
  191. data/test/test_pcap.rb +0 -211
  192. data/test/test_udp.rb +0 -100
  193. metadata.gz.sig +0 -2
@@ -1,6 +1,8 @@
1
1
  # -*- coding: binary -*-
2
-
3
2
  require 'spec_helper'
3
+ require 'packetfu/protos/eth'
4
+ require 'packetfu/protos/ip'
5
+ require 'packetfu/utils'
4
6
 
5
7
  include PacketFu
6
8
 
@@ -14,7 +16,7 @@ describe Utils do
14
16
 
15
17
  it "should work on Mac OSX Yosemite" do
16
18
  stub_const("RUBY_PLATFORM", "x86_64-darwin14")
17
- mac_osx_reply = "ifconfig en0\n" +
19
+ mac_osx_reply = "ifconfig en0\n" +
18
20
  "en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n" +
19
21
  "ether 78:31:c1:ce:39:bc\n" +
20
22
  "inet6 fe80::7a31:c1ff:fece:39bc%en0 prefixlen 64 scopeid 0x4\n" +
@@ -41,13 +43,13 @@ describe Utils do
41
43
 
42
44
  it "should work on Ubuntu 14.04 LTS" do
43
45
  stub_const("RUBY_PLATFORM", "x86_64-linux")
44
- ubuntu_reply = "eth0 Link encap:Ethernet HWaddr 00:0c:29:2a:e3:bd\n" +
45
- "inet addr:192.168.10.174 Bcast:192.168.10.255 Mask:255.255.255.0\n" +
46
- "inet6 addr: fe80::20c:29ff:fe2a:e3bd/64 Scope:Link\n" +
47
- "UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n" +
48
- "RX packets:65782 errors:0 dropped:0 overruns:0 frame:0\n" +
49
- "TX packets:31354 errors:0 dropped:0 overruns:0 carrier:0\n" +
50
- "collisions:0 txqueuelen:1000\n" +
46
+ ubuntu_reply = "eth0 Link encap:Ethernet HWaddr 00:0c:29:2a:e3:bd\n" +
47
+ "inet addr:192.168.10.174 Bcast:192.168.10.255 Mask:255.255.255.0\n" +
48
+ "inet6 addr: fe80::20c:29ff:fe2a:e3bd/64 Scope:Link\n" +
49
+ "UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n" +
50
+ "RX packets:65782 errors:0 dropped:0 overruns:0 frame:0\n" +
51
+ "TX packets:31354 errors:0 dropped:0 overruns:0 carrier:0\n" +
52
+ "collisions:0 txqueuelen:1000\n" +
51
53
  "RX bytes:40583515 (40.5 MB) TX bytes:3349554 (3.3 MB)"
52
54
  allow(PacketFu::Utils).to receive(:ifconfig_data_string).and_return(ubuntu_reply)
53
55
  util_reply = PacketFu::Utils.ifconfig("eth0")
@@ -68,11 +70,11 @@ describe Utils do
68
70
 
69
71
  it "should work on FreeBSD" do
70
72
  stub_const("RUBY_PLATFORM", "freebsd")
71
- freebsd_reply = "dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n" +
72
- "options=80008<VLAN_MTU,LINKSTATE>\n" +
73
- "ether 00:a0:cc:da:da:da\n" +
74
- "inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255\n" +
75
- "media: Ethernet autoselect (100baseTX <full-duplex>)\n" +
73
+ freebsd_reply = "dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n" +
74
+ "options=80008<VLAN_MTU,LINKSTATE>\n" +
75
+ "ether 00:a0:cc:da:da:da\n" +
76
+ "inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255\n" +
77
+ "media: Ethernet autoselect (100baseTX <full-duplex>)\n" +
76
78
  "status: active"
77
79
  allow(PacketFu::Utils).to receive(:ifconfig_data_string).and_return(freebsd_reply)
78
80
  util_reply = PacketFu::Utils.ifconfig("dc0")
@@ -91,5 +93,86 @@ describe Utils do
91
93
  expect(util_reply[:ip4_obj]).to eq(IPAddr.new("192.168.1.0/24"))
92
94
  end
93
95
 
96
+ it "should work on OpenBSD" do
97
+ stub_const("RUBY_PLATFORM", "openbsd")
98
+ openbsd_reply = "em0: flags=8b43\\<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST\\> mtu 1500\n" +
99
+ " lladdr 00:01:02:03:04:05\n" +
100
+ " priority: 0\n" +
101
+ " groups: egress\n" +
102
+ " media: Ethernet autoselect (1000baseT full-duplex,rxpause,txpause)\n" +
103
+ " status: active\n" +
104
+ " inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255"
105
+ allow(PacketFu::Utils).to receive(:ifconfig_data_string).and_return(openbsd_reply)
106
+ util_reply = PacketFu::Utils.ifconfig("em0")
107
+
108
+ # Ensure we got a hash back
109
+ expect(util_reply).to be_a(::Hash)
110
+
111
+ # Ensure all our values parse correctly
112
+ expect(util_reply[:iface]).to eq("em0")
113
+ expect(util_reply[:eth_saddr]).to eq("00:01:02:03:04:05")
114
+ expect(util_reply[:eth_src]).to eq("\x00\x01\x02\x03\x04\x05")
115
+ expect(util_reply[:ip6_saddr]).to eq(nil)
116
+ expect(util_reply[:ip6_obj]).to eq(nil)
117
+ expect(util_reply[:ip_saddr]).to eq("10.0.0.1")
118
+ expect(util_reply[:ip_src]).to eq("\n\x00\x00\x01")
119
+ expect(util_reply[:ip4_obj]).to eq(IPAddr.new("10.0.0.0/24"))
120
+ end
121
+
122
+ end
123
+
124
+ context 'when using arp' do
125
+
126
+ before(:all) do
127
+ @whoami = lambda { |iface| {
128
+ :iface => iface,
129
+ :eth_saddr => '00:01:02:03:dd:b3',
130
+ :eth_src => "\x00\x01\x02\x03\xdd\xb3",
131
+ :ip_saddr => '192.168.254.1',
132
+ :ip_src => 0xc0a8fe01,
133
+ :ip_src_bin => "\xc0\xa8\xfe\x01",
134
+ :eth_dst => "\x00\x01\x02\x03\xcc\xb2",
135
+ :eth_daddr => '00:01:02:03:cc:b2',
136
+ } }
137
+ end
138
+
139
+ context 'when cached' do
140
+ it 'should work on Mac OSX Yosemite' do
141
+ stub_const('RUBY_PLATFORM', 'macosx')
142
+ mac_osx_reply = "? (192.168.254.57) at 64:00:00:00:cc:b2 on en0 ifscope [ethernet]\n"
143
+ allow(PacketFu::Utils).to receive(:arp_cache_raw).and_return(mac_osx_reply)
144
+ whoami_reply = @whoami.call('em0')
145
+ allow(PacketFu::Utils).to receive(:whoami?).and_return(whoami_reply)
146
+ util_reply = PacketFu::Utils.arp('192.168.254.57')
147
+
148
+ expect(util_reply).to be_a(String)
149
+ expect(util_reply).to eq('64:00:00:00:cc:b2')
150
+ end
151
+
152
+ it 'should work on Ubuntu 14.04 LTS' do
153
+ stub_const('RUBY_PLATFORM', 'x86_64-linux')
154
+ ubuntu_reply = "? (192.168.254.56) at 00:01:02:03:cc:b2 [ether] on eth0\n"
155
+ allow(PacketFu::Utils).to receive(:arp_cache_raw).and_return(ubuntu_reply)
156
+ whoami_reply = @whoami.call('eth0')
157
+ allow(PacketFu::Utils).to receive(:whoami?).and_return(whoami_reply)
158
+ util_reply = PacketFu::Utils.arp('192.168.254.56')
159
+
160
+ expect(util_reply).to be_a(String)
161
+ expect(util_reply).to eq('00:01:02:03:cc:b2')
162
+ end
163
+
164
+ it 'should work on FreeBSD' do
165
+ stub_const('RUBY_PLATFORM', 'freebsd')
166
+ freebsd_reply = "? (192.168.254.57) at 00:13:20:c3:7d:22 on em0 [ethernet]\n"
167
+ allow(PacketFu::Utils).to receive(:arp_cache_raw).and_return(freebsd_reply)
168
+ whoami_reply = @whoami.call('em0')
169
+ allow(PacketFu::Utils).to receive(:whoami?).and_return(whoami_reply)
170
+ util_reply = PacketFu::Utils.arp('192.168.254.57')
171
+
172
+ expect(util_reply).to be_a(String)
173
+ expect(util_reply).to eq('00:13:20:c3:7d:22')
174
+ end
175
+ end
176
+
94
177
  end
95
- end
178
+ end
@@ -0,0 +1,11 @@
1
+ Description: NRB with IPv4+6, unknown types, duplicate entries, etc.
2
+ Category: advanced
3
+
4
+ Block counts:
5
+ EPB: 3
6
+ IDB: 3
7
+ NRB: 5
8
+ SHB: 1
9
+ SPB: 2
10
+
11
+ Block sequence: SHB, IDB, NRB, SPB, NRB, IDB, NRB, EPB, IDB, NRB, SPB, EPB, EPB, NRB
@@ -0,0 +1,11 @@
1
+ Description: Duplicate ISBs with various options, intermixed in EPB/SPB
2
+ Category: advanced
3
+
4
+ Block counts:
5
+ EPB: 3
6
+ IDB: 3
7
+ ISB: 6
8
+ SHB: 1
9
+ SPB: 1
10
+
11
+ Block sequence: SHB, IDB, IDB, EPB, ISB, ISB, ISB, IDB, EPB, ISB, SPB, ISB, EPB, ISB
@@ -0,0 +1,14 @@
1
+ Description: All block types, intermixed
2
+ Category: advanced
3
+
4
+ Block counts:
5
+ CB: 1
6
+ DCB: 2
7
+ EPB: 4
8
+ IDB: 3
9
+ ISB: 6
10
+ NRB: 3
11
+ SHB: 1
12
+ SPB: 1
13
+
14
+ Block sequence: SHB, CB, NRB, IDB, IDB, ISB, EPB, ISB, ISB, DCB, IDB, EPB, ISB, SPB, NRB, EPB, ISB, EPB, DCB, NRB, ISB
@@ -0,0 +1,9 @@
1
+ Description: Basic normal pcapng file
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 4
6
+ IDB: 1
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, EPB, EPB, EPB, EPB
@@ -0,0 +1,7 @@
1
+ Description: Empty - only SHB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ SHB: 1
6
+
7
+ Block sequence: SHB
@@ -0,0 +1,8 @@
1
+ Description: Empty - only SHB and IDB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ IDB: 1
6
+ SHB: 1
7
+
8
+ Block sequence: SHB, IDB
@@ -0,0 +1,9 @@
1
+ Description: Two IDBs same linktype, different snaplen
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 4
6
+ IDB: 2
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, IDB, EPB, EPB, EPB, EPB
@@ -0,0 +1,9 @@
1
+ Description: 2 IDBs separated by EPB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 4
6
+ IDB: 2
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, EPB, IDB, EPB, EPB, EPB
@@ -0,0 +1,9 @@
1
+ Description: Two IDBs different linktype
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 5
6
+ IDB: 2
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, IDB, EPB, EPB, EPB, EPB, EPB
@@ -0,0 +1,9 @@
1
+ Description: SHB with all options
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 1
6
+ IDB: 1
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, EPB
@@ -0,0 +1,9 @@
1
+ Description: 2 IDBs with all options
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 4
6
+ IDB: 2
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, EPB, IDB, EPB, EPB, EPB
@@ -0,0 +1,9 @@
1
+ Description: EPBs with all options
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 2
6
+ IDB: 1
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, EPB, EPB
@@ -0,0 +1,9 @@
1
+ Description: SPBs
2
+ Category: basic
3
+
4
+ Block counts:
5
+ IDB: 1
6
+ SHB: 1
7
+ SPB: 4
8
+
9
+ Block sequence: SHB, IDB, SPB, SPB, SPB, SPB
@@ -0,0 +1,10 @@
1
+ Description: Mix of SPBs and EPBs
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 2
6
+ IDB: 1
7
+ SHB: 1
8
+ SPB: 2
9
+
10
+ Block sequence: SHB, IDB, SPB, EPB, SPB, EPB
@@ -0,0 +1,10 @@
1
+ Description: SPBs and EPBs with IDB snaplen bigger than some, less than others
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 2
6
+ IDB: 1
7
+ SHB: 1
8
+ SPB: 2
9
+
10
+ Block sequence: SHB, IDB, SPB, SPB, EPB, EPB
@@ -0,0 +1,9 @@
1
+ Description: Empty - only SHB, IDB, and ISB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ IDB: 1
6
+ ISB: 1
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, ISB
@@ -0,0 +1,9 @@
1
+ Description: Empty - only SHB, multiple IDB and ISB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ IDB: 3
6
+ ISB: 3
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, IDB, ISB, ISB, IDB, ISB
@@ -0,0 +1,9 @@
1
+ Description: Empty - only SHB, IDB, and NRB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ IDB: 1
6
+ NRB: 1
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, IDB, NRB
@@ -0,0 +1,11 @@
1
+ Description: Multiple NRB among SPB/EPB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ EPB: 2
6
+ IDB: 1
7
+ NRB: 3
8
+ SHB: 1
9
+ SPB: 2
10
+
11
+ Block sequence: SHB, IDB, NRB, SPB, EPB, NRB, SPB, EPB, NRB
@@ -0,0 +1,9 @@
1
+ Description: Empty - only SHB and CB/DCB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ CB: 2
6
+ DCB: 2
7
+ SHB: 1
8
+
9
+ Block sequence: SHB, CB, DCB, CB, DCB
@@ -0,0 +1,12 @@
1
+ Description: Multiple CB/DCB among SPB/EPB
2
+ Category: basic
3
+
4
+ Block counts:
5
+ CB: 2
6
+ DCB: 2
7
+ EPB: 2
8
+ IDB: 1
9
+ SHB: 1
10
+ SPB: 2
11
+
12
+ Block sequence: SHB, IDB, CB, SPB, EPB, DCB, SPB, CB, EPB, DCB
@@ -0,0 +1,8 @@
1
+ Description: Empty - only SHB and IDB, but repeated so multiple SHB
2
+ Category: difficult
3
+
4
+ Block counts:
5
+ IDB: 3
6
+ SHB: 3
7
+
8
+ Block sequence: SHB, IDB, SHB, IDB, SHB, IDB
@@ -0,0 +1,11 @@
1
+ Description: ISBs with various options, in different SHB sections
2
+ Category: difficult
3
+
4
+ Block counts:
5
+ EPB: 3
6
+ IDB: 5
7
+ ISB: 4
8
+ SHB: 3
9
+ SPB: 1
10
+
11
+ Block sequence: SHB, IDB, IDB, EPB, ISB, SHB, IDB, EPB, ISB, SPB, SHB, IDB, IDB, ISB, EPB, ISB