pypcapkit 1.5.0__cp315-none-any.whl

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 (536) hide show
  1. pcapkit/__init__.py +132 -0
  2. pcapkit/__main__.py +166 -0
  3. pcapkit/all.py +148 -0
  4. pcapkit/const/__init__.py +90 -0
  5. pcapkit/const/arp/__init__.py +25 -0
  6. pcapkit/const/arp/hardware.py +195 -0
  7. pcapkit/const/arp/operation.py +145 -0
  8. pcapkit/const/esp/__init__.py +39 -0
  9. pcapkit/const/esp/cipher.py +265 -0
  10. pcapkit/const/esp/integrity.py +154 -0
  11. pcapkit/const/ftp/__init__.py +25 -0
  12. pcapkit/const/ftp/command.py +668 -0
  13. pcapkit/const/ftp/return_code.py +409 -0
  14. pcapkit/const/hip/__init__.py +94 -0
  15. pcapkit/const/hip/certificate.py +91 -0
  16. pcapkit/const/hip/cipher.py +79 -0
  17. pcapkit/const/hip/di.py +73 -0
  18. pcapkit/const/hip/ecdsa_curve.py +73 -0
  19. pcapkit/const/hip/ecdsa_low_curve.py +70 -0
  20. pcapkit/const/hip/eddsa_curve.py +79 -0
  21. pcapkit/const/hip/esp_transform_suite.py +112 -0
  22. pcapkit/const/hip/group.py +100 -0
  23. pcapkit/const/hip/hi_algorithm.py +100 -0
  24. pcapkit/const/hip/hit_suite.py +82 -0
  25. pcapkit/const/hip/nat_traversal.py +76 -0
  26. pcapkit/const/hip/notify_message.py +214 -0
  27. pcapkit/const/hip/packet.py +103 -0
  28. pcapkit/const/hip/parameter.py +391 -0
  29. pcapkit/const/hip/registration.py +82 -0
  30. pcapkit/const/hip/registration_failure.py +98 -0
  31. pcapkit/const/hip/suite.py +85 -0
  32. pcapkit/const/hip/transport.py +73 -0
  33. pcapkit/const/http/__init__.py +39 -0
  34. pcapkit/const/http/error_code.py +108 -0
  35. pcapkit/const/http/frame.py +109 -0
  36. pcapkit/const/http/method.py +336 -0
  37. pcapkit/const/http/setting.py +110 -0
  38. pcapkit/const/http/status_code.py +347 -0
  39. pcapkit/const/ipv4/__init__.py +57 -0
  40. pcapkit/const/ipv4/classification_level.py +77 -0
  41. pcapkit/const/ipv4/option_class.py +69 -0
  42. pcapkit/const/ipv4/option_number.py +151 -0
  43. pcapkit/const/ipv4/protection_authority.py +77 -0
  44. pcapkit/const/ipv4/qs_function.py +65 -0
  45. pcapkit/const/ipv4/router_alert.py +268 -0
  46. pcapkit/const/ipv4/tos_del.py +65 -0
  47. pcapkit/const/ipv4/tos_ecn.py +69 -0
  48. pcapkit/const/ipv4/tos_pre.py +77 -0
  49. pcapkit/const/ipv4/tos_rel.py +65 -0
  50. pcapkit/const/ipv4/tos_thr.py +65 -0
  51. pcapkit/const/ipv4/ts_flag.py +67 -0
  52. pcapkit/const/ipv6/__init__.py +53 -0
  53. pcapkit/const/ipv6/extension_header.py +86 -0
  54. pcapkit/const/ipv6/option.py +151 -0
  55. pcapkit/const/ipv6/option_action.py +69 -0
  56. pcapkit/const/ipv6/qs_function.py +65 -0
  57. pcapkit/const/ipv6/router_alert.py +280 -0
  58. pcapkit/const/ipv6/routing.py +94 -0
  59. pcapkit/const/ipv6/seed_id.py +69 -0
  60. pcapkit/const/ipv6/smf_dpd_mode.py +65 -0
  61. pcapkit/const/ipv6/tagger_id.py +76 -0
  62. pcapkit/const/ipx/__init__.py +27 -0
  63. pcapkit/const/ipx/packet.py +86 -0
  64. pcapkit/const/ipx/socket.py +121 -0
  65. pcapkit/const/l2tp/__init__.py +21 -0
  66. pcapkit/const/l2tp/type.py +65 -0
  67. pcapkit/const/mh/__init__.py +206 -0
  68. pcapkit/const/mh/access_type.py +106 -0
  69. pcapkit/const/mh/ack_status_code.py +85 -0
  70. pcapkit/const/mh/ani_suboption.py +88 -0
  71. pcapkit/const/mh/auth_subtype.py +67 -0
  72. pcapkit/const/mh/binding_ack_flag.py +82 -0
  73. pcapkit/const/mh/binding_error.py +65 -0
  74. pcapkit/const/mh/binding_revocation.py +73 -0
  75. pcapkit/const/mh/binding_update_flag.py +97 -0
  76. pcapkit/const/mh/cga_extension.py +80 -0
  77. pcapkit/const/mh/cga_sec.py +71 -0
  78. pcapkit/const/mh/cga_type.py +82 -0
  79. pcapkit/const/mh/dhcp_support_mode.py +67 -0
  80. pcapkit/const/mh/dns_status_code.py +79 -0
  81. pcapkit/const/mh/dsmip6_tls_packet.py +76 -0
  82. pcapkit/const/mh/dsmipv6_home_address.py +88 -0
  83. pcapkit/const/mh/enumerating_algorithm.py +70 -0
  84. pcapkit/const/mh/fb_ack_status.py +76 -0
  85. pcapkit/const/mh/fb_action.py +85 -0
  86. pcapkit/const/mh/fb_indication_trigger.py +79 -0
  87. pcapkit/const/mh/fb_type.py +73 -0
  88. pcapkit/const/mh/flow_id_status.py +91 -0
  89. pcapkit/const/mh/flow_id_suboption.py +85 -0
  90. pcapkit/const/mh/handoff_type.py +85 -0
  91. pcapkit/const/mh/handover_ack_flag.py +70 -0
  92. pcapkit/const/mh/handover_ack_status.py +106 -0
  93. pcapkit/const/mh/handover_initiate_flag.py +73 -0
  94. pcapkit/const/mh/handover_initiate_status.py +76 -0
  95. pcapkit/const/mh/home_address_reply.py +85 -0
  96. pcapkit/const/mh/lla_code.py +77 -0
  97. pcapkit/const/mh/lma_mag_suboption.py +73 -0
  98. pcapkit/const/mh/mn_group_id.py +73 -0
  99. pcapkit/const/mh/mn_id_subtype.py +91 -0
  100. pcapkit/const/mh/operator_id.py +77 -0
  101. pcapkit/const/mh/option.py +274 -0
  102. pcapkit/const/mh/packet.py +133 -0
  103. pcapkit/const/mh/qos_attribute.py +103 -0
  104. pcapkit/const/mh/revocation_status_code.py +97 -0
  105. pcapkit/const/mh/revocation_trigger.py +100 -0
  106. pcapkit/const/mh/status_code.py +246 -0
  107. pcapkit/const/mh/traffic_selector.py +76 -0
  108. pcapkit/const/mh/upa_status.py +85 -0
  109. pcapkit/const/mh/upn_reason.py +94 -0
  110. pcapkit/const/ngap/__init__.py +34 -0
  111. pcapkit/const/ngap/procedure_code.py +223 -0
  112. pcapkit/const/ngap/protocol_ie.py +937 -0
  113. pcapkit/const/ospf/__init__.py +27 -0
  114. pcapkit/const/ospf/authentication.py +79 -0
  115. pcapkit/const/ospf/packet.py +85 -0
  116. pcapkit/const/pcapng/__init__.py +55 -0
  117. pcapkit/const/pcapng/block_type.py +166 -0
  118. pcapkit/const/pcapng/filter_type.py +62 -0
  119. pcapkit/const/pcapng/hash_algorithm.py +73 -0
  120. pcapkit/const/pcapng/option_type.py +435 -0
  121. pcapkit/const/pcapng/record_type.py +70 -0
  122. pcapkit/const/pcapng/secrets_type.py +69 -0
  123. pcapkit/const/pcapng/tls_key_label.py +89 -0
  124. pcapkit/const/pcapng/verdict_type.py +67 -0
  125. pcapkit/const/reg/__init__.py +42 -0
  126. pcapkit/const/reg/apptype/__init__.py +194 -0
  127. pcapkit/const/reg/apptype/apptype.py +5319 -0
  128. pcapkit/const/reg/apptype/dccp.py +112 -0
  129. pcapkit/const/reg/apptype/sctp.py +432 -0
  130. pcapkit/const/reg/apptype/tcp.py +25148 -0
  131. pcapkit/const/reg/apptype/udp.py +24556 -0
  132. pcapkit/const/reg/ethertype.py +740 -0
  133. pcapkit/const/reg/linktype.py +806 -0
  134. pcapkit/const/reg/transtype.py +552 -0
  135. pcapkit/const/sctp/__init__.py +37 -0
  136. pcapkit/const/sctp/cause_code.py +146 -0
  137. pcapkit/const/sctp/chunk.py +164 -0
  138. pcapkit/const/sctp/parameter.py +170 -0
  139. pcapkit/const/sctp/payload_protocol_identifier.py +325 -0
  140. pcapkit/const/tcp/__init__.py +35 -0
  141. pcapkit/const/tcp/checksum.py +69 -0
  142. pcapkit/const/tcp/flags.py +96 -0
  143. pcapkit/const/tcp/mp_tcp_option.py +95 -0
  144. pcapkit/const/tcp/option.py +210 -0
  145. pcapkit/const/vlan/__init__.py +23 -0
  146. pcapkit/const/vlan/priority_level.py +85 -0
  147. pcapkit/corekit/__init__.py +63 -0
  148. pcapkit/corekit/context.py +250 -0
  149. pcapkit/corekit/decorators.py +355 -0
  150. pcapkit/corekit/enum.py +806 -0
  151. pcapkit/corekit/fields/__init__.py +45 -0
  152. pcapkit/corekit/fields/byteorder.py +80 -0
  153. pcapkit/corekit/fields/collections.py +563 -0
  154. pcapkit/corekit/fields/field.py +599 -0
  155. pcapkit/corekit/fields/ipaddress.py +755 -0
  156. pcapkit/corekit/fields/misc.py +877 -0
  157. pcapkit/corekit/fields/numbers.py +1200 -0
  158. pcapkit/corekit/fields/strings.py +409 -0
  159. pcapkit/corekit/infoclass.py +1313 -0
  160. pcapkit/corekit/io.py +1013 -0
  161. pcapkit/corekit/module.py +121 -0
  162. pcapkit/corekit/multidict.py +679 -0
  163. pcapkit/corekit/packet.py +185 -0
  164. pcapkit/corekit/protochain.py +266 -0
  165. pcapkit/corekit/sentinels.py +579 -0
  166. pcapkit/corekit/version.py +40 -0
  167. pcapkit/dumpkit/__init__.py +15 -0
  168. pcapkit/dumpkit/common.py +832 -0
  169. pcapkit/dumpkit/null.py +77 -0
  170. pcapkit/dumpkit/pcap.py +309 -0
  171. pcapkit/foundation/__init__.py +51 -0
  172. pcapkit/foundation/engines/__init__.py +35 -0
  173. pcapkit/foundation/engines/_pcap_backend.py +361 -0
  174. pcapkit/foundation/engines/dpkt.py +679 -0
  175. pcapkit/foundation/engines/engine.py +340 -0
  176. pcapkit/foundation/engines/pcap.py +247 -0
  177. pcapkit/foundation/engines/pcap_ct.py +484 -0
  178. pcapkit/foundation/engines/pcapng.py +503 -0
  179. pcapkit/foundation/engines/pypcap.py +392 -0
  180. pcapkit/foundation/engines/pypcapfile.py +470 -0
  181. pcapkit/foundation/engines/pyshark.py +335 -0
  182. pcapkit/foundation/engines/scapy.py +474 -0
  183. pcapkit/foundation/extraction.py +1891 -0
  184. pcapkit/foundation/reassembly/__init__.py +50 -0
  185. pcapkit/foundation/reassembly/data/__init__.py +31 -0
  186. pcapkit/foundation/reassembly/data/data.py +365 -0
  187. pcapkit/foundation/reassembly/data/ip.py +195 -0
  188. pcapkit/foundation/reassembly/data/tcp.py +297 -0
  189. pcapkit/foundation/reassembly/ip.py +553 -0
  190. pcapkit/foundation/reassembly/ipv4.py +80 -0
  191. pcapkit/foundation/reassembly/ipv6.py +188 -0
  192. pcapkit/foundation/reassembly/reassembly.py +614 -0
  193. pcapkit/foundation/reassembly/tcp.py +872 -0
  194. pcapkit/foundation/registry/__init__.py +48 -0
  195. pcapkit/foundation/registry/foundation.py +362 -0
  196. pcapkit/foundation/registry/protocols.py +1730 -0
  197. pcapkit/foundation/traceflow/__init__.py +45 -0
  198. pcapkit/foundation/traceflow/data/__init__.py +17 -0
  199. pcapkit/foundation/traceflow/data/data.py +139 -0
  200. pcapkit/foundation/traceflow/data/tcp.py +200 -0
  201. pcapkit/foundation/traceflow/tcp.py +588 -0
  202. pcapkit/foundation/traceflow/traceflow.py +598 -0
  203. pcapkit/interface/__init__.py +24 -0
  204. pcapkit/interface/core.py +264 -0
  205. pcapkit/interface/misc.py +216 -0
  206. pcapkit/interface/registry.py +116 -0
  207. pcapkit/protocols/__init__.py +87 -0
  208. pcapkit/protocols/application/NotImplemented/bgp.py +0 -0
  209. pcapkit/protocols/application/NotImplemented/dhcp.py +0 -0
  210. pcapkit/protocols/application/NotImplemented/dhcpv6.py +0 -0
  211. pcapkit/protocols/application/NotImplemented/dns.py +0 -0
  212. pcapkit/protocols/application/NotImplemented/imap.py +0 -0
  213. pcapkit/protocols/application/NotImplemented/ldap.py +0 -0
  214. pcapkit/protocols/application/NotImplemented/mqtt.py +0 -0
  215. pcapkit/protocols/application/NotImplemented/nntp.py +0 -0
  216. pcapkit/protocols/application/NotImplemented/ntp.py +0 -0
  217. pcapkit/protocols/application/NotImplemented/onc_rpc.py +0 -0
  218. pcapkit/protocols/application/NotImplemented/pop.py +0 -0
  219. pcapkit/protocols/application/NotImplemented/rip.py +0 -0
  220. pcapkit/protocols/application/NotImplemented/rtp.py +0 -0
  221. pcapkit/protocols/application/NotImplemented/sip.py +0 -0
  222. pcapkit/protocols/application/NotImplemented/smtp.py +0 -0
  223. pcapkit/protocols/application/NotImplemented/snmp.py +0 -0
  224. pcapkit/protocols/application/NotImplemented/ssh.py +0 -0
  225. pcapkit/protocols/application/NotImplemented/telnet.py +0 -0
  226. pcapkit/protocols/application/NotImplemented/tls.py +0 -0
  227. pcapkit/protocols/application/NotImplemented/xmpp.py +0 -0
  228. pcapkit/protocols/application/__init__.py +45 -0
  229. pcapkit/protocols/application/application.py +184 -0
  230. pcapkit/protocols/application/ftp.py +385 -0
  231. pcapkit/protocols/application/ftp_data.py +64 -0
  232. pcapkit/protocols/application/http.py +642 -0
  233. pcapkit/protocols/application/httpv1.py +622 -0
  234. pcapkit/protocols/application/httpv2.py +1575 -0
  235. pcapkit/protocols/application/ngap.py +566 -0
  236. pcapkit/protocols/application/ospf.py +489 -0
  237. pcapkit/protocols/application/rarp.py +127 -0
  238. pcapkit/protocols/data/__init__.py +272 -0
  239. pcapkit/protocols/data/application/__init__.py +77 -0
  240. pcapkit/protocols/data/application/ftp.py +72 -0
  241. pcapkit/protocols/data/application/httpv1.py +91 -0
  242. pcapkit/protocols/data/application/httpv2.py +340 -0
  243. pcapkit/protocols/data/application/ngap.py +125 -0
  244. pcapkit/protocols/data/application/ospf.py +76 -0
  245. pcapkit/protocols/data/data.py +50 -0
  246. pcapkit/protocols/data/internet/__init__.py +504 -0
  247. pcapkit/protocols/data/internet/ah.py +39 -0
  248. pcapkit/protocols/data/internet/esp.py +71 -0
  249. pcapkit/protocols/data/internet/hip.py +1112 -0
  250. pcapkit/protocols/data/internet/hopopt.py +446 -0
  251. pcapkit/protocols/data/internet/ipv4.py +467 -0
  252. pcapkit/protocols/data/internet/ipv6.py +85 -0
  253. pcapkit/protocols/data/internet/ipv6_ext.py +53 -0
  254. pcapkit/protocols/data/internet/ipv6_frag.py +41 -0
  255. pcapkit/protocols/data/internet/ipv6_opts.py +463 -0
  256. pcapkit/protocols/data/internet/ipv6_route.py +113 -0
  257. pcapkit/protocols/data/internet/ipx.py +60 -0
  258. pcapkit/protocols/data/internet/mh.py +2434 -0
  259. pcapkit/protocols/data/link/__init__.py +38 -0
  260. pcapkit/protocols/data/link/arp.py +74 -0
  261. pcapkit/protocols/data/link/ethernet.py +28 -0
  262. pcapkit/protocols/data/link/l2tp.py +73 -0
  263. pcapkit/protocols/data/link/loopback.py +25 -0
  264. pcapkit/protocols/data/link/vlan.py +48 -0
  265. pcapkit/protocols/data/misc/__init__.py +112 -0
  266. pcapkit/protocols/data/misc/null.py +19 -0
  267. pcapkit/protocols/data/misc/pcap/__init__.py +18 -0
  268. pcapkit/protocols/data/misc/pcap/frame.py +63 -0
  269. pcapkit/protocols/data/misc/pcap/header.py +53 -0
  270. pcapkit/protocols/data/misc/pcapng.py +1034 -0
  271. pcapkit/protocols/data/misc/raw.py +35 -0
  272. pcapkit/protocols/data/protocol.py +32 -0
  273. pcapkit/protocols/data/transport/__init__.py +158 -0
  274. pcapkit/protocols/data/transport/sctp.py +634 -0
  275. pcapkit/protocols/data/transport/tcp.py +633 -0
  276. pcapkit/protocols/data/transport/udp.py +33 -0
  277. pcapkit/protocols/internet/NotImplemented/ecn.py +0 -0
  278. pcapkit/protocols/internet/NotImplemented/icmp.py +0 -0
  279. pcapkit/protocols/internet/NotImplemented/icmpv6.py +0 -0
  280. pcapkit/protocols/internet/NotImplemented/igmp.py +0 -0
  281. pcapkit/protocols/internet/NotImplemented/shim6.py +0 -0
  282. pcapkit/protocols/internet/__init__.py +45 -0
  283. pcapkit/protocols/internet/ah.py +326 -0
  284. pcapkit/protocols/internet/esp.py +1512 -0
  285. pcapkit/protocols/internet/hip.py +5806 -0
  286. pcapkit/protocols/internet/hopopt.py +2271 -0
  287. pcapkit/protocols/internet/internet.py +511 -0
  288. pcapkit/protocols/internet/ip.py +52 -0
  289. pcapkit/protocols/internet/ipsec.py +48 -0
  290. pcapkit/protocols/internet/ipv4.py +2165 -0
  291. pcapkit/protocols/internet/ipv6.py +752 -0
  292. pcapkit/protocols/internet/ipv6_ext.py +693 -0
  293. pcapkit/protocols/internet/ipv6_frag.py +293 -0
  294. pcapkit/protocols/internet/ipv6_opts.py +2259 -0
  295. pcapkit/protocols/internet/ipv6_route.py +945 -0
  296. pcapkit/protocols/internet/ipx.py +322 -0
  297. pcapkit/protocols/internet/mh.py +11312 -0
  298. pcapkit/protocols/link/NotImplemented/dsl.py +0 -0
  299. pcapkit/protocols/link/NotImplemented/eapol.py +1 -0
  300. pcapkit/protocols/link/NotImplemented/fddi.py +0 -0
  301. pcapkit/protocols/link/NotImplemented/isdn.py +0 -0
  302. pcapkit/protocols/link/NotImplemented/ndp.py +0 -0
  303. pcapkit/protocols/link/NotImplemented/ppp.py +0 -0
  304. pcapkit/protocols/link/__init__.py +40 -0
  305. pcapkit/protocols/link/arp.py +538 -0
  306. pcapkit/protocols/link/c_tag.py +109 -0
  307. pcapkit/protocols/link/ethernet.py +251 -0
  308. pcapkit/protocols/link/l2tp.py +184 -0
  309. pcapkit/protocols/link/l2tpv2.py +451 -0
  310. pcapkit/protocols/link/link.py +228 -0
  311. pcapkit/protocols/link/loopback.py +293 -0
  312. pcapkit/protocols/link/s_tag.py +104 -0
  313. pcapkit/protocols/link/vlan.py +274 -0
  314. pcapkit/protocols/misc/__init__.py +37 -0
  315. pcapkit/protocols/misc/null.py +153 -0
  316. pcapkit/protocols/misc/pcap/__init__.py +17 -0
  317. pcapkit/protocols/misc/pcap/frame.py +712 -0
  318. pcapkit/protocols/misc/pcap/header.py +380 -0
  319. pcapkit/protocols/misc/pcapng.py +6941 -0
  320. pcapkit/protocols/misc/raw.py +190 -0
  321. pcapkit/protocols/protocol.py +2564 -0
  322. pcapkit/protocols/schema/__init__.py +215 -0
  323. pcapkit/protocols/schema/application/__init__.py +54 -0
  324. pcapkit/protocols/schema/application/ftp.py +21 -0
  325. pcapkit/protocols/schema/application/httpv1.py +21 -0
  326. pcapkit/protocols/schema/application/httpv2.py +456 -0
  327. pcapkit/protocols/schema/application/ngap.py +29 -0
  328. pcapkit/protocols/schema/application/ospf.py +109 -0
  329. pcapkit/protocols/schema/internet/__init__.py +509 -0
  330. pcapkit/protocols/schema/internet/ah.py +57 -0
  331. pcapkit/protocols/schema/internet/esp.py +46 -0
  332. pcapkit/protocols/schema/internet/hip.py +1635 -0
  333. pcapkit/protocols/schema/internet/hopopt.py +688 -0
  334. pcapkit/protocols/schema/internet/ipv4.py +771 -0
  335. pcapkit/protocols/schema/internet/ipv6.py +204 -0
  336. pcapkit/protocols/schema/internet/ipv6_ext.py +42 -0
  337. pcapkit/protocols/schema/internet/ipv6_frag.py +51 -0
  338. pcapkit/protocols/schema/internet/ipv6_option.py +306 -0
  339. pcapkit/protocols/schema/internet/ipv6_opts.py +700 -0
  340. pcapkit/protocols/schema/internet/ipv6_route.py +346 -0
  341. pcapkit/protocols/schema/internet/ipx.py +53 -0
  342. pcapkit/protocols/schema/internet/mh.py +3268 -0
  343. pcapkit/protocols/schema/link/__init__.py +17 -0
  344. pcapkit/protocols/schema/link/arp.py +49 -0
  345. pcapkit/protocols/schema/link/ethernet.py +71 -0
  346. pcapkit/protocols/schema/link/l2tp.py +122 -0
  347. pcapkit/protocols/schema/link/loopback.py +33 -0
  348. pcapkit/protocols/schema/link/vlan.py +77 -0
  349. pcapkit/protocols/schema/misc/__init__.py +112 -0
  350. pcapkit/protocols/schema/misc/null.py +19 -0
  351. pcapkit/protocols/schema/misc/pcap/__init__.py +10 -0
  352. pcapkit/protocols/schema/misc/pcap/frame.py +47 -0
  353. pcapkit/protocols/schema/misc/pcap/header.py +103 -0
  354. pcapkit/protocols/schema/misc/pcapng.py +2820 -0
  355. pcapkit/protocols/schema/misc/raw.py +24 -0
  356. pcapkit/protocols/schema/schema.py +1557 -0
  357. pcapkit/protocols/schema/transport/__init__.py +154 -0
  358. pcapkit/protocols/schema/transport/sctp.py +969 -0
  359. pcapkit/protocols/schema/transport/tcp.py +1168 -0
  360. pcapkit/protocols/schema/transport/udp.py +44 -0
  361. pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
  362. pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
  363. pcapkit/protocols/transport/__init__.py +28 -0
  364. pcapkit/protocols/transport/sctp.py +3897 -0
  365. pcapkit/protocols/transport/tcp.py +3507 -0
  366. pcapkit/protocols/transport/transport.py +339 -0
  367. pcapkit/protocols/transport/udp.py +307 -0
  368. pcapkit/py.typed +0 -0
  369. pcapkit/toolkit/__init__.py +85 -0
  370. pcapkit/toolkit/dpkt.py +923 -0
  371. pcapkit/toolkit/pcap.py +423 -0
  372. pcapkit/toolkit/pcap_ct.py +165 -0
  373. pcapkit/toolkit/pcapng.py +270 -0
  374. pcapkit/toolkit/pypcap.py +164 -0
  375. pcapkit/toolkit/pypcapfile.py +893 -0
  376. pcapkit/toolkit/pyshark.py +656 -0
  377. pcapkit/toolkit/scapy.py +801 -0
  378. pcapkit/utilities/__init__.py +29 -0
  379. pcapkit/utilities/chardet.py +64 -0
  380. pcapkit/utilities/compat.py +218 -0
  381. pcapkit/utilities/config.py +382 -0
  382. pcapkit/utilities/datetime.py +134 -0
  383. pcapkit/utilities/exceptions.py +840 -0
  384. pcapkit/utilities/logging.py +406 -0
  385. pcapkit/utilities/warnings.py +527 -0
  386. pcapkit/vendor/__init__.py +186 -0
  387. pcapkit/vendor/__main__.py +263 -0
  388. pcapkit/vendor/arp/__init__.py +27 -0
  389. pcapkit/vendor/arp/hardware.py +29 -0
  390. pcapkit/vendor/arp/operation.py +29 -0
  391. pcapkit/vendor/default.py +840 -0
  392. pcapkit/vendor/esp/__init__.py +32 -0
  393. pcapkit/vendor/esp/cipher.py +114 -0
  394. pcapkit/vendor/esp/integrity.py +111 -0
  395. pcapkit/vendor/ftp/__init__.py +27 -0
  396. pcapkit/vendor/ftp/command.py +594 -0
  397. pcapkit/vendor/ftp/return_code.py +369 -0
  398. pcapkit/vendor/hip/__init__.py +94 -0
  399. pcapkit/vendor/hip/certificate.py +29 -0
  400. pcapkit/vendor/hip/cipher.py +29 -0
  401. pcapkit/vendor/hip/di.py +29 -0
  402. pcapkit/vendor/hip/ecdsa_curve.py +29 -0
  403. pcapkit/vendor/hip/ecdsa_low_curve.py +29 -0
  404. pcapkit/vendor/hip/eddsa_curve.py +85 -0
  405. pcapkit/vendor/hip/esp_transform_suite.py +29 -0
  406. pcapkit/vendor/hip/group.py +87 -0
  407. pcapkit/vendor/hip/hi_algorithm.py +29 -0
  408. pcapkit/vendor/hip/hit_suite.py +29 -0
  409. pcapkit/vendor/hip/nat_traversal.py +29 -0
  410. pcapkit/vendor/hip/notify_message.py +29 -0
  411. pcapkit/vendor/hip/packet.py +88 -0
  412. pcapkit/vendor/hip/parameter.py +88 -0
  413. pcapkit/vendor/hip/registration.py +29 -0
  414. pcapkit/vendor/hip/registration_failure.py +29 -0
  415. pcapkit/vendor/hip/suite.py +29 -0
  416. pcapkit/vendor/hip/transport.py +29 -0
  417. pcapkit/vendor/http/__init__.py +39 -0
  418. pcapkit/vendor/http/error_code.py +94 -0
  419. pcapkit/vendor/http/frame.py +91 -0
  420. pcapkit/vendor/http/method.py +316 -0
  421. pcapkit/vendor/http/setting.py +93 -0
  422. pcapkit/vendor/http/status_code.py +233 -0
  423. pcapkit/vendor/ipv4/__init__.py +59 -0
  424. pcapkit/vendor/ipv4/classification_level.py +90 -0
  425. pcapkit/vendor/ipv4/option_class.py +80 -0
  426. pcapkit/vendor/ipv4/option_number.py +105 -0
  427. pcapkit/vendor/ipv4/protection_authority.py +84 -0
  428. pcapkit/vendor/ipv4/qs_function.py +78 -0
  429. pcapkit/vendor/ipv4/router_alert.py +96 -0
  430. pcapkit/vendor/ipv4/tos_del.py +78 -0
  431. pcapkit/vendor/ipv4/tos_ecn.py +95 -0
  432. pcapkit/vendor/ipv4/tos_pre.py +84 -0
  433. pcapkit/vendor/ipv4/tos_rel.py +78 -0
  434. pcapkit/vendor/ipv4/tos_thr.py +78 -0
  435. pcapkit/vendor/ipv4/ts_flag.py +79 -0
  436. pcapkit/vendor/ipv6/__init__.py +53 -0
  437. pcapkit/vendor/ipv6/extension_header.py +220 -0
  438. pcapkit/vendor/ipv6/option.py +104 -0
  439. pcapkit/vendor/ipv6/option_action.py +90 -0
  440. pcapkit/vendor/ipv6/qs_function.py +78 -0
  441. pcapkit/vendor/ipv6/router_alert.py +93 -0
  442. pcapkit/vendor/ipv6/routing.py +87 -0
  443. pcapkit/vendor/ipv6/seed_id.py +81 -0
  444. pcapkit/vendor/ipv6/smf_dpd_mode.py +78 -0
  445. pcapkit/vendor/ipv6/tagger_id.py +81 -0
  446. pcapkit/vendor/ipx/__init__.py +40 -0
  447. pcapkit/vendor/ipx/packet.py +205 -0
  448. pcapkit/vendor/ipx/socket.py +333 -0
  449. pcapkit/vendor/l2tp/__init__.py +21 -0
  450. pcapkit/vendor/l2tp/type.py +79 -0
  451. pcapkit/vendor/mh/__init__.py +206 -0
  452. pcapkit/vendor/mh/access_type.py +87 -0
  453. pcapkit/vendor/mh/ack_status_code.py +88 -0
  454. pcapkit/vendor/mh/ani_suboption.py +88 -0
  455. pcapkit/vendor/mh/auth_subtype.py +83 -0
  456. pcapkit/vendor/mh/binding_ack_flag.py +164 -0
  457. pcapkit/vendor/mh/binding_error.py +78 -0
  458. pcapkit/vendor/mh/binding_revocation.py +87 -0
  459. pcapkit/vendor/mh/binding_update_flag.py +163 -0
  460. pcapkit/vendor/mh/cga_extension.py +91 -0
  461. pcapkit/vendor/mh/cga_sec.py +91 -0
  462. pcapkit/vendor/mh/cga_type.py +74 -0
  463. pcapkit/vendor/mh/dhcp_support_mode.py +77 -0
  464. pcapkit/vendor/mh/dns_status_code.py +87 -0
  465. pcapkit/vendor/mh/dsmip6_tls_packet.py +87 -0
  466. pcapkit/vendor/mh/dsmipv6_home_address.py +87 -0
  467. pcapkit/vendor/mh/enumerating_algorithm.py +82 -0
  468. pcapkit/vendor/mh/fb_ack_status.py +87 -0
  469. pcapkit/vendor/mh/fb_action.py +88 -0
  470. pcapkit/vendor/mh/fb_indication_trigger.py +87 -0
  471. pcapkit/vendor/mh/fb_type.py +88 -0
  472. pcapkit/vendor/mh/flow_id_status.py +87 -0
  473. pcapkit/vendor/mh/flow_id_suboption.py +87 -0
  474. pcapkit/vendor/mh/handoff_type.py +87 -0
  475. pcapkit/vendor/mh/handover_ack_flag.py +159 -0
  476. pcapkit/vendor/mh/handover_ack_status.py +87 -0
  477. pcapkit/vendor/mh/handover_initiate_flag.py +159 -0
  478. pcapkit/vendor/mh/handover_initiate_status.py +87 -0
  479. pcapkit/vendor/mh/home_address_reply.py +87 -0
  480. pcapkit/vendor/mh/lla_code.py +97 -0
  481. pcapkit/vendor/mh/lma_mag_suboption.py +88 -0
  482. pcapkit/vendor/mh/mn_group_id.py +87 -0
  483. pcapkit/vendor/mh/mn_id_subtype.py +87 -0
  484. pcapkit/vendor/mh/operator_id.py +87 -0
  485. pcapkit/vendor/mh/option.py +83 -0
  486. pcapkit/vendor/mh/packet.py +82 -0
  487. pcapkit/vendor/mh/qos_attribute.py +87 -0
  488. pcapkit/vendor/mh/revocation_status_code.py +87 -0
  489. pcapkit/vendor/mh/revocation_trigger.py +87 -0
  490. pcapkit/vendor/mh/status_code.py +91 -0
  491. pcapkit/vendor/mh/traffic_selector.py +87 -0
  492. pcapkit/vendor/mh/upa_status.py +87 -0
  493. pcapkit/vendor/mh/upn_reason.py +87 -0
  494. pcapkit/vendor/ngap/__init__.py +31 -0
  495. pcapkit/vendor/ngap/procedure_code.py +233 -0
  496. pcapkit/vendor/ngap/protocol_ie.py +201 -0
  497. pcapkit/vendor/ospf/__init__.py +27 -0
  498. pcapkit/vendor/ospf/authentication.py +29 -0
  499. pcapkit/vendor/ospf/packet.py +29 -0
  500. pcapkit/vendor/pcapng/__init__.py +55 -0
  501. pcapkit/vendor/pcapng/block_type.py +136 -0
  502. pcapkit/vendor/pcapng/filter_type.py +77 -0
  503. pcapkit/vendor/pcapng/hash_algorithm.py +82 -0
  504. pcapkit/vendor/pcapng/option_type.py +490 -0
  505. pcapkit/vendor/pcapng/record_type.py +81 -0
  506. pcapkit/vendor/pcapng/secrets_type.py +80 -0
  507. pcapkit/vendor/pcapng/tls_key_label.py +194 -0
  508. pcapkit/vendor/pcapng/verdict_type.py +79 -0
  509. pcapkit/vendor/reg/__init__.py +47 -0
  510. pcapkit/vendor/reg/apptype/__init__.py +36 -0
  511. pcapkit/vendor/reg/apptype/apptype.py +1435 -0
  512. pcapkit/vendor/reg/apptype/dccp.py +27 -0
  513. pcapkit/vendor/reg/apptype/sctp.py +27 -0
  514. pcapkit/vendor/reg/apptype/tcp.py +27 -0
  515. pcapkit/vendor/reg/apptype/udp.py +27 -0
  516. pcapkit/vendor/reg/ethertype.py +175 -0
  517. pcapkit/vendor/reg/linktype.py +210 -0
  518. pcapkit/vendor/reg/transtype.py +116 -0
  519. pcapkit/vendor/sctp/__init__.py +37 -0
  520. pcapkit/vendor/sctp/cause_code.py +29 -0
  521. pcapkit/vendor/sctp/chunk.py +29 -0
  522. pcapkit/vendor/sctp/parameter.py +29 -0
  523. pcapkit/vendor/sctp/payload_protocol_identifier.py +34 -0
  524. pcapkit/vendor/tcp/__init__.py +35 -0
  525. pcapkit/vendor/tcp/checksum.py +80 -0
  526. pcapkit/vendor/tcp/flags.py +181 -0
  527. pcapkit/vendor/tcp/mp_tcp_option.py +90 -0
  528. pcapkit/vendor/tcp/option.py +103 -0
  529. pcapkit/vendor/vlan/__init__.py +23 -0
  530. pcapkit/vendor/vlan/priority_level.py +97 -0
  531. pypcapkit-1.5.0.dist-info/METADATA +204 -0
  532. pypcapkit-1.5.0.dist-info/RECORD +536 -0
  533. pypcapkit-1.5.0.dist-info/WHEEL +5 -0
  534. pypcapkit-1.5.0.dist-info/entry_points.txt +3 -0
  535. pypcapkit-1.5.0.dist-info/licenses/LICENSE +29 -0
  536. pypcapkit-1.5.0.dist-info/top_level.txt +1 -0
