pypcapkit 1.3.3.post1__cp313-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 (466) hide show
  1. pcapkit/__init__.py +126 -0
  2. pcapkit/__main__.py +138 -0
  3. pcapkit/all.py +136 -0
  4. pcapkit/const/__init__.py +81 -0
  5. pcapkit/const/arp/__init__.py +25 -0
  6. pcapkit/const/arp/hardware.py +181 -0
  7. pcapkit/const/arp/operation.py +131 -0
  8. pcapkit/const/ftp/__init__.py +25 -0
  9. pcapkit/const/ftp/command.py +309 -0
  10. pcapkit/const/ftp/return_code.py +304 -0
  11. pcapkit/const/hip/__init__.py +94 -0
  12. pcapkit/const/hip/certificate.py +77 -0
  13. pcapkit/const/hip/cipher.py +65 -0
  14. pcapkit/const/hip/di.py +59 -0
  15. pcapkit/const/hip/ecdsa_curve.py +59 -0
  16. pcapkit/const/hip/ecdsa_low_curve.py +56 -0
  17. pcapkit/const/hip/eddsa_curve.py +65 -0
  18. pcapkit/const/hip/esp_transform_suite.py +98 -0
  19. pcapkit/const/hip/group.py +86 -0
  20. pcapkit/const/hip/hi_algorithm.py +86 -0
  21. pcapkit/const/hip/hit_suite.py +68 -0
  22. pcapkit/const/hip/nat_traversal.py +62 -0
  23. pcapkit/const/hip/notify_message.py +200 -0
  24. pcapkit/const/hip/packet.py +89 -0
  25. pcapkit/const/hip/parameter.py +377 -0
  26. pcapkit/const/hip/registration.py +68 -0
  27. pcapkit/const/hip/registration_failure.py +84 -0
  28. pcapkit/const/hip/suite.py +71 -0
  29. pcapkit/const/hip/transport.py +59 -0
  30. pcapkit/const/http/__init__.py +39 -0
  31. pcapkit/const/http/error_code.py +95 -0
  32. pcapkit/const/http/frame.py +95 -0
  33. pcapkit/const/http/method.py +184 -0
  34. pcapkit/const/http/setting.py +96 -0
  35. pcapkit/const/http/status_code.py +294 -0
  36. pcapkit/const/ipv4/__init__.py +57 -0
  37. pcapkit/const/ipv4/classification_level.py +64 -0
  38. pcapkit/const/ipv4/option_class.py +55 -0
  39. pcapkit/const/ipv4/option_number.py +137 -0
  40. pcapkit/const/ipv4/protection_authority.py +63 -0
  41. pcapkit/const/ipv4/qs_function.py +51 -0
  42. pcapkit/const/ipv4/router_alert.py +251 -0
  43. pcapkit/const/ipv4/tos_del.py +51 -0
  44. pcapkit/const/ipv4/tos_ecn.py +55 -0
  45. pcapkit/const/ipv4/tos_pre.py +63 -0
  46. pcapkit/const/ipv4/tos_rel.py +51 -0
  47. pcapkit/const/ipv4/tos_thr.py +51 -0
  48. pcapkit/const/ipv4/ts_flag.py +53 -0
  49. pcapkit/const/ipv6/__init__.py +53 -0
  50. pcapkit/const/ipv6/extension_header.py +66 -0
  51. pcapkit/const/ipv6/option.py +137 -0
  52. pcapkit/const/ipv6/option_action.py +55 -0
  53. pcapkit/const/ipv6/qs_function.py +51 -0
  54. pcapkit/const/ipv6/router_alert.py +266 -0
  55. pcapkit/const/ipv6/routing.py +80 -0
  56. pcapkit/const/ipv6/seed_id.py +55 -0
  57. pcapkit/const/ipv6/smf_dpd_mode.py +51 -0
  58. pcapkit/const/ipv6/tagger_id.py +62 -0
  59. pcapkit/const/ipx/__init__.py +27 -0
  60. pcapkit/const/ipx/packet.py +72 -0
  61. pcapkit/const/ipx/socket.py +104 -0
  62. pcapkit/const/l2tp/__init__.py +21 -0
  63. pcapkit/const/l2tp/type.py +51 -0
  64. pcapkit/const/mh/__init__.py +204 -0
  65. pcapkit/const/mh/access_type.py +92 -0
  66. pcapkit/const/mh/ack_status_code.py +71 -0
  67. pcapkit/const/mh/ani_suboption.py +74 -0
  68. pcapkit/const/mh/auth_subtype.py +53 -0
  69. pcapkit/const/mh/binding_ack_flag.py +66 -0
  70. pcapkit/const/mh/binding_error.py +51 -0
  71. pcapkit/const/mh/binding_revocation.py +59 -0
  72. pcapkit/const/mh/binding_update_flag.py +81 -0
  73. pcapkit/const/mh/cga_extension.py +66 -0
  74. pcapkit/const/mh/cga_sec.py +57 -0
  75. pcapkit/const/mh/cga_type.py +68 -0
  76. pcapkit/const/mh/dhcp_support_mode.py +53 -0
  77. pcapkit/const/mh/dns_status_code.py +65 -0
  78. pcapkit/const/mh/dsmip6_tls_packet.py +62 -0
  79. pcapkit/const/mh/dsmipv6_home_address.py +74 -0
  80. pcapkit/const/mh/enumerating_algorithm.py +56 -0
  81. pcapkit/const/mh/fb_ack_status.py +62 -0
  82. pcapkit/const/mh/fb_action.py +71 -0
  83. pcapkit/const/mh/fb_indication_trigger.py +65 -0
  84. pcapkit/const/mh/fb_type.py +59 -0
  85. pcapkit/const/mh/flow_id_status.py +77 -0
  86. pcapkit/const/mh/flow_id_suboption.py +71 -0
  87. pcapkit/const/mh/handoff_type.py +71 -0
  88. pcapkit/const/mh/handover_ack_flag.py +54 -0
  89. pcapkit/const/mh/handover_ack_status.py +92 -0
  90. pcapkit/const/mh/handover_initiate_flag.py +57 -0
  91. pcapkit/const/mh/handover_initiate_status.py +62 -0
  92. pcapkit/const/mh/home_address_reply.py +71 -0
  93. pcapkit/const/mh/lla_code.py +63 -0
  94. pcapkit/const/mh/lma_mag_suboption.py +59 -0
  95. pcapkit/const/mh/mn_group_id.py +59 -0
  96. pcapkit/const/mh/mn_id_subtype.py +77 -0
  97. pcapkit/const/mh/operator_id.py +63 -0
  98. pcapkit/const/mh/option.py +260 -0
  99. pcapkit/const/mh/packet.py +119 -0
  100. pcapkit/const/mh/qos_attribute.py +89 -0
  101. pcapkit/const/mh/revocation_status_code.py +83 -0
  102. pcapkit/const/mh/revocation_trigger.py +86 -0
  103. pcapkit/const/mh/status_code.py +232 -0
  104. pcapkit/const/mh/traffic_selector.py +62 -0
  105. pcapkit/const/mh/upa_status.py +71 -0
  106. pcapkit/const/mh/upn_reason.py +80 -0
  107. pcapkit/const/ospf/__init__.py +27 -0
  108. pcapkit/const/ospf/authentication.py +65 -0
  109. pcapkit/const/ospf/packet.py +71 -0
  110. pcapkit/const/pcapng/__init__.py +51 -0
  111. pcapkit/const/pcapng/block_type.py +152 -0
  112. pcapkit/const/pcapng/filter_type.py +48 -0
  113. pcapkit/const/pcapng/hash_algorithm.py +59 -0
  114. pcapkit/const/pcapng/option_type.py +233 -0
  115. pcapkit/const/pcapng/record_type.py +57 -0
  116. pcapkit/const/pcapng/secrets_type.py +56 -0
  117. pcapkit/const/pcapng/verdict_type.py +53 -0
  118. pcapkit/const/reg/__init__.py +34 -0
  119. pcapkit/const/reg/apptype.py +32702 -0
  120. pcapkit/const/reg/ethertype.py +714 -0
  121. pcapkit/const/reg/linktype.py +902 -0
  122. pcapkit/const/reg/transtype.py +523 -0
  123. pcapkit/const/tcp/__init__.py +35 -0
  124. pcapkit/const/tcp/checksum.py +55 -0
  125. pcapkit/const/tcp/flags.py +73 -0
  126. pcapkit/const/tcp/mp_tcp_option.py +80 -0
  127. pcapkit/const/tcp/option.py +198 -0
  128. pcapkit/const/vlan/__init__.py +23 -0
  129. pcapkit/const/vlan/priority_level.py +71 -0
  130. pcapkit/corekit/__init__.py +59 -0
  131. pcapkit/corekit/fields/__init__.py +45 -0
  132. pcapkit/corekit/fields/collections.py +282 -0
  133. pcapkit/corekit/fields/field.py +269 -0
  134. pcapkit/corekit/fields/ipaddress.py +274 -0
  135. pcapkit/corekit/fields/misc.py +722 -0
  136. pcapkit/corekit/fields/numbers.py +375 -0
  137. pcapkit/corekit/fields/strings.py +245 -0
  138. pcapkit/corekit/infoclass.py +394 -0
  139. pcapkit/corekit/io.py +506 -0
  140. pcapkit/corekit/module.py +39 -0
  141. pcapkit/corekit/multidict.py +626 -0
  142. pcapkit/corekit/protochain.py +263 -0
  143. pcapkit/corekit/version.py +33 -0
  144. pcapkit/dumpkit/__init__.py +15 -0
  145. pcapkit/dumpkit/common.py +199 -0
  146. pcapkit/dumpkit/null.py +77 -0
  147. pcapkit/dumpkit/pcap.py +144 -0
  148. pcapkit/foundation/__init__.py +45 -0
  149. pcapkit/foundation/engines/__init__.py +36 -0
  150. pcapkit/foundation/engines/dpkt.py +230 -0
  151. pcapkit/foundation/engines/engine.py +194 -0
  152. pcapkit/foundation/engines/pcap.py +188 -0
  153. pcapkit/foundation/engines/pcapng.py +310 -0
  154. pcapkit/foundation/engines/pyshark.py +166 -0
  155. pcapkit/foundation/engines/scapy.py +161 -0
  156. pcapkit/foundation/extraction.py +915 -0
  157. pcapkit/foundation/reassembly/__init__.py +49 -0
  158. pcapkit/foundation/reassembly/data/__init__.py +48 -0
  159. pcapkit/foundation/reassembly/data/ip.py +117 -0
  160. pcapkit/foundation/reassembly/data/tcp.py +145 -0
  161. pcapkit/foundation/reassembly/ip.py +192 -0
  162. pcapkit/foundation/reassembly/ipv4.py +50 -0
  163. pcapkit/foundation/reassembly/ipv6.py +50 -0
  164. pcapkit/foundation/reassembly/reassembly.py +389 -0
  165. pcapkit/foundation/reassembly/tcp.py +249 -0
  166. pcapkit/foundation/registry/__init__.py +41 -0
  167. pcapkit/foundation/registry/foundation.py +327 -0
  168. pcapkit/foundation/registry/protocols.py +885 -0
  169. pcapkit/foundation/traceflow/__init__.py +44 -0
  170. pcapkit/foundation/traceflow/data/__init__.py +30 -0
  171. pcapkit/foundation/traceflow/data/tcp.py +105 -0
  172. pcapkit/foundation/traceflow/tcp.py +159 -0
  173. pcapkit/foundation/traceflow/traceflow.py +390 -0
  174. pcapkit/interface/__init__.py +22 -0
  175. pcapkit/interface/core.py +185 -0
  176. pcapkit/interface/misc.py +120 -0
  177. pcapkit/protocols/__init__.py +85 -0
  178. pcapkit/protocols/application/NotImplemented/bgp.py +0 -0
  179. pcapkit/protocols/application/NotImplemented/dhcp.py +0 -0
  180. pcapkit/protocols/application/NotImplemented/dhcpv6.py +0 -0
  181. pcapkit/protocols/application/NotImplemented/dns.py +0 -0
  182. pcapkit/protocols/application/NotImplemented/imap.py +0 -0
  183. pcapkit/protocols/application/NotImplemented/ldap.py +0 -0
  184. pcapkit/protocols/application/NotImplemented/mqtt.py +0 -0
  185. pcapkit/protocols/application/NotImplemented/nntp.py +0 -0
  186. pcapkit/protocols/application/NotImplemented/ntp.py +0 -0
  187. pcapkit/protocols/application/NotImplemented/onc_rpc.py +0 -0
  188. pcapkit/protocols/application/NotImplemented/pop.py +0 -0
  189. pcapkit/protocols/application/NotImplemented/rip.py +0 -0
  190. pcapkit/protocols/application/NotImplemented/rtp.py +0 -0
  191. pcapkit/protocols/application/NotImplemented/sip.py +0 -0
  192. pcapkit/protocols/application/NotImplemented/smtp.py +0 -0
  193. pcapkit/protocols/application/NotImplemented/snmp.py +0 -0
  194. pcapkit/protocols/application/NotImplemented/ssh.py +0 -0
  195. pcapkit/protocols/application/NotImplemented/telnet.py +0 -0
  196. pcapkit/protocols/application/NotImplemented/tls.py +0 -0
  197. pcapkit/protocols/application/NotImplemented/xmpp.py +0 -0
  198. pcapkit/protocols/application/__init__.py +34 -0
  199. pcapkit/protocols/application/application.py +114 -0
  200. pcapkit/protocols/application/ftp.py +206 -0
  201. pcapkit/protocols/application/http.py +176 -0
  202. pcapkit/protocols/application/httpv1.py +320 -0
  203. pcapkit/protocols/application/httpv2.py +1255 -0
  204. pcapkit/protocols/data/__init__.py +192 -0
  205. pcapkit/protocols/data/application/__init__.py +57 -0
  206. pcapkit/protocols/data/application/ftp.py +59 -0
  207. pcapkit/protocols/data/application/httpv1.py +79 -0
  208. pcapkit/protocols/data/application/httpv2.py +293 -0
  209. pcapkit/protocols/data/data.py +25 -0
  210. pcapkit/protocols/data/internet/__init__.py +298 -0
  211. pcapkit/protocols/data/internet/ah.py +31 -0
  212. pcapkit/protocols/data/internet/hip.py +804 -0
  213. pcapkit/protocols/data/internet/hopopt.py +351 -0
  214. pcapkit/protocols/data/internet/ipv4.py +369 -0
  215. pcapkit/protocols/data/internet/ipv6.py +67 -0
  216. pcapkit/protocols/data/internet/ipv6_frag.py +29 -0
  217. pcapkit/protocols/data/internet/ipv6_opts.py +368 -0
  218. pcapkit/protocols/data/internet/ipv6_route.py +86 -0
  219. pcapkit/protocols/data/internet/ipx.py +56 -0
  220. pcapkit/protocols/data/internet/mh.py +509 -0
  221. pcapkit/protocols/data/link/__init__.py +33 -0
  222. pcapkit/protocols/data/link/arp.py +74 -0
  223. pcapkit/protocols/data/link/ethernet.py +28 -0
  224. pcapkit/protocols/data/link/l2tp.py +63 -0
  225. pcapkit/protocols/data/link/ospf.py +58 -0
  226. pcapkit/protocols/data/link/vlan.py +42 -0
  227. pcapkit/protocols/data/misc/__init__.py +109 -0
  228. pcapkit/protocols/data/misc/null.py +18 -0
  229. pcapkit/protocols/data/misc/pcap/__init__.py +18 -0
  230. pcapkit/protocols/data/misc/pcap/frame.py +56 -0
  231. pcapkit/protocols/data/misc/pcap/header.py +53 -0
  232. pcapkit/protocols/data/misc/pcapng.py +925 -0
  233. pcapkit/protocols/data/misc/raw.py +25 -0
  234. pcapkit/protocols/data/protocol.py +32 -0
  235. pcapkit/protocols/data/transport/__init__.py +71 -0
  236. pcapkit/protocols/data/transport/tcp.py +555 -0
  237. pcapkit/protocols/data/transport/udp.py +29 -0
  238. pcapkit/protocols/internet/NotImplemented/ecn.py +0 -0
  239. pcapkit/protocols/internet/NotImplemented/esp.py +97 -0
  240. pcapkit/protocols/internet/NotImplemented/icmp.py +0 -0
  241. pcapkit/protocols/internet/NotImplemented/icmpv6.py +0 -0
  242. pcapkit/protocols/internet/NotImplemented/igmp.py +0 -0
  243. pcapkit/protocols/internet/NotImplemented/shim6.py +0 -0
  244. pcapkit/protocols/internet/__init__.py +43 -0
  245. pcapkit/protocols/internet/ah.py +275 -0
  246. pcapkit/protocols/internet/hip.py +4727 -0
  247. pcapkit/protocols/internet/hopopt.py +1879 -0
  248. pcapkit/protocols/internet/internet.py +240 -0
  249. pcapkit/protocols/internet/ip.py +51 -0
  250. pcapkit/protocols/internet/ipsec.py +50 -0
  251. pcapkit/protocols/internet/ipv4.py +1782 -0
  252. pcapkit/protocols/internet/ipv6.py +361 -0
  253. pcapkit/protocols/internet/ipv6_frag.py +258 -0
  254. pcapkit/protocols/internet/ipv6_opts.py +1890 -0
  255. pcapkit/protocols/internet/ipv6_route.py +710 -0
  256. pcapkit/protocols/internet/ipx.py +230 -0
  257. pcapkit/protocols/internet/mh.py +2764 -0
  258. pcapkit/protocols/link/NotImplemented/dsl.py +0 -0
  259. pcapkit/protocols/link/NotImplemented/eapol.py +1 -0
  260. pcapkit/protocols/link/NotImplemented/fddi.py +0 -0
  261. pcapkit/protocols/link/NotImplemented/isdn.py +0 -0
  262. pcapkit/protocols/link/NotImplemented/ndp.py +0 -0
  263. pcapkit/protocols/link/NotImplemented/ppp.py +0 -0
  264. pcapkit/protocols/link/__init__.py +35 -0
  265. pcapkit/protocols/link/arp.py +421 -0
  266. pcapkit/protocols/link/ethernet.py +248 -0
  267. pcapkit/protocols/link/l2tp.py +267 -0
  268. pcapkit/protocols/link/link.py +140 -0
  269. pcapkit/protocols/link/ospf.py +342 -0
  270. pcapkit/protocols/link/rarp.py +82 -0
  271. pcapkit/protocols/link/vlan.py +225 -0
  272. pcapkit/protocols/misc/__init__.py +37 -0
  273. pcapkit/protocols/misc/null.py +129 -0
  274. pcapkit/protocols/misc/pcap/__init__.py +17 -0
  275. pcapkit/protocols/misc/pcap/frame.py +478 -0
  276. pcapkit/protocols/misc/pcap/header.py +358 -0
  277. pcapkit/protocols/misc/pcapng.py +5520 -0
  278. pcapkit/protocols/misc/raw.py +180 -0
  279. pcapkit/protocols/protocol.py +1216 -0
  280. pcapkit/protocols/schema/__init__.py +140 -0
  281. pcapkit/protocols/schema/application/__init__.py +40 -0
  282. pcapkit/protocols/schema/application/ftp.py +21 -0
  283. pcapkit/protocols/schema/application/httpv1.py +21 -0
  284. pcapkit/protocols/schema/application/httpv2.py +384 -0
  285. pcapkit/protocols/schema/internet/__init__.py +294 -0
  286. pcapkit/protocols/schema/internet/ah.py +40 -0
  287. pcapkit/protocols/schema/internet/hip.py +1184 -0
  288. pcapkit/protocols/schema/internet/hopopt.py +679 -0
  289. pcapkit/protocols/schema/internet/ipv4.py +576 -0
  290. pcapkit/protocols/schema/internet/ipv6.py +63 -0
  291. pcapkit/protocols/schema/internet/ipv6_frag.py +48 -0
  292. pcapkit/protocols/schema/internet/ipv6_opts.py +680 -0
  293. pcapkit/protocols/schema/internet/ipv6_route.py +198 -0
  294. pcapkit/protocols/schema/internet/ipx.py +40 -0
  295. pcapkit/protocols/schema/internet/mh.py +718 -0
  296. pcapkit/protocols/schema/link/__init__.py +19 -0
  297. pcapkit/protocols/schema/link/arp.py +39 -0
  298. pcapkit/protocols/schema/link/ethernet.py +51 -0
  299. pcapkit/protocols/schema/link/l2tp.py +88 -0
  300. pcapkit/protocols/schema/link/ospf.py +90 -0
  301. pcapkit/protocols/schema/link/vlan.py +69 -0
  302. pcapkit/protocols/schema/misc/__init__.py +108 -0
  303. pcapkit/protocols/schema/misc/null.py +18 -0
  304. pcapkit/protocols/schema/misc/pcap/__init__.py +10 -0
  305. pcapkit/protocols/schema/misc/pcap/frame.py +51 -0
  306. pcapkit/protocols/schema/misc/pcap/header.py +63 -0
  307. pcapkit/protocols/schema/misc/pcapng.py +1689 -0
  308. pcapkit/protocols/schema/misc/raw.py +24 -0
  309. pcapkit/protocols/schema/schema.py +809 -0
  310. pcapkit/protocols/schema/transport/__init__.py +69 -0
  311. pcapkit/protocols/schema/transport/tcp.py +928 -0
  312. pcapkit/protocols/schema/transport/udp.py +90 -0
  313. pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
  314. pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
  315. pcapkit/protocols/transport/NotImplemented/sctp.py +0 -0
  316. pcapkit/protocols/transport/__init__.py +27 -0
  317. pcapkit/protocols/transport/tcp.py +3025 -0
  318. pcapkit/protocols/transport/transport.py +158 -0
  319. pcapkit/protocols/transport/udp.py +214 -0
  320. pcapkit/py.typed +0 -0
  321. pcapkit/toolkit/__init__.py +57 -0
  322. pcapkit/toolkit/dpkt.py +306 -0
  323. pcapkit/toolkit/pcap.py +212 -0
  324. pcapkit/toolkit/pcapng.py +251 -0
  325. pcapkit/toolkit/pyshark.py +99 -0
  326. pcapkit/toolkit/scapy.py +297 -0
  327. pcapkit/utilities/__init__.py +20 -0
  328. pcapkit/utilities/compat.py +196 -0
  329. pcapkit/utilities/decorators.py +192 -0
  330. pcapkit/utilities/exceptions.py +365 -0
  331. pcapkit/utilities/logging.py +55 -0
  332. pcapkit/utilities/warnings.py +185 -0
  333. pcapkit/vendor/__init__.py +105 -0
  334. pcapkit/vendor/__main__.py +92 -0
  335. pcapkit/vendor/arp/__init__.py +27 -0
  336. pcapkit/vendor/arp/hardware.py +29 -0
  337. pcapkit/vendor/arp/operation.py +29 -0
  338. pcapkit/vendor/default.py +474 -0
  339. pcapkit/vendor/ftp/__init__.py +27 -0
  340. pcapkit/vendor/ftp/command.py +244 -0
  341. pcapkit/vendor/ftp/return_code.py +256 -0
  342. pcapkit/vendor/hip/__init__.py +94 -0
  343. pcapkit/vendor/hip/certificate.py +29 -0
  344. pcapkit/vendor/hip/cipher.py +29 -0
  345. pcapkit/vendor/hip/di.py +29 -0
  346. pcapkit/vendor/hip/ecdsa_curve.py +29 -0
  347. pcapkit/vendor/hip/ecdsa_low_curve.py +29 -0
  348. pcapkit/vendor/hip/eddsa_curve.py +85 -0
  349. pcapkit/vendor/hip/esp_transform_suite.py +29 -0
  350. pcapkit/vendor/hip/group.py +87 -0
  351. pcapkit/vendor/hip/hi_algorithm.py +29 -0
  352. pcapkit/vendor/hip/hit_suite.py +29 -0
  353. pcapkit/vendor/hip/nat_traversal.py +29 -0
  354. pcapkit/vendor/hip/notify_message.py +29 -0
  355. pcapkit/vendor/hip/packet.py +88 -0
  356. pcapkit/vendor/hip/parameter.py +88 -0
  357. pcapkit/vendor/hip/registration.py +29 -0
  358. pcapkit/vendor/hip/registration_failure.py +29 -0
  359. pcapkit/vendor/hip/suite.py +29 -0
  360. pcapkit/vendor/hip/transport.py +29 -0
  361. pcapkit/vendor/http/__init__.py +39 -0
  362. pcapkit/vendor/http/error_code.py +95 -0
  363. pcapkit/vendor/http/frame.py +91 -0
  364. pcapkit/vendor/http/method.py +167 -0
  365. pcapkit/vendor/http/setting.py +93 -0
  366. pcapkit/vendor/http/status_code.py +185 -0
  367. pcapkit/vendor/ipv4/__init__.py +57 -0
  368. pcapkit/vendor/ipv4/classification_level.py +91 -0
  369. pcapkit/vendor/ipv4/option_class.py +80 -0
  370. pcapkit/vendor/ipv4/option_number.py +105 -0
  371. pcapkit/vendor/ipv4/protection_authority.py +84 -0
  372. pcapkit/vendor/ipv4/qs_function.py +78 -0
  373. pcapkit/vendor/ipv4/router_alert.py +93 -0
  374. pcapkit/vendor/ipv4/tos_del.py +78 -0
  375. pcapkit/vendor/ipv4/tos_ecn.py +95 -0
  376. pcapkit/vendor/ipv4/tos_pre.py +84 -0
  377. pcapkit/vendor/ipv4/tos_rel.py +78 -0
  378. pcapkit/vendor/ipv4/tos_thr.py +77 -0
  379. pcapkit/vendor/ipv4/ts_flag.py +79 -0
  380. pcapkit/vendor/ipv6/__init__.py +53 -0
  381. pcapkit/vendor/ipv6/extension_header.py +171 -0
  382. pcapkit/vendor/ipv6/option.py +104 -0
  383. pcapkit/vendor/ipv6/option_action.py +90 -0
  384. pcapkit/vendor/ipv6/qs_function.py +78 -0
  385. pcapkit/vendor/ipv6/router_alert.py +93 -0
  386. pcapkit/vendor/ipv6/routing.py +87 -0
  387. pcapkit/vendor/ipv6/seed_id.py +81 -0
  388. pcapkit/vendor/ipv6/smf_dpd_mode.py +78 -0
  389. pcapkit/vendor/ipv6/tagger_id.py +81 -0
  390. pcapkit/vendor/ipx/__init__.py +37 -0
  391. pcapkit/vendor/ipx/packet.py +123 -0
  392. pcapkit/vendor/ipx/socket.py +125 -0
  393. pcapkit/vendor/l2tp/__init__.py +21 -0
  394. pcapkit/vendor/l2tp/type.py +78 -0
  395. pcapkit/vendor/mh/__init__.py +204 -0
  396. pcapkit/vendor/mh/access_type.py +87 -0
  397. pcapkit/vendor/mh/ack_status_code.py +88 -0
  398. pcapkit/vendor/mh/ani_suboption.py +88 -0
  399. pcapkit/vendor/mh/auth_subtype.py +83 -0
  400. pcapkit/vendor/mh/binding_ack_flag.py +148 -0
  401. pcapkit/vendor/mh/binding_error.py +78 -0
  402. pcapkit/vendor/mh/binding_revocation.py +87 -0
  403. pcapkit/vendor/mh/binding_update_flag.py +147 -0
  404. pcapkit/vendor/mh/cga_extension.py +91 -0
  405. pcapkit/vendor/mh/cga_sec.py +91 -0
  406. pcapkit/vendor/mh/cga_type.py +74 -0
  407. pcapkit/vendor/mh/dhcp_support_mode.py +77 -0
  408. pcapkit/vendor/mh/dns_status_code.py +87 -0
  409. pcapkit/vendor/mh/dsmip6_tls_packet.py +87 -0
  410. pcapkit/vendor/mh/dsmipv6_home_address.py +87 -0
  411. pcapkit/vendor/mh/enumerating_algorithm.py +82 -0
  412. pcapkit/vendor/mh/fb_ack_status.py +87 -0
  413. pcapkit/vendor/mh/fb_action.py +88 -0
  414. pcapkit/vendor/mh/fb_indication_trigger.py +87 -0
  415. pcapkit/vendor/mh/fb_type.py +88 -0
  416. pcapkit/vendor/mh/flow_id_status.py +87 -0
  417. pcapkit/vendor/mh/flow_id_suboption.py +87 -0
  418. pcapkit/vendor/mh/handoff_type.py +87 -0
  419. pcapkit/vendor/mh/handover_ack_flag.py +143 -0
  420. pcapkit/vendor/mh/handover_ack_status.py +87 -0
  421. pcapkit/vendor/mh/handover_initiate_flag.py +143 -0
  422. pcapkit/vendor/mh/handover_initiate_status.py +87 -0
  423. pcapkit/vendor/mh/home_address_reply.py +87 -0
  424. pcapkit/vendor/mh/lla_code.py +97 -0
  425. pcapkit/vendor/mh/lma_mag_suboption.py +88 -0
  426. pcapkit/vendor/mh/mn_group_id.py +87 -0
  427. pcapkit/vendor/mh/mn_id_subtype.py +87 -0
  428. pcapkit/vendor/mh/operator_id.py +87 -0
  429. pcapkit/vendor/mh/option.py +83 -0
  430. pcapkit/vendor/mh/packet.py +82 -0
  431. pcapkit/vendor/mh/qos_attribute.py +87 -0
  432. pcapkit/vendor/mh/revocation_status_code.py +87 -0
  433. pcapkit/vendor/mh/revocation_trigger.py +87 -0
  434. pcapkit/vendor/mh/status_code.py +91 -0
  435. pcapkit/vendor/mh/traffic_selector.py +87 -0
  436. pcapkit/vendor/mh/upa_status.py +87 -0
  437. pcapkit/vendor/mh/upn_reason.py +87 -0
  438. pcapkit/vendor/ospf/__init__.py +27 -0
  439. pcapkit/vendor/ospf/authentication.py +29 -0
  440. pcapkit/vendor/ospf/packet.py +29 -0
  441. pcapkit/vendor/pcapng/__init__.py +51 -0
  442. pcapkit/vendor/pcapng/block_type.py +94 -0
  443. pcapkit/vendor/pcapng/filter_type.py +77 -0
  444. pcapkit/vendor/pcapng/hash_algorithm.py +82 -0
  445. pcapkit/vendor/pcapng/option_type.py +287 -0
  446. pcapkit/vendor/pcapng/record_type.py +81 -0
  447. pcapkit/vendor/pcapng/secrets_type.py +81 -0
  448. pcapkit/vendor/pcapng/verdict_type.py +79 -0
  449. pcapkit/vendor/reg/__init__.py +34 -0
  450. pcapkit/vendor/reg/apptype.py +338 -0
  451. pcapkit/vendor/reg/ethertype.py +121 -0
  452. pcapkit/vendor/reg/linktype.py +110 -0
  453. pcapkit/vendor/reg/transtype.py +111 -0
  454. pcapkit/vendor/tcp/__init__.py +35 -0
  455. pcapkit/vendor/tcp/checksum.py +80 -0
  456. pcapkit/vendor/tcp/flags.py +149 -0
  457. pcapkit/vendor/tcp/mp_tcp_option.py +90 -0
  458. pcapkit/vendor/tcp/option.py +103 -0
  459. pcapkit/vendor/vlan/__init__.py +23 -0
  460. pcapkit/vendor/vlan/priority_level.py +97 -0
  461. pypcapkit-1.3.3.post1.dist-info/LICENSE +29 -0
  462. pypcapkit-1.3.3.post1.dist-info/METADATA +236 -0
  463. pypcapkit-1.3.3.post1.dist-info/RECORD +466 -0
  464. pypcapkit-1.3.3.post1.dist-info/WHEEL +5 -0
  465. pypcapkit-1.3.3.post1.dist-info/entry_points.txt +3 -0
  466. pypcapkit-1.3.3.post1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+ """header schema for data link layer protocols"""