pcapkit/__init__.py ADDED
@@ -0,0 +1,132 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=wrong-import-position,unused-import,unused-wildcard-import
3
+ """Stream PCAP File Extractor
4
+ ================================
5
+
6
+ .. module:: pcapkit
7
+
8
+ :mod:`pcapkit` is an independent open source library, using only
9
+ `DictDumper`_ as its formatted output dumper.
10
+
11
+ Unlike popular PCAP file extractors, such as `Scapy`_,
12
+ `DPKT`_ and `PyShark`_, :mod:`pcapkit` uses streaming
13
+ strategy to read input files. That is to read frame by
14
+ frame, decrease occupation on memory, as well as enhance
15
+ efficiency in some way.
16
+
17
+ In :mod:`pcapkit`, all files can be described as the following
18
+ components.
19
+
20
+ - Interface (:mod:`pcapkit.interface`)
21
+
22
+ User interface for the :mod:`pcapkit` library, which
23
+ standardises and simplifies the usage of this library.
24
+
25
+ - Foundation (:mod:`pcapkit.foundation`)
26
+
27
+ Synthesises file I/O and protocol analysis, coordinates
28
+ information exchange in all network layers, as well as
29
+ provides the fundamental functions for :mod:`pcapkit`.
30
+
31
+ - Protocols (:mod:`pcapkit.protocols`)
32
+
33
+ Collection of all protocol families, with detailed
34
+ implementation and methods.
35
+
36
+ - Utilities (:mod:`pcapkit.utilities`)
37
+
38
+ Auxiliary functions and tools for :mod:`pcapkit`.
39
+
40
+ - CoreKit (:mod:`pcapkit.corekit`)
41
+
42
+ Core utilities for :mod:`pcapkit` implementation, mainly
43
+ for internal data structure and processing.
44
+
45
+ - ToolKit (:mod:`pcapkit.toolkit`)
46
+
47
+ Auxiliary tools for :mod:`pcapkit` to support the multiple
48
+ extraction engines with a unified interface.
49
+
50
+ - DumpKit (:mod:`pcapkit.dumpkit`)
51
+
52
+ File output formatters for :mod:`pcapkit`.
53
+
54
+ - Constants (:mod:`pcapkit.const`)
55
+
56
+ Constant enumerations used in :mod:`pcapkit` for protocol
57
+ family extraction and representation.
58
+
59
+ - Vendor Crawlers (:mod:`pcapkit.vendor`)
60
+
61
+ Web crawlers that generate the constant enumerations in
62
+ :mod:`pcapkit.const`.
63
+
64
+ """
65
+ ###############################################################################
66
+ # conda ``_extern`` module support
67
+
68
+ import os
69
+ import sys
70
+
71
+ _extern = os.path.join(os.path.dirname(os.path.realpath(__file__)), '_extern')
72
+ if os.path.exists(_extern):
73
+ sys.path.append(_extern)
74
+
75
+ ###############################################################################
76
+
77
+ import warnings
78
+
79
+ import tbtrim
80
+
81
+ from pcapkit.utilities.exceptions import BaseError
82
+ from pcapkit.utilities.logging import DEVMODE
83
+ from pcapkit.utilities.warnings import DevModeWarning
84
+
85
+ # set up sys.excepthook
86
+ if DEVMODE:
87
+ warnings.showwarning('development mode enabled', DevModeWarning,
88
+ filename=__file__, lineno=0,
89
+ line=f"PCAPKIT_DEVMODE={os.environ.get('PCAPKIT_DEVMODE', '1')}")
90
+ else:
91
+ ROOT = os.path.dirname(os.path.realpath(__file__))
92
+ tbtrim.set_trim_rule(lambda filename: ROOT in os.path.realpath(filename),
93
+ exception=BaseError, strict=False)
94
+
95
+ from pcapkit.interface import *
96
+ from pcapkit.protocols import *
97
+
98
+ __all__ = [
99
+ 'extract', 'reassemble', 'trace', # Interface Functions
100
+
101
+ 'TREE', 'JSON', 'PLIST', 'PCAP', # Format Macros
102
+ 'LINK', 'INET', 'TRANS', 'APP', 'RAW', # Layer Macros
103
+ 'DPKT', 'Scapy', 'PyShark', 'PCAPKit', # Engine Macros
104
+ 'PyPCAP', 'PCAP_CT', 'PyPCAPFile', # Engine Macros
105
+
106
+ 'LINKTYPE', 'ETHERTYPE', 'TRANSTYPE', 'APPTYPE', # Protocol Numbers
107
+
108
+ 'Header', 'Frame', # PCAP Headers
109
+ 'PCAPNG', # PCAPNG Format
110
+
111
+ 'NoPayload', # No Payload
112
+ 'Raw', # Raw Packet
113
+
114
+ 'ARP', 'C_Tag', 'Ethernet', 'InARP', 'L2TP', # Link Layer
115
+ 'L2TPv2', 'Loopback', 'S_Tag', 'VLAN',
116
+
117
+ 'AH', 'ESP', 'IP', 'IPsec', 'IPv4', 'IPv6', 'IPX', # Internet Layer
118
+ 'HIP', 'HOPOPT', 'IPv6_Frag', 'IPv6_Ext', 'IPv6_Opts', 'IPv6_Route', 'MH',
119
+ # IPv6 Extension Header
120
+
121
+ 'TCP', 'UDP', 'SCTP', # Transport Layer
122
+
123
+ 'FTP', 'FTP_DATA', # Application Layer
124
+ 'HTTP', 'HTTPv1', 'HTTPv2', 'NGAP', 'OSPF',
125
+ 'RARP', 'DRARP',
126
+
127
+ 'Data', # Protocol Data
128
+ 'Schema', # Protocol Schema
129
+ ]
130
+
131
+ #: version number
132
+ __version__ = '1.5.0'
pcapkit/__main__.py ADDED
@@ -0,0 +1,166 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Command Line Tool
3
+ =======================
4
+
5
+ .. module:: pcapkit.__main__
6
+
7
+ .. important::
8
+
9
+ The |emoji|_ package is optional. Without it, importing this module
10
+ warns :class:`~pcapkit.utilities.warnings.EmojiWarning` and the verbose
11
+ messages print as plain text.
12
+
13
+ :mod:`pcapkit.__main__` was originally the module file of
14
+ |jspcapy|_, which is deprecated and merged with :mod:`pcapkit`.
15
+
16
+ """
17
+ import argparse
18
+ import sys
19
+ from typing import TYPE_CHECKING
20
+
21
+ from pcapkit import __version__
22
+ from pcapkit.foundation.extraction import Extractor
23
+ from pcapkit.interface import JSON, PLIST, TREE
24
+ from pcapkit.utilities.compat import ModuleNotFoundError # pylint: disable=redefined-builtin
25
+ from pcapkit.utilities.exceptions import stacklevel
26
+ from pcapkit.utilities.warnings import EmojiWarning, warn
27
+
28
+ try:
29
+ import emoji
30
+ except ModuleNotFoundError:
31
+ warn("dependency package 'emoji' not found",
32
+ EmojiWarning, stacklevel=stacklevel())
33
+
34
+ __all__ = ['main']
35
+
36
+ if TYPE_CHECKING:
37
+ from argparse import ArgumentParser
38
+
39
+
40
+ def get_parser() -> 'ArgumentParser':
41
+ """CLI argument parser."""
42
+ parser = argparse.ArgumentParser(prog='pcapkit-cli',
43
+ description='PCAP file extractor and formatted dumper')
44
+ parser.add_argument('-V', '--version', action='version', version=__version__)
45
+ parser.add_argument('fin', metavar='input-file-name',
46
+ help=('The name of the input PCAP or PCAP-NG file. With '
47
+ '`--auto-extension`, ".pcap" is appended unless its '
48
+ 'extension is already ".pcap", ".cap" or ".pcapng". '
49
+ 'Use "-" to read from standard input.'))
50
+ parser.add_argument('-o', '--output', action='store', metavar='file-name', dest='fout',
51
+ help=('The name of the output report file. If it is omitted, '
52
+ '"out" is used. With `--auto-extension`, the extension '
53
+ 'of the output format (e.g. ".json") is appended if '
54
+ 'absent. With `--files`, the directory each frame\'s '
55
+ 'report is written to.'))
56
+ parser.add_argument('-f', '--format', action='store', metavar='format', dest='format',
57
+ help=('The format of the report: "json", "plist" (or "xml"), '
58
+ '"tree" (or "text", "txt") or "pcap" (or "cap"). Takes '
59
+ 'precedence over `--json`, `--plist` and `--tree`. With '
60
+ 'no format option, "tree" is used.'))
61
+ parser.add_argument('-j', '--json', action='store_true', default=False,
62
+ help=('Write the report as JSON, as `--format json` does. '
63
+ 'Ignored if `--format` is given.'))
64
+ parser.add_argument('-p', '--plist', action='store_true', default=False,
65
+ help=('Write the report as a macOS property list, as '
66
+ '`--format plist` does. Ignored if `--format` or '
67
+ '`--json` is given.'))
68
+ parser.add_argument('-t', '--tree', action='store_true', default=False,
69
+ help=('Write the report as tree view text, as `--format tree` '
70
+ 'does; this is the default. Ignored if `--format`, '
71
+ '`--json` or `--plist` is given.'))
72
+ parser.add_argument('-a', '--auto-extension', action='store_true', default=False,
73
+ help=('Append missing file extensions: ".pcap" to the input '
74
+ 'file name, and the extension of the output format '
75
+ '(e.g. ".json") to the output file name unless `--files` '
76
+ 'is set.'))
77
+ parser.add_argument('-v', '--verbose', action='store_true', default=False,
78
+ help=('Print the input name, the protocol chain of each '
79
+ 'frame, and where the report is stored.'))
80
+ parser.add_argument('-F', '--files', action='store_true', default=False,
81
+ help=('Write a report file per frame, in the directory named '
82
+ 'by `--output`.'))
83
+ parser.add_argument('-E', '--engine', action='store', dest='engine', default='default', metavar='PKG',
84
+ help=('The extraction engine, case-insensitive: "default" (or '
85
+ '"pcapkit"), or a third-party one such as "dpkt" or '
86
+ '"scapy", which needs its package installed. An unknown '
87
+ 'or unavailable engine falls back to "default".'))
88
+ parser.add_argument('-P', '--protocol', action='store', dest='protocol', default=None, metavar='PROTOCOL',
89
+ help=('Stop dissecting each frame after this protocol, e.g. '
90
+ '"IPv4" (case-insensitive); the rest of the frame is '
91
+ 'kept as raw data. Third-party engines ignore it.'))
92
+ # NOTE: ``choices`` rather than a free-form string, because the layer names
93
+ # are a closed set (``pcapkit.foundation.extraction.Layers``) and a name
94
+ # outside it is not rejected anywhere downstream -- it simply never matches a
95
+ # protocol's ``__layer__`` and the parse silently runs to the top of the
96
+ # stack, which is the failure mode GH-356 was about. ``type=str.lower`` keeps
97
+ # ``-L Internet`` accepted, matching ``Extractor.__init__``, which lowercases
98
+ # the value anyway.
99
+ #
100
+ # The defaults are :data:`None` and not the ``'None'``/``'null'`` strings:
101
+ # ``Extractor.__init__`` substitutes its own sentinels for an
102
+ # omitted value, so passing the strings would only work because it happens to
103
+ # lowercase ``'None'`` into the sentinel it wants.
104
+ parser.add_argument('-L', '--layer', action='store', dest='layer', default=None, metavar='LAYER',
105
+ type=str.lower, choices=['link', 'internet', 'transport', 'application', 'none'],
106
+ help=('Stop dissecting each frame after its protocol in this '
107
+ 'layer: "link", "internet", "transport" or "application" '
108
+ '(case-insensitive); "none", the default, sets no limit. '
109
+ 'Third-party engines ignore it.'))
110
+ parser.add_argument('-B', '--buffer-save', action='store_true', default=False,
111
+ help=('Save a copy of the input to a file as it is read. Only '
112
+ 'an input that is not seekable, such as a pipe on '
113
+ 'standard input, is saved.'))
114
+ parser.add_argument('-O', '--buffer-path', action='store', metavar='file-name', dest='buffer_path',
115
+ help=('The name of the file `--buffer-save` writes. If it is '
116
+ 'omitted, a temporary file is used and then deleted.'))
117
+ return parser
118
+
119
+
120
+ def main() -> 'int':
121
+ """Entrypoint."""
122
+ parser = get_parser()
123
+ args = parser.parse_args()
124
+
125
+ if args.format:
126
+ fmt = args.format
127
+ elif args.json:
128
+ fmt = JSON
129
+ elif args.plist:
130
+ fmt = PLIST
131
+ elif args.tree:
132
+ fmt = TREE
133
+ else:
134
+ fmt = None
135
+
136
+ no_eof = args.fin == '-'
137
+ if args.fin == '-':
138
+ args.fin = sys.stdin.buffer
139
+
140
+ extractor = Extractor(store=False, auto=not args.verbose,
141
+ fin=args.fin, fout=args.fout,
142
+ files=args.files, format=fmt,
143
+ layer=args.layer, protocol=args.protocol,
144
+ engine=args.engine, extension=args.auto_extension,
145
+ verbose=args.verbose, buffer_save=args.buffer_save,
146
+ no_eof=no_eof, buffer_path=args.buffer_path) # type: ignore[var-annotated]
147
+
148
+ if args.verbose:
149
+ try:
150
+ print(emoji.emojize(f":police_car_light: Loading file {extractor.input!r}"))
151
+ except (UnicodeEncodeError, NameError): # may trigger if emoji not installed
152
+ print(f"[*] Loading file {extractor.input!r}")
153
+
154
+ for _ in extractor:
155
+ pass
156
+
157
+ try:
158
+ print(emoji.emojize(f":beer_mug: Report file{'s' if args.files else ''} stored in {extractor.output!r}"))
159
+ except (UnicodeEncodeError, NameError): # may trigger if emoji not installed
160
+ print(f"[*] Report file{'s' if args.files else ''} stored in {extractor.output!r}")
161
+
162
+ return 0
163
+
164
+
165
+ if __name__ == '__main__':
166
+ sys.exit(main())
pcapkit/all.py ADDED
@@ -0,0 +1,148 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import,unused-wildcard-import,wildcard-import
3
+ """Library Index
4
+ ===================
5
+
6
+ .. module:: pcapkit.all
7
+
8
+ :mod:`pcapkit` has defined various and numerous functions
9
+ and classes, which have different features and purposes.
10
+ To make a simple index for this library, :mod:`pcapkit.all`
11
+ contains all things from :mod:`pcapkit`.
12
+
13
+ """
14
+ from pcapkit import const
15
+ from pcapkit.corekit import *
16
+ from pcapkit.dumpkit import *
17
+ from pcapkit.foundation import *
18
+ from pcapkit.interface import *
19
+ from pcapkit.protocols import *
20
+ from pcapkit.toolkit import *
21
+ from pcapkit.utilities import * # pylint: disable=redefined-builtin
22
+
23
+ #from pcapkit import vendor
24
+
25
+ # tools for Scapy engine
26
+ from pcapkit.toolkit.scapy import packet2chain as scapy_packet2chain # isort: skip
27
+ from pcapkit.toolkit.scapy import packet2dict as scapy_packet2dict # isort: skip
28
+ from pcapkit.toolkit.scapy import ipv4_reassembly as scapy_ipv4_reassembly # isort: skip
29
+ from pcapkit.toolkit.scapy import ipv6_reassembly as scapy_ipv6_reassembly # isort: skip
30
+ from pcapkit.toolkit.scapy import tcp_reassembly as scapy_tcp_reassembly # isort: skip
31
+ from pcapkit.toolkit.scapy import tcp_traceflow as scapy_tcp_traceflow # isort: skip
32
+
33
+ # tools for DPKT engine
34
+ from pcapkit.toolkit.dpkt import ipv6_hdr_len as dpkt_ipv6_hdr_len # isort: skip
35
+ from pcapkit.toolkit.dpkt import packet2chain as dpkt_packet2chain # isort: skip
36
+ from pcapkit.toolkit.dpkt import packet2dict as dpkt_packet2dict # isort: skip
37
+ from pcapkit.toolkit.dpkt import ipv4_reassembly as dpkt_ipv4_reassembly # isort: skip
38
+ from pcapkit.toolkit.dpkt import ipv6_reassembly as dpkt_ipv6_reassembly # isort: skip
39
+ from pcapkit.toolkit.dpkt import tcp_reassembly as dpkt_tcp_reassembly # isort: skip
40
+ from pcapkit.toolkit.dpkt import tcp_traceflow as dpkt_tcp_traceflow # isort: skip
41
+
42
+ # tools for PyShark engine
43
+ from pcapkit.toolkit.pyshark import packet2dict as pyshark_packet2dict # isort: skip
44
+ from pcapkit.toolkit.pyshark import tcp_traceflow as pyshark_tcp_traceflow # isort: skip
45
+
46
+ __all__ = [
47
+ # pcapkit.const
48
+ 'const',
49
+
50
+ # # pcapkit.vendor
51
+ # 'vendor',
52
+
53
+ # pcapkit.corekit
54
+ 'EnumRegistry', # Enum Registry
55
+ 'Info', 'info_final', # Info Class
56
+ 'MultiInfo', 'OrderedMultiInfo',
57
+ 'ProtoChain', # ProtoChain
58
+ 'VersionInfo', # Version
59
+ 'NumberField', 'Int32Field', 'UInt32Field', # numeric protocol fields
60
+ 'Int16Field', 'UInt16Field', 'Int64Field', 'UInt64Field',
61
+ 'Int8Field', 'UInt8Field', 'EnumField', 'PortEnumField',
62
+ 'BytesField', 'StringField', 'BitField', # text protocol fields
63
+ 'PaddingField',
64
+ 'ConditionalField', 'PayloadField', 'SchemaField', # misc protocol fields
65
+ 'SwitchField', 'ForwardMatchField', 'NoValueField',
66
+ 'IPv4AddressField', 'IPv6AddressField', # IP address protocol fields
67
+ 'IPv4InterfaceField', 'IPv6InterfaceField',
68
+ 'ListField', 'OptionField', # container protocol fields
69
+ 'SeekableReader', # Seekable Reader
70
+ 'MultiDict', 'OrderedMultiDict', # Multi Dict
71
+ 'ModuleDescriptor', # Module Descriptor
72
+
73
+ # pcapkit.dumpkit
74
+ 'PCAPIO', # PCAP Dumper
75
+ 'NotImplementedIO', # Simulated I/O
76
+
77
+ # pcapkit.foundation
78
+ 'Extractor', # Extraction
79
+ 'TraceFlowManager', 'TCP_TraceFlow', # Trace Flow
80
+
81
+ # pcapkit.foundation.reassembly
82
+ 'ReassemblyManager', # Reassembly Manager
83
+ 'IPv4_Reassembly', 'IPv6_Reassembly', # IP Reassembly
84
+ 'TCP_Reassembly', # TCP Reassembly
85
+
86
+ # pcapkit.foundation.registry
87
+ 'register_protocol',
88
+ 'register_protocol_code',
89
+ 'register_linktype',
90
+ 'register_pcap', 'register_pcapng',
91
+ 'register_ethertype',
92
+ 'register_transtype',
93
+ 'register_ipv4_option', 'register_hip_parameter', 'register_hopopt_option',
94
+ 'register_ipv6_opts_option', 'register_ipv6_route_routing',
95
+ 'register_mh_message', 'register_mh_option', 'register_mh_extension',
96
+ 'register_apptype',
97
+ 'register_tcp', 'register_udp', 'register_sctp',
98
+ 'register_tcp_option', 'register_tcp_mp_option',
99
+ 'register_http_frame',
100
+ 'register_pcapng_block', 'register_pcapng_option', 'register_pcapng_secrets',
101
+ 'register_pcapng_record',
102
+ 'register_extractor_engine',
103
+ 'register_dumper',
104
+ 'register_extractor_dumper', 'register_traceflow_dumper',
105
+ 'register_extractor_reassembly', 'register_extractor_traceflow',
106
+ 'register_reassembly_ipv4_callback', 'register_reassembly_ipv6_callback',
107
+ 'register_reassembly_tcp_callback', 'register_traceflow_tcp_callback',
108
+
109
+ # pcapkit.interface
110
+ 'extract', 'reassemble', 'trace', # Interface Functions
111
+ 'TREE', 'JSON', 'PLIST', 'PCAP', # Format Macros
112
+ 'LINK', 'INET', 'TRANS', 'APP', 'RAW', # Layer Macros
113
+ 'DPKT', 'Scapy', 'PyShark', 'PCAPKit', # Engine Macros
114
+ 'PyPCAP', 'PCAP_CT', 'PyPCAPFile', # Engine Macros
115
+
116
+ # pcapkit.protocols
117
+ 'LINKTYPE', 'ETHERTYPE', 'TRANSTYPE', 'APPTYPE', # Protocol Numbers
118
+ 'Header', 'Frame', # PCAP Headers
119
+ 'PCAPNG', # PCAPNG Format
120
+ 'NoPayload', # No Payload
121
+ 'Raw', # Raw Packet
122
+ 'ARP', 'C_Tag', 'Ethernet', 'InARP', 'L2TP', 'L2TPv2',
123
+ 'Loopback', 'S_Tag', 'VLAN', # Link Layer
124
+ 'AH', 'ESP', 'IP', 'IPsec', 'IPv4', 'IPv6', 'IPX', # Internet Layer
125
+ 'HIP', 'HOPOPT', 'IPv6_Ext', 'IPv6_Frag', 'IPv6_Opts', 'IPv6_Route', 'MH',
126
+ # IPv6 Extension Header
127
+ 'TCP', 'UDP', 'SCTP', # Transport Layer
128
+ 'FTP', 'FTP_DATA', # Application Layer
129
+ 'HTTP', 'HTTPv1', 'HTTPv2', 'NGAP', 'OSPF', 'RARP', 'DRARP',
130
+ 'Schema', 'schema', # Protocol Schema
131
+ 'Data', 'data', # Protocol Data
132
+
133
+ # pcapkit.toolkit
134
+ 'ipv4_reassembly', 'ipv6_reassembly', 'tcp_reassembly', 'tcp_traceflow',
135
+ 'pcapng_ipv4_reassembly', 'pcapng_ipv6_reassembly', 'pcapng_tcp_reassembly', 'pcapng_tcp_traceflow',
136
+ 'pcapng_block2frame', # default engine
137
+ 'dpkt_ipv6_hdr_len', 'dpkt_packet2chain', 'dpkt_packet2dict',
138
+ 'dpkt_ipv4_reassembly', 'dpkt_ipv6_reassembly', 'dpkt_tcp_reassembly', 'dpkt_tcp_traceflow',
139
+ # DPKT engine
140
+ 'pyshark_packet2dict', 'pyshark_tcp_traceflow', # PyShark engine
141
+ 'scapy_packet2chain', 'scapy_packet2dict',
142
+ 'scapy_ipv4_reassembly', 'scapy_ipv6_reassembly', 'scapy_tcp_reassembly', 'scapy_tcp_traceflow',
143
+ # Scapy engine
144
+
145
+ # pcapkit.utilities -- unlisted: its names stay reachable as attributes, but
146
+ # ``import *`` leaves out generic helpers such as ``warn``, ``reset``,
147
+ # ``configure`` and ``detect``
148
+ ]
@@ -0,0 +1,90 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import, unused-wildcard-import
3
+ """Constant Enumerations
4
+ ===========================
5
+
6
+ This module contains all constant enumerations of :mod:`pcapkit`, which are
7
+ automatically generated from the :mod:`pcapkit.vendor` module.
8
+
9
+ """
10
+
11
+ # IANA registration
12
+ from pcapkit.const.reg import *
13
+
14
+ # Miscellaneous
15
+ from pcapkit.const.pcapng import *
16
+
17
+ # per protocol
18
+ from pcapkit.const.arp import *
19
+ from pcapkit.const.esp import *
20
+ from pcapkit.const.ftp import *
21
+ from pcapkit.const.hip import *
22
+ from pcapkit.const.http import *
23
+ from pcapkit.const.ipv4 import *
24
+ from pcapkit.const.ipv6 import *
25
+ from pcapkit.const.ipx import *
26
+ from pcapkit.const.l2tp import *
27
+ from pcapkit.const.mh import *
28
+ from pcapkit.const.ngap import *
29
+ from pcapkit.const.ospf import *
30
+ from pcapkit.const.sctp import *
31
+ from pcapkit.const.tcp import *
32
+ from pcapkit.const.vlan import *
33
+
34
+ __all__ = [
35
+ # Protocol Registration
36
+ 'ETHERTYPE', 'LINKTYPE', 'TRANSTYPE', 'APPTYPE',
37
+ # ARP
38
+ 'ARP_Hardware', 'ARP_Operation',
39
+ # ESP
40
+ 'ESP_Cipher', 'ESP_Integrity',
41
+ # FTP
42
+ 'FTP_Command', 'FTP_ReturnCode',
43
+ # HIP
44
+ 'HIP_Certificate', 'HIP_Cipher', 'HIP_DITypes', 'HIP_ECDSACurve', 'HIP_ECDSALowCurve',
45
+ 'HIP_ESPTransformSuite', 'HIP_Group', 'HIP_HIAlgorithm', 'HIP_HITSuite', 'HIP_NATTraversal',
46
+ 'HIP_NotifyMessage', 'HIP_Packet', 'HIP_Parameter', 'HIP_Registration', 'HIP_RegistrationFailure',
47
+ 'HIP_Suite', 'HIP_Transport', 'HIP_EdDSACurve',
48
+ # HTTP
49
+ 'HTTP_ErrorCode', 'HTTP_Frame', 'HTTP_Method', 'HTTP_Setting', 'HTTP_Status',
50
+ # IPv4
51
+ 'IPv4_ClassificationLevel', 'IPv4_OptionClass', 'IPv4_OptionNumber', 'IPv4_ProtectionAuthority',
52
+ 'IPv4_QSFunction', 'IPv4_RouterAlert', 'IPv4_ToSDelay', 'IPv4_ToSECN', 'IPv4_ToSPrecedence',
53
+ 'IPv4_ToSReliability', 'IPv4_ToSThroughput', 'IPv4_TSFlag',
54
+ # IPv6
55
+ 'IPv6_ExtensionHeader', 'IPv6_Option', 'IPv6_QSFunction', 'IPv6_RouterAlert', 'IPv6_Routing',
56
+ 'IPv6_SeedID', 'IPv6_SMFDPDMode', 'IPv6_TaggerID', 'IPv6_OptionAction',
57
+ # IPX
58
+ 'IPX_Packet', 'IPX_Socket',
59
+ # L2TP
60
+ 'L2TP_Type',
61
+ # MH
62
+ 'MH_Packet', 'MH_Option', 'MH_DNSStatusCode', 'MH_ACKStatusCode',
63
+ 'MH_MNIDSubtype', 'MH_StatusCode', 'MH_EnumeratingAlgorithm',
64
+ 'MH_AuthSubtype', 'MH_HandoffType', 'MH_AccessType',
65
+ 'MH_BindingUpdateFlag', 'MH_BindingACKFlag', 'MH_DSMIPv6HomeAddress',
66
+ 'MH_BindingRevocation', 'MH_RevocationTrigger', 'MH_RevocationStatusCode',
67
+ 'MH_HomeAddressReply', 'MH_DHCPSupportMode', 'MH_HandoverInitiateFlag',
68
+ 'MH_HandoverACKFlag', 'MH_HandoverInitiateStatus', 'MH_HandoverACKStatus',
69
+ 'MH_FlowIDStatus', 'MH_FlowIDSuboption', 'MH_TrafficSelector',
70
+ 'MH_MNGroupID', 'MH_DSMIP6TLSPacket', 'MH_ANISuboption', 'MH_OperatorID',
71
+ 'MH_UpdateNotificationReason', 'MH_UpdateNotificationACKStatus',
72
+ 'MH_FlowBindingType', 'MH_FlowBindingIndicationTrigger',
73
+ 'MH_FlowBindingACKStatus', 'MH_FlowBindingAction', 'MH_QoSAttribute',
74
+ 'MH_LMAControlledMAGSuboption', 'MH_LLACode', 'MH_CGAType',
75
+ 'MH_CGAExtension', 'MH_CGASec', 'MH_BindingError',
76
+ # NGAP
77
+ 'NGAP_ProcedureCode', 'NGAP_ProtocolIE',
78
+ # OSPF
79
+ 'OSPF_Authentication', 'OSPF_Packet',
80
+ # SCTP
81
+ 'SCTP_Chunk', 'SCTP_Parameter', 'SCTP_CauseCode', 'SCTP_PayloadProtocolIdentifier',
82
+ # TCP
83
+ 'TCP_Checksum', 'TCP_Option', 'TCP_MPTCPOption', 'TCP_Flags',
84
+ # VLAN
85
+ 'VLAN_PriorityLevel',
86
+ # PCAPNG
87
+ 'PCAPNG_BlockType', 'PCAPNG_OptionType', 'PCAPNG_HashAlgorithm',
88
+ 'PCAPNG_VerdictType', 'PCAPNG_RecordType', 'PCAPNG_SecretsType',
89
+ 'PCAPNG_FilterType', 'PCAPNG_TLSKeyLabel',
90
+ ]
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import
3
+ """:class:`~pcapkit.protocols.link.arp.ARP` Constant Enumerations
4
+ =====================================================================
5
+
6
+ This module contains all constant enumerations of :class:`~pcapkit.protocols.link.arp.ARP`
7
+ and :class:`~pcapkit.protocols.application.rarp.RARP` implementations. Available
8
+ enumerations include:
9
+
10
+ .. list-table::
11
+
12
+ * - :class:`ARP_Hardware <pcapkit.const.arp.hardware.Hardware>`
13
+ - ARP Hardware Types [*]_
14
+ * - :class:`ARP_Operation <pcapkit.const.arp.operation.Operation>`
15
+ - Operation Codes [*]_
16
+
17
+ .. [*] https://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml#arp-parameters-2
18
+ .. [*] https://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml#arp-parameters-1
19
+
20
+ """
21
+
22
+ from pcapkit.const.arp.hardware import Hardware as ARP_Hardware
23
+ from pcapkit.const.arp.operation import Operation as ARP_Operation
24
+
25
+ __all__ = ['ARP_Hardware', 'ARP_Operation']