3
+
4
+ from pcapkit.protocols.schema.link.arp import ARP
5
+ from pcapkit.protocols.schema.link.ethernet import Ethernet
6
+ from pcapkit.protocols.schema.link.l2tp import L2TP
7
+ from pcapkit.protocols.schema.link.ospf import OSPF
8
+ from pcapkit.protocols.schema.link.ospf import \
9
+ CrytographicAuthentication as OSPF_CrytographicAuthentication
10
+ from pcapkit.protocols.schema.link.vlan import TCI as VLAN_TCI
11
+ from pcapkit.protocols.schema.link.vlan import VLAN
12
+
13
+ __all__ = [
14
+ 'ARP',
15
+ 'Ethernet',
16
+ 'L2TP',
17
+ 'OSPF', 'OSPF_CrytographicAuthentication',
18
+ 'VLAN', 'VLAN_TCI',
19
+ ]
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for (inverse) address resolution protocol family"""
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from pcapkit.const.arp.hardware import Hardware as Enum_Hardware
8
+ from pcapkit.const.arp.operation import Operation as Enum_Operation
9
+ from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
10
+ from pcapkit.corekit.fields.misc import PayloadField
11
+ from pcapkit.corekit.fields.numbers import EnumField, UInt8Field
12
+ from pcapkit.corekit.fields.strings import BytesField
13
+ from pcapkit.protocols.schema.schema import Schema, schema_final
14
+
15
+ __all__ = ['ARP']
16
+
17
+ if TYPE_CHECKING:
18
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
19
+
20
+
21
+ @schema_final
22
+ class ARP(Schema):
23
+ """Header schema for ARP packet."""
24
+
25
+ htype: 'Enum_Hardware' = EnumField(length=2, namespace=Enum_Hardware)
26
+ ptype: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType)
27
+ hlen: 'int' = UInt8Field()
28
+ plen: 'int' = UInt8Field()
29
+ oper: 'Enum_Operation' = EnumField(length=2, namespace=Enum_Operation)
30
+ sha: 'bytes' = BytesField(length=lambda pkt: pkt['hlen'])
31
+ spa: 'bytes' = BytesField(length=lambda pkt: pkt['plen'])
32
+ tha: 'bytes' = BytesField(length=lambda pkt: pkt['hlen'])
33
+ tpa: 'bytes' = BytesField(length=lambda pkt: pkt['plen'])
34
+ payload: 'bytes' = PayloadField()
35
+
36
+ if TYPE_CHECKING:
37
+ def __init__(self, htype: 'int', ptype: 'int', hlen: 'int', plen: 'int',
38
+ oper: 'int', sha: 'bytes', spa: 'bytes', tha: 'bytes',
39
+ tpa: 'bytes', payload: 'bytes | Protocol | Schema') -> 'None': ...
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for ethernet protocol"""
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
8
+ from pcapkit.corekit.fields.misc import PayloadField
9
+ from pcapkit.corekit.fields.numbers import EnumField
10
+ from pcapkit.corekit.fields.strings import BytesField
11
+ from pcapkit.corekit.module import ModuleDescriptor
12
+ from pcapkit.protocols.schema.schema import Schema, schema_final
13
+
14
+ __all__ = ['Ethernet']
15
+
16
+ if TYPE_CHECKING:
17
+ from typing import Any
18
+
19
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
20
+
21
+
22
+ def callback_payload(self: 'PayloadField', packet: 'dict[str, Any]') -> 'None':
23
+ """Callback function for :attr:`Ethernet.payload`."""
24
+ from pcapkit.protocols.link.ethernet import Ethernet # pylint: disable=import-outside-toplevel
25
+
26
+ type_ = packet['type']
27
+ protocol = Ethernet.__proto__[type_]
28
+ if isinstance(protocol, ModuleDescriptor):
29
+ protocol = protocol.klass
30
+ self.protocol = protocol
31
+
32
+
33
+ @schema_final
34
+ class Ethernet(Schema):
35
+ """Header schema for ethernet packet."""
36
+
37
+ #: Destination MAC address.
38
+ dst: 'bytes' = BytesField(length=6)
39
+ #: Source MAC address.
40
+ src: 'bytes' = BytesField(length=6)
41
+ #: Protocol (internet layer).
42
+ type: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType)
43
+ #: Payload.
44
+ payload: 'bytes' = PayloadField(
45
+ length=lambda pkt: pkt['__length__'],
46
+ callback=callback_payload,
47
+ )
48
+
49
+ if TYPE_CHECKING:
50
+ def __init__(self, dst: 'bytes', src: 'bytes', type: 'Enum_EtherType',
51
+ payload: 'bytes | Protocol | Schema') -> 'None': ...
@@ -0,0 +1,88 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for L2TP protocol"""
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from pcapkit.corekit.fields.misc import ConditionalField, PayloadField
8
+ from pcapkit.corekit.fields.numbers import UInt16Field
9
+ from pcapkit.corekit.fields.strings import BitField, PaddingField
10
+ from pcapkit.protocols.schema.schema import Schema, schema_final
11
+ from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING
12
+
13
+ __all__ = ['L2TP']
14
+
15
+ if TYPE_CHECKING:
16
+ from typing import Optional
17
+
18
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
19
+
20
+ if SPHINX_TYPE_CHECKING:
21
+ from typing_extensions import Literal, TypedDict
22
+
23
+ class FlagsType(TypedDict):
24
+ """Flags of L2TP packet."""
25
+
26
+ #: Type of L2TP packet.
27
+ type: int
28
+ #: Length of L2TP packet.
29
+ len: int
30
+ #: Sequence number of L2TP packet.
31
+ seq: int
32
+ #: Offset size of L2TP packet.
33
+ offset: int
34
+ #: Priority of L2TP packet.
35
+ prio: int
36
+ #: Version of L2TP packet.
37
+ version: Literal[2]
38
+
39
+
40
+ @schema_final
41
+ class L2TP(Schema):
42
+ """Header schema for L2TP packet."""
43
+
44
+ #: Flags and version of L2TP packet.
45
+ flags: 'FlagsType' = BitField(length=2, namespace={
46
+ 'type': (0, 1),
47
+ 'len': (1, 1),
48
+ 'seq': (4, 1),
49
+ 'offset': (6, 1),
50
+ 'prio': (7, 1),
51
+ 'version': (12, 4),
52
+ })
53
+ #: Length of L2TP packet.
54
+ length: 'int' = ConditionalField(
55
+ UInt16Field(),
56
+ lambda packet: packet['flags']['len'],
57
+ )
58
+ #: Tunnel ID of L2TP packet.
59
+ tunnel_id: 'int' = UInt16Field()
60
+ #: Session ID of L2TP packet.
61
+ session_id: 'int' = UInt16Field()
62
+ #: Sequence number of L2TP packet.
63
+ ns: 'int' = ConditionalField(
64
+ UInt16Field(),
65
+ lambda packet: packet['flags']['seq'],
66
+ )
67
+ #: Next sequence number of L2TP packet.
68
+ nr: 'int' = ConditionalField(
69
+ UInt16Field(),
70
+ lambda packet: packet['flags']['seq'],
71
+ )
72
+ #: Offset size of L2TP packet.
73
+ offset: 'int' = ConditionalField(
74
+ UInt16Field(),
75
+ lambda packet: packet['flags']['offset'],
76
+ )
77
+ #: Padding of L2TP packet.
78
+ padding: 'bytes' = ConditionalField(
79
+ PaddingField(length=lambda pkt: pkt['offset']),
80
+ lambda packet: packet['flags']['offset'],
81
+ )
82
+ #: Payload of L2TP packet.
83
+ payload: 'bytes' = PayloadField()
84
+
85
+ if TYPE_CHECKING:
86
+ def __init__(self, flags: 'FlagsType', length: 'Optional[int]', tunnel_id: 'int',
87
+ session_id: 'int', ns: 'Optional[int]', nr: 'Optional[int]',
88
+ offset: 'Optional[int]', payload: 'bytes | Protocol | Schema') -> 'None': ...
@@ -0,0 +1,90 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for OSPF protocol"""
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from pcapkit.const.ospf.authentication import Authentication as Enum_Authentication
8
+ from pcapkit.const.ospf.packet import Packet as Enum_Packet
9
+ from pcapkit.corekit.fields.ipaddress import IPv4AddressField
10
+ from pcapkit.corekit.fields.misc import PayloadField, SchemaField, SwitchField
11
+ from pcapkit.corekit.fields.numbers import EnumField, UInt8Field, UInt16Field, UInt32Field
12
+ from pcapkit.corekit.fields.strings import BytesField, PaddingField
13
+ from pcapkit.protocols.schema.schema import Schema, schema_final
14
+
15
+ __all__ = ['OSPF', 'CrytographicAuthentication']
16
+
17
+ if TYPE_CHECKING:
18
+ from ipaddress import IPv4Address
19
+ from typing import Any
20
+
21
+ from pcapkit.corekit.fields.field import FieldBase as Field
22
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
23
+
24
+
25
+ def ospf_auth_data_selector(pkt: 'dict[str, Any]') -> 'Field':
26
+ """Selector function for :attr:`OSPF.auth_data` field.
27
+
28
+ Args:
29
+ pkt: Packet data.
30
+
31
+ Returns:
32
+ * If :attr:`OSPF.auth_type` is 2, a :class:`~pcapkit.corekit.fields.misc.SchemaField`
33
+ wrapped :class:`~pcapkit.protocols.schema.link.ospf.CrytographicAuthentication` instance.
34
+ * Otherwise, a :class:`~pcapkit.corekit.fields.strings.BytesField` instance.
35
+
36
+ """
37
+ if pkt['auth_type'] == Enum_Authentication.Cryptographic_authentication:
38
+ return SchemaField(length=8, schema=CrytographicAuthentication)
39
+ return BytesField(length=8)
40
+
41
+
42
+ @schema_final
43
+ class CrytographicAuthentication(Schema):
44
+ """Header schema for OSPF cryptographic authentication."""
45
+
46
+ #: Reserved bytes.
47
+ reserved: 'bytes' = PaddingField(length=2)
48
+ #: Key ID.
49
+ key_id: 'int' = UInt8Field()
50
+ #: Length.
51
+ len: 'int' = UInt8Field()
52
+ #: Sequence number.
53
+ seq: 'int' = UInt32Field()
54
+
55
+ if TYPE_CHECKING:
56
+ def __init__(self, key_id: 'int', len: 'int', seq: 'int') -> 'None': ...
57
+
58
+
59
+ @schema_final
60
+ class OSPF(Schema):
61
+ """Header schema for OSPF packet."""
62
+
63
+ #: Version.
64
+ version: 'int' = UInt8Field()
65
+ #: Type.
66
+ type: 'Enum_Packet' = EnumField(length=1, namespace=Enum_Packet)
67
+ #: Length.
68
+ length: 'int' = UInt16Field()
69
+ #: Router ID.
70
+ router_id: 'IPv4Address' = IPv4AddressField()
71
+ #: Area ID.
72
+ area_id: 'IPv4Address' = IPv4AddressField()
73
+ #: Checksum.
74
+ checksum: 'bytes' = BytesField(length=2)
75
+ #: Authentication type.
76
+ auth_type: 'Enum_Authentication' = EnumField(length=2, namespace=Enum_Authentication)
77
+ #: Authentication data.
78
+ auth_data: 'bytes | CrytographicAuthentication' = SwitchField(
79
+ selector=ospf_auth_data_selector,
80
+ )
81
+ #: Payload.
82
+ payload: 'bytes' = PayloadField()
83
+
84
+ if TYPE_CHECKING:
85
+ def __init__(self, version: 'int', type: 'Enum_Packet', length: 'int',
86
+ router_id: 'IPv4Address | bytes | str | int',
87
+ area_id: 'IPv4Address | bytes | str | int',
88
+ checksum: 'bytes', auth_type: 'Enum_Authentication',
89
+ auth_data: 'bytes | CrytographicAuthentication',
90
+ payload: 'bytes | Protocol | Schema') -> 'None': ...
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for 802.1Q Customer VLAN Tag Type protocol"""
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
8
+ from pcapkit.const.vlan.priority_level import PriorityLevel as Enum_PriorityLevel
9
+ from pcapkit.corekit.fields.misc import PayloadField
10
+ from pcapkit.corekit.fields.numbers import EnumField, UInt8Field, UInt16Field
11
+ from pcapkit.corekit.fields.strings import BitField
12
+ from pcapkit.protocols.schema.schema import Schema, schema_final
13
+ from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING
14
+
15
+ __all__ = ['VLAN', 'TCI']
16
+
17
+ if TYPE_CHECKING:
18
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
19
+
20
+ if SPHINX_TYPE_CHECKING:
21
+ from typing_extensions import TypedDict
22
+
23
+ class TCIType(TypedDict):
24
+ """Type of 802.1Q Customer VLAN Tag Type tag control information."""
25
+
26
+ #: Priority code point.
27
+ pcp: int
28
+ #: Drop eligible indicator.
29
+ dei: int
30
+ #: VLAN identifier.
31
+ vid: int
32
+
33
+
34
+ @schema_final
35
+ class TCI(Schema):
36
+ """Header schema for 802.1Q Customer VLAN Tag Type tag control information."""
37
+
38
+ #: Priority code point.
39
+ pcp: 'Enum_PriorityLevel' = EnumField(length=1, bit_length=3, namespace=Enum_PriorityLevel)
40
+ #: Drop eligible indicator.
41
+ dei: 'int' = UInt8Field(bit_length=1)
42
+ #: VLAN identifier.
43
+ vid: 'int' = UInt16Field(bit_length=12)
44
+
45
+ if TYPE_CHECKING:
46
+ def __init__(self, pcp: 'Enum_PriorityLevel', dei: 'int', vid: 'int') -> 'None': ...
47
+
48
+
49
+ @schema_final
50
+ class VLAN(Schema):
51
+ """Header schema for 802.1Q Customer VLAN Tag Type packet."""
52
+
53
+ #: Tag control information.
54
+ tci: 'TCIType' = BitField(
55
+ length=2,
56
+ namespace={
57
+ 'pcp': (0, 3),
58
+ 'dei': (3, 1),
59
+ 'vid': (4, 12),
60
+ },
61
+ )
62
+ #: EtherType.
63
+ type: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType)
64
+ #: Payload.
65
+ payload: 'bytes' = PayloadField()
66
+
67
+ if TYPE_CHECKING:
68
+ def __init__(self, tci: 'TCIType', type: 'Enum_EtherType',
69
+ payload: 'bytes | Protocol | Schema') -> 'None': ...
@@ -0,0 +1,108 @@
1
+ # -*- coding: utf-8 -*-
2
+ """header schema for utility protocols"""
3
+
4
+ # PCAP file format
5
+ from pcapkit.protocols.schema.misc.pcap import *
6
+
7
+ # PCAP-NG file format
8
+ from pcapkit.protocols.schema.misc.pcapng import UnknownSecrets as PCAPNG_UnknownSecrets
9
+ from pcapkit.protocols.schema.misc.pcapng import BlockType as PCAPNG_BlockType
10
+ from pcapkit.protocols.schema.misc.pcapng import PCAPNG
11
+ from pcapkit.protocols.schema.misc.pcapng import CommentOption as PCAPNG_CommentOption
12
+ from pcapkit.protocols.schema.misc.pcapng import CustomBlock as PCAPNG_CustomBlock
13
+ from pcapkit.protocols.schema.misc.pcapng import CustomOption as PCAPNG_CustomOption
14
+ from pcapkit.protocols.schema.misc.pcapng import \
15
+ DecryptionSecretsBlock as PCAPNG_DecryptionSecretsBlock
16
+ from pcapkit.protocols.schema.misc.pcapng import DSBSecrets as PCAPNG_DSBSecrets
17
+ from pcapkit.protocols.schema.misc.pcapng import EndOfOption as PCAPNG_EndOfOption
18
+ from pcapkit.protocols.schema.misc.pcapng import EndRecord as PCAPNG_EndRecord
19
+ from pcapkit.protocols.schema.misc.pcapng import EnhancedPacketBlock as PCAPNG_EnhancedPacketBlock
20
+ from pcapkit.protocols.schema.misc.pcapng import EPB_DropCountOption as PCAPNG_EPB_DropCountOption
21
+ from pcapkit.protocols.schema.misc.pcapng import EPB_FlagsOption as PCAPNG_EPB_FlagsOption
22
+ from pcapkit.protocols.schema.misc.pcapng import EPB_HashOption as PCAPNG_EPB_HashOption
23
+ from pcapkit.protocols.schema.misc.pcapng import EPB_PacketIDOption as PCAPNG_EPB_PacketIDOption
24
+ from pcapkit.protocols.schema.misc.pcapng import EPB_QueueOption as PCAPNG_EPB_QueueOption
25
+ from pcapkit.protocols.schema.misc.pcapng import EPB_VerdictOption as PCAPNG_EPB_VerdictOption
26
+ from pcapkit.protocols.schema.misc.pcapng import IF_DescriptionOption as PCAPNG_IF_DescriptionOption
27
+ from pcapkit.protocols.schema.misc.pcapng import IF_EUIAddrOption as PCAPNG_IF_EUIAddrOption
28
+ from pcapkit.protocols.schema.misc.pcapng import IF_FCSLenOption as PCAPNG_IF_FCSLenOption
29
+ from pcapkit.protocols.schema.misc.pcapng import IF_FilterOption as PCAPNG_IF_FilterOption
30
+ from pcapkit.protocols.schema.misc.pcapng import IF_HardwareOption as PCAPNG_IF_HardwareOption
31
+ from pcapkit.protocols.schema.misc.pcapng import IF_IPv4AddrOption as PCAPNG_IF_IPv4AddrOption
32
+ from pcapkit.protocols.schema.misc.pcapng import IF_IPv6AddrOption as PCAPNG_IF_IPv6AddrOption
33
+ from pcapkit.protocols.schema.misc.pcapng import IF_MACAddrOption as PCAPNG_IF_MACAddrOption
34
+ from pcapkit.protocols.schema.misc.pcapng import IF_NameOption as PCAPNG_IF_NameOption
35
+ from pcapkit.protocols.schema.misc.pcapng import IF_OSOption as PCAPNG_IF_OSOption
36
+ from pcapkit.protocols.schema.misc.pcapng import IF_RxSpeedOption as PCAPNG_IF_RxSpeedOption
37
+ from pcapkit.protocols.schema.misc.pcapng import IF_SpeedOption as PCAPNG_IF_SpeedOption
38
+ from pcapkit.protocols.schema.misc.pcapng import IF_TSOffsetOption as PCAPNG_IF_TSOffsetOption
39
+ from pcapkit.protocols.schema.misc.pcapng import IF_TSResolOption as PCAPNG_IF_TSResolOption
40
+ from pcapkit.protocols.schema.misc.pcapng import IF_TxSpeedOption as PCAPNG_IF_TxSpeedOption
41
+ from pcapkit.protocols.schema.misc.pcapng import IF_TZoneOption as PCAPNG_IF_TZoneOption
42
+ from pcapkit.protocols.schema.misc.pcapng import \
43
+ InterfaceDescriptionBlock as PCAPNG_InterfaceDescriptionBlock
44
+ from pcapkit.protocols.schema.misc.pcapng import \
45
+ InterfaceStatisticsBlock as PCAPNG_InterfaceStatisticsBlock
46
+ from pcapkit.protocols.schema.misc.pcapng import IPv4Record as PCAPNG_IPv4Record
47
+ from pcapkit.protocols.schema.misc.pcapng import IPv6Record as PCAPNG_IPv6Record
48
+ from pcapkit.protocols.schema.misc.pcapng import ISB_EndTimeOption as PCAPNG_ISB_EndTimeOption
49
+ from pcapkit.protocols.schema.misc.pcapng import \
50
+ ISB_FilterAcceptOption as PCAPNG_ISB_FilterAcceptOption
51
+ from pcapkit.protocols.schema.misc.pcapng import ISB_IFDropOption as PCAPNG_ISB_IFDropOption
52
+ from pcapkit.protocols.schema.misc.pcapng import ISB_IFRecvOption as PCAPNG_ISB_IFRecvOption
53
+ from pcapkit.protocols.schema.misc.pcapng import ISB_OSDropOption as PCAPNG_ISB_OSDropOption
54
+ from pcapkit.protocols.schema.misc.pcapng import ISB_StartTimeOption as PCAPNG_ISB_StartTimeOption
55
+ from pcapkit.protocols.schema.misc.pcapng import ISB_UsrDelivOption as PCAPNG_ISB_UsrDelivOption
56
+ from pcapkit.protocols.schema.misc.pcapng import NameResolutionBlock as PCAPNG_NameResolutionBlock
57
+ from pcapkit.protocols.schema.misc.pcapng import NameResolutionRecord as PCAPNG_NameResolutionRecord
58
+ from pcapkit.protocols.schema.misc.pcapng import NS_DNSIP4AddrOption as PCAPNG_NS_DNSIP4AddrOption
59
+ from pcapkit.protocols.schema.misc.pcapng import NS_DNSIP6AddrOption as PCAPNG_NS_DNSIP6AddrOption
60
+ from pcapkit.protocols.schema.misc.pcapng import NS_DNSNameOption as PCAPNG_NS_DNSNameOption
61
+ from pcapkit.protocols.schema.misc.pcapng import Option as PCAPNG_Option
62
+ from pcapkit.protocols.schema.misc.pcapng import SectionHeaderBlock as PCAPNG_SectionHeaderBlock
63
+ from pcapkit.protocols.schema.misc.pcapng import SimplePacketBlock as PCAPNG_SimplePacketBlock
64
+ from pcapkit.protocols.schema.misc.pcapng import \
65
+ SystemdJournalExportBlock as PCAPNG_SystemdJournalExportBlock
66
+ from pcapkit.protocols.schema.misc.pcapng import TLSKeyLog as PCAPNG_TLSKeyLog
67
+ from pcapkit.protocols.schema.misc.pcapng import UnknownBlock as PCAPNG_UnknownBlock
68
+ from pcapkit.protocols.schema.misc.pcapng import UnknownOption as PCAPNG_UnknownOption
69
+ from pcapkit.protocols.schema.misc.pcapng import UnknownRecord as PCAPNG_UnknownRecord
70
+ from pcapkit.protocols.schema.misc.pcapng import WireGuardKeyLog as PCAPNG_WireGuardKeyLog
71
+ from pcapkit.protocols.schema.misc.pcapng import ZigBeeAPSKey as PCAPNG_ZigBeeAPSKey
72
+ from pcapkit.protocols.schema.misc.pcapng import ZigBeeNWKKey as PCAPNG_ZigBeeNWKKey
73
+
74
+ # misc protocols
75
+ from pcapkit.protocols.schema.misc.raw import Raw
76
+ from pcapkit.protocols.schema.misc.null import NoPayload
77
+
78
+ __all__ = [
79
+ # PCAP file format
80
+ 'Header',
81
+ 'Frame',
82
+
83
+ # PCAP-NG file format
84
+ 'PCAPNG',
85
+ 'PCAPNG_Option', 'PCAPNG_UnknownOption',
86
+ 'PCAPNG_EndOfOption', 'PCAPNG_CommentOption', 'PCAPNG_CustomOption',
87
+ 'PCAPNG_IF_NameOption', 'PCAPNG_IF_DescriptionOption', 'PCAPNG_IF_IPv4AddrOption', 'PCAPNG_IF_IPv6AddrOption',
88
+ 'PCAPNG_IF_MACAddrOption', 'PCAPNG_IF_EUIAddrOption', 'PCAPNG_IF_SpeedOption', 'PCAPNG_IF_TSResolOption',
89
+ 'PCAPNG_IF_TZoneOption', 'PCAPNG_IF_FilterOption', 'PCAPNG_IF_OSOption', 'PCAPNG_IF_FCSLenOption',
90
+ 'PCAPNG_IF_TSOffsetOption', 'PCAPNG_IF_HardwareOption', 'PCAPNG_IF_TxSpeedOption', 'PCAPNG_IF_RxSpeedOption',
91
+ 'PCAPNG_EPB_FlagsOption', 'PCAPNG_EPB_HashOption', 'PCAPNG_EPB_DropCountOption', 'PCAPNG_EPB_PacketIDOption',
92
+ 'PCAPNG_EPB_QueueOption', 'PCAPNG_EPB_VerdictOption',
93
+ 'PCAPNG_NS_DNSNameOption', 'PCAPNG_NS_DNSIP4AddrOption', 'PCAPNG_NS_DNSIP6AddrOption',
94
+ 'PCAPNG_ISB_StartTimeOption', 'PCAPNG_ISB_EndTimeOption', 'PCAPNG_ISB_IFRecvOption', 'PCAPNG_ISB_IFDropOption',
95
+ 'PCAPNG_ISB_FilterAcceptOption', 'PCAPNG_ISB_OSDropOption', 'PCAPNG_ISB_UsrDelivOption',
96
+ 'PCAPNG_NameResolutionRecord', 'PCAPNG_UnknownRecord', 'PCAPNG_EndRecord', 'PCAPNG_IPv4Record', 'PCAPNG_IPv6Record',
97
+ 'PCAPNG_DSBSecrets', 'PCAPNG_UnknownSecrets', 'PCAPNG_TLSKeyLog', 'PCAPNG_WireGuardKeyLog', 'PCAPNG_ZigBeeNWKKey',
98
+ 'PCAPNG_ZigBeeAPSKey',
99
+ 'PCAPNG_BlockType',
100
+ 'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock',
101
+ 'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock',
102
+ 'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock',
103
+ 'PCAPNG_CustomBlock',
104
+
105
+ # misc protocols
106
+ 'NoPayload',
107
+ 'Raw',
108
+ ]
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for empty payload"""
4
+
5
+ from pcapkit.protocols.schema.schema import Schema, schema_final
6
+
7
+ __all__ = ['NoPayload']
8
+
9
+
10
+ @schema_final
11
+ class NoPayload(Schema):
12
+ """Schema for empty payload."""
13
+
14
+ # NOTE: We add this method for both type annotation and to mark that this
15
+ # class accepts no arguments at runtime, since :class:`Schema` explicitly
16
+ # skipped those whose :attr:`__dict__` is empty :obj:`dict`.
17
+ def __init__(self) -> 'None': # pylint: disable=super-init-not-called
18
+ pass
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+ """header schema for PCAP file format"""
3
+
4
+ from pcapkit.protocols.schema.misc.pcap.header import Header
5
+ from pcapkit.protocols.schema.misc.pcap.frame import Frame
6
+
7
+ __all__ = [
8
+ 'Header',
9
+ 'Frame',
10
+ ]
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for frame header of PCAP file format"""
4
+
5
+ import sys
6
+ from typing import TYPE_CHECKING
7
+
8
+ from pcapkit.corekit.fields.misc import PayloadField
9
+ from pcapkit.corekit.fields.numbers import UInt32Field
10
+ from pcapkit.protocols.schema.schema import Schema, schema_final
11
+
12
+ __all__ = ['Frame']
13
+
14
+ if TYPE_CHECKING:
15
+ from typing import Any
16
+
17
+ from pcapkit.corekit.fields.numbers import NumberField as Field
18
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
19
+
20
+
21
+ def byteorder_callback(field: 'Field', packet: 'dict[str, Any]') -> 'None':
22
+ """Update byte order of PCAP file.
23
+
24
+ Args:
25
+ field: Field instance.
26
+ packet: Packet data.
27
+
28
+ """
29
+ field._byteorder = packet.get('byteorder', sys.byteorder)
30
+
31
+
32
+ @schema_final
33
+ class Frame(Schema):
34
+ """Frame header of PCAP file format."""
35
+
36
+ __payload__ = 'packet'
37
+
38
+ #: Timestamp seconds.
39
+ ts_sec: 'int' = UInt32Field(callback=byteorder_callback)
40
+ #: Timestamp microseconds.
41
+ ts_usec: 'int' = UInt32Field(callback=byteorder_callback)
42
+ #: Number of octets of packet saved in file.
43
+ incl_len: 'int' = UInt32Field(callback=byteorder_callback)
44
+ #: Actual length of packet.
45
+ orig_len: 'int' = UInt32Field(callback=byteorder_callback)
46
+ #: Payload.
47
+ packet: 'bytes' = PayloadField(length=lambda pkt: pkt['incl_len'])
48
+
49
+ if TYPE_CHECKING:
50
+ def __init__(self, ts_sec: 'int', ts_usec: 'int', incl_len: 'int',
51
+ orig_len: 'int', packet: 'bytes | Protocol | Schema') -> 'None': ...
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+ # mypy: disable-error-code=assignment
3
+ """header schema for global header of PCAP file format"""
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from pcapkit.const.reg.linktype import LinkType as Enum_LinkType
8
+ from pcapkit.corekit.fields.numbers import EnumField, Int32Field, UInt16Field, UInt32Field
9
+ from pcapkit.corekit.fields.strings import BytesField
10
+ from pcapkit.protocols.schema.schema import Schema, schema_final
11
+ from pcapkit.utilities.exceptions import ProtocolError
12
+
13
+ __all__ = ['Header']
14
+
15
+ if TYPE_CHECKING:
16
+ from typing import Any
17
+
18
+ from pcapkit.corekit.fields.numbers import NumberField
19
+
20
+
21
+ def magic_number_callback(field: 'NumberField', packet: 'dict[str, Any]') -> 'None':
22
+ """Calculate byte order of PCAP file.
23
+
24
+ Args:
25
+ field: Field instance.
26
+ packet: Packet data.
27
+
28
+ """
29
+ magic_number = packet['magic_number']
30
+ if magic_number == b'\xd4\xc3\xb2\xa1':
31
+ field._byteorder = 'little'
32
+ elif magic_number == b'\xa1\xb2\xc3\xd4':
33
+ field._byteorder = 'big'
34
+ elif magic_number == b'\x4d\x3c\xb2\xa1':
35
+ field._byteorder = 'little'
36
+ elif magic_number == b'\xa1\xb2\x3c\x4d':
37
+ field._byteorder = 'big'
38
+ else:
39
+ raise ProtocolError('invalid magic number')
40
+
41
+
42
+ @schema_final
43
+ class Header(Schema):
44
+ """Global header of PCAP file."""
45
+
46
+ #: Magic number.
47
+ magic_number: 'bytes' = BytesField(length=4)
48
+ #: Version number major.
49
+ version_major: 'int' = UInt16Field(callback=magic_number_callback)
50
+ #: Version number minor.
51
+ version_minor: 'int' = UInt16Field(callback=magic_number_callback)
52
+ #: GMT to local correction.
53
+ thiszone: 'int' = Int32Field(callback=magic_number_callback)
54
+ #: Accuracy of timestamps.
55
+ sigfigs: 'int' = UInt32Field(callback=magic_number_callback)
56
+ #: Max length of captured packets, in octets.
57
+ snaplen: 'int' = UInt32Field(callback=magic_number_callback)
58
+ #: Data link type.
59
+ network: 'Enum_LinkType' = EnumField(length=4, namespace=Enum_LinkType, callback=magic_number_callback)
60
+
61
+ if TYPE_CHECKING:
62
+ def __init__(self, magic_number: 'bytes', version_major: 'int', version_minor: 'int', # pylint: disable=unused-argument,super-init-not-called,multiple-statements
63
+ thiszone: 'int', sigfigs: 'int', snaplen: 'int', network: 'int') -> 'None': ...