pypcapkit 1.3.1.post18__pp310-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 +314 -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 +32673 -0
  120. pcapkit/const/reg/ethertype.py +714 -0
  121. pcapkit/const/reg/linktype.py +902 -0
  122. pcapkit/const/reg/transtype.py +520 -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 +195 -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.1.post18.dist-info/LICENSE +29 -0
  462. pypcapkit-1.3.1.post18.dist-info/METADATA +236 -0
  463. pypcapkit-1.3.1.post18.dist-info/RECORD +466 -0
  464. pypcapkit-1.3.1.post18.dist-info/WHEEL +5 -0
  465. pypcapkit-1.3.1.post18.dist-info/entry_points.txt +3 -0
  466. pypcapkit-1.3.1.post18.dist-info/top_level.txt +1 -0
@@ -0,0 +1,196 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ import sys
4
+ from typing import TYPE_CHECKING
5
+
6
+ if TYPE_CHECKING:
7
+ from typing import Any, Callable, Iterator, Optional, Type, Union
8
+
9
+ __all__ = [
10
+ # functions
11
+ 'final', 'localcontext', 'show_flag_values',
12
+
13
+ # exceptions
14
+ 'ModuleNotFoundError',
15
+
16
+ # classes
17
+ 'Collection', 'cached_property',
18
+ 'StrEnum',
19
+
20
+ # modules
21
+ 'pathlib',
22
+
23
+ # typing
24
+ 'Mapping', 'Tuple', 'List', 'Dict', 'TypeAlias',
25
+ ]
26
+
27
+ if sys.version_info < (3, 6):
28
+ class ModuleNotFoundError(ImportError): # pylint: disable=redefined-builtin
29
+ """Module not found."""
30
+ else:
31
+ from builtins import ModuleNotFoundError
32
+
33
+ if sys.version_info <= (3, 5):
34
+ from collections.abc import Container, Iterable, Sized # pylint: disable=unused-import
35
+
36
+ def _check_methods(C: 'Type[Any]', *methods: 'str') -> 'bool | Any':
37
+ mro = C.__mro__
38
+ for method in methods:
39
+ for B in mro:
40
+ if method in B.__dict__:
41
+ if B.__dict__[method] is None:
42
+ return NotImplemented
43
+ break
44
+ else:
45
+ return NotImplemented
46
+ return True
47
+
48
+ class Collection(Sized, Iterable, Container): # pylint: disable=abstract-method
49
+
50
+ __slots__ = ()
51
+
52
+ @classmethod
53
+ def __subclasshook__(cls, C: 'Type[Any]') -> 'bool | Any':
54
+ if cls is Collection:
55
+ return _check_methods(C, "__len__", "__iter__", "__contains__")
56
+ return NotImplemented
57
+ else:
58
+ from collections.abc import Collection
59
+
60
+ if sys.version_info <= (3, 4):
61
+ import pathlib2 as pathlib # pylint: disable=import-error
62
+ else:
63
+ import pathlib
64
+
65
+ # functools.cached_property added in 3.8
66
+ if sys.version_info < (3, 8):
67
+ from threading import RLock
68
+ from typing import Generic, TypeVar # isort: split
69
+
70
+ _T = TypeVar("_T")
71
+ _S = TypeVar("_S")
72
+
73
+ _NOT_FOUND = object()
74
+
75
+ class cached_property(Generic[_T]):
76
+ def __init__(self, func: 'Callable[[Any], _T]') -> 'None':
77
+ self.func = func # type: Callable[[Any], _T]
78
+ self.attrname = None # type: Optional[str]
79
+ self.__doc__ = func.__doc__
80
+ self.lock = RLock()
81
+
82
+ def __set_name__(self, owner: 'Type[Any]', name: 'str') -> 'None':
83
+ if self.attrname is None:
84
+ self.attrname = name
85
+ elif name != self.attrname:
86
+ raise TypeError(
87
+ "Cannot assign the same cached_property to two different names "
88
+ f"({self.attrname!r} and {name!r})."
89
+ )
90
+
91
+ def __get__(self, instance: 'Optional[_S]',
92
+ owner: 'Optional[Type[Any]]' = None) -> 'Union[cached_property[_T], _T]':
93
+ if instance is None:
94
+ return self
95
+ if self.attrname is None:
96
+ raise TypeError(
97
+ "Cannot use cached_property instance without calling __set_name__ on it.")
98
+ try:
99
+ cache = instance.__dict__
100
+ except AttributeError: # not all objects have __dict__ (e.g. class defines slots)
101
+ msg = (
102
+ f"No '__dict__' attribute on {type(instance).__name__!r} "
103
+ f"instance to cache {self.attrname!r} property."
104
+ )
105
+ raise TypeError(msg) from None
106
+ val = cache.get(self.attrname, _NOT_FOUND)
107
+ if val is _NOT_FOUND:
108
+ with self.lock:
109
+ # check if another thread filled cache while we awaited lock
110
+ val = cache.get(self.attrname, _NOT_FOUND)
111
+ if val is _NOT_FOUND:
112
+ val = self.func(instance)
113
+ try:
114
+ cache[self.attrname] = val
115
+ except TypeError:
116
+ msg = (
117
+ f"The '__dict__' attribute on {type(instance).__name__!r} instance "
118
+ f"does not support item assignment for caching {self.attrname!r} property."
119
+ )
120
+ raise TypeError(msg) from None
121
+ return val
122
+ else:
123
+ from functools import cached_property
124
+
125
+ if sys.version_info < (3, 9):
126
+ from typing import Dict, List, Mapping, Tuple
127
+ else:
128
+ from collections.abc import Mapping
129
+
130
+ Tuple: 'TypeAlias' = tuple
131
+ List: 'TypeAlias' = list
132
+ Dict: 'TypeAlias' = dict
133
+
134
+ if sys.version_info < (3, 11):
135
+ from aenum import StrEnum
136
+ else:
137
+ from enum import StrEnum
138
+
139
+ if sys.version_info < (3, 8):
140
+ from typing_extensions import final
141
+ else:
142
+ from typing import final
143
+
144
+ if sys.version_info < (3, 11):
145
+ from contextlib import contextmanager
146
+ from decimal import localcontext as _localcontext
147
+
148
+ if TYPE_CHECKING:
149
+ from decimal import Context
150
+ from types import TracebackType
151
+
152
+ class _ContextManager:
153
+ def __init__(self, new_context: Context) -> None: ...
154
+ def __enter__(self) -> Context: ...
155
+ def __exit__(self, t: type[BaseException] | None, v: BaseException | None, tb: TracebackType | None) -> None: ...
156
+
157
+ @contextmanager
158
+ def localcontext(ctx: 'Optional[Context]' = None, **kwargs: 'Any') -> '_ContextManager':
159
+ """Return a context manager that will set the default context to a copy
160
+ of ctx on entry to the with-statement and restore the previous default
161
+ context when exiting the with-statement. If no context is specified, a
162
+ copy of the current default context is used."""
163
+ with _localcontext(ctx) as lc:
164
+ for attr, value in kwargs.items():
165
+ setattr(lc, attr, value)
166
+ yield lc
167
+ else:
168
+ from decimal import localcontext
169
+
170
+ if sys.version_info < (3, 11):
171
+ from enum import Enum
172
+
173
+ if TYPE_CHECKING:
174
+ from enum import IntFlag
175
+
176
+ def _iter_bits_lsb(num: 'int') -> 'Iterator[int]':
177
+ # num must be a positive integer
178
+ original = num
179
+ if isinstance(num, Enum):
180
+ num = num.value
181
+ if num < 0:
182
+ raise ValueError('%r is not a positive integer' % original)
183
+ while num:
184
+ b = num & (~num + 1)
185
+ yield b
186
+ num ^= b
187
+
188
+ def show_flag_values(value: 'IntFlag') -> 'list[int]':
189
+ return list(_iter_bits_lsb(value))
190
+ else:
191
+ from enum import show_flag_values # type: ignore[attr-defined]
192
+
193
+ if sys.version_info < (3, 10):
194
+ from typing_extensions import TypeAlias
195
+ else:
196
+ from typing import TypeAlias
@@ -0,0 +1,195 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=protected-access
3
+ """Decorator Functions
4
+ =========================
5
+
6
+ .. module:: pcapkit.utilities.decorators
7
+
8
+ :mod:`pcapkit.utilities.decorators` contains several useful
9
+ decorators, including :func:`~pcapkit.utilities.decorators.seekset`,
10
+ :func:`~pcapkit.utilities.decorators.beholder` and
11
+ :func:`~pcapkit.utilities.decorators.prepare`.
12
+
13
+ """
14
+ import functools
15
+ import io
16
+ import os
17
+ import traceback
18
+ from typing import TYPE_CHECKING, cast
19
+
20
+ from pcapkit.utilities.exceptions import StructError, stacklevel
21
+ from pcapkit.utilities.logging import DEVMODE, VERBOSE, logger
22
+
23
+ if TYPE_CHECKING:
24
+ from typing import IO, Any, Callable, Optional, Type, TypeVar
25
+
26
+ from typing_extensions import Concatenate, ParamSpec
27
+
28
+ from pcapkit.protocols.protocol import ProtocolBase as Protocol
29
+ from pcapkit.protocols.schema.schema import Schema
30
+
31
+ P = ParamSpec('P')
32
+ R_seekset = TypeVar('R_seekset')
33
+ R_beholder = TypeVar('R_beholder', bound=Protocol)
34
+ R_prepare = TypeVar('R_prepare', bound=Schema)
35
+
36
+ __all__ = ['seekset', 'beholder', 'prepare']
37
+
38
+
39
+ def seekset(func: 'Callable[Concatenate[Protocol, P], R_seekset]') -> 'Callable[P, R_seekset]':
40
+ """Read file from start then set back to original.
41
+
42
+ Important:
43
+ This decorator function is designed for decorating *class methods*.
44
+
45
+ The decorator will keep the current offset of :attr:`self._file <pcapkit.protocols.protocol.Protocol._file>`,
46
+ then call the decorated function. Afterwards, it will rewind the offset of
47
+ :attr:`self._file <pcapkit.protocols.protocol.Protocol._file>` to the original and returns the return value from
48
+ the decorated function.
49
+
50
+ Note:
51
+ The decorated function should have following signature::
52
+
53
+ func(self: 'pcapkit.protocols.protocol.ProtocolBase',
54
+ *args: 'typing.Any', **kwargs: 'typing.Any') -> 'typing.Any'
55
+
56
+ See Also:
57
+ :meth:`pcapkit.protocols.protocol.Protocol._read_packet`
58
+
59
+ :param func: decorated function
60
+ :meta decorator:
61
+ """
62
+ @functools.wraps(func)
63
+ def seekcur(*args: 'P.args', **kw: 'P.kwargs') -> 'R_seekset':
64
+ # extract self object
65
+ self = cast('Protocol', args[0])
66
+
67
+ # move file pointer
68
+ seek_cur = self._file.tell()
69
+ self._file.seek(self._seekset, os.SEEK_SET)
70
+
71
+ # call method
72
+ return_ = func(*args, **kw)
73
+
74
+ # reset file pointer
75
+ self._file.seek(seek_cur, os.SEEK_SET)
76
+ return return_
77
+ return seekcur
78
+
79
+
80
+ def beholder(func: 'Callable[Concatenate[Protocol, int, Optional[int], P], R_beholder]') -> 'Callable[P, R_beholder]':
81
+ """Behold extraction procedure.
82
+
83
+ Important:
84
+ This decorator function is designed for decorating *class methods*.
85
+
86
+ This decorator first keep the current offset of
87
+ :attr:`self._file <pcapkit.protocols.protocol.Protocol._file>`, then
88
+ try to call the decorated function. Should any exception raised, it will
89
+ re-parse the :attr:`self._file <pcapkit.protocols.protocol.Protocol._file>`
90
+ as :class:`~pcapkit.protocols.misc.raw.Raw` protocol.
91
+
92
+ Note:
93
+ The decorated function should have following signature::
94
+
95
+ func(self: 'pcapkit.protocols.protocol.ProtocolBase',
96
+ proto: 'int', length: 'typing.Optional[int]',
97
+ *args: 'typing.Any', **kwargs: 'typing.Any') -> 'pcapkit.protocols.protocol.ProtocolBase'
98
+
99
+ See Also:
100
+ :meth:`pcapkit.protocols.protocol.Protocol._decode_next_layer`
101
+
102
+ :param func: decorated function
103
+ :meta decorator:
104
+ """
105
+ @functools.wraps(func)
106
+ def behold(*args: 'P.args', **kwargs: 'P.kwargs') -> 'R_beholder':
107
+ # extract self object & args
108
+ self = cast('R_beholder', args[0])
109
+ try:
110
+ length = cast('int', args[2])
111
+ except IndexError:
112
+ length = None
113
+
114
+ # record file pointer
115
+ try:
116
+ # call method
117
+ return func(*args, **kwargs)
118
+ except Exception as exc:
119
+ if isinstance(exc, StructError) and exc.eof: # pylint: disable=no-member
120
+ from pcapkit.protocols.misc.null import NoPayload as protocol # isort: skip # pylint: disable=import-outside-toplevel
121
+ else:
122
+ from pcapkit.protocols.misc.raw import Raw as protocol # type: ignore[assignment] # isort: skip # pylint: disable=import-outside-toplevel
123
+ # error = traceback.format_exc(limit=1).strip().rsplit(os.linesep, maxsplit=1)[-1]
124
+
125
+ # log error
126
+ logger.error(str(exc), exc_info=exc, stack_info=DEVMODE, stacklevel=stacklevel())
127
+ if VERBOSE:
128
+ traceback.print_exc()
129
+
130
+ file_ = self.__header__.get_payload()
131
+ next_ = protocol(file_, length, error=str(exc))
132
+ return cast('R_beholder', next_)
133
+ return behold
134
+
135
+
136
+ def prepare(func: 'Callable[Concatenate[Type[R_prepare], bytes | IO[bytes], Optional[int], Optional[dict[str, Any]], P], R_prepare]') -> 'Callable[P, R_prepare]':
137
+ """Prepare schema packet data before unpacking.
138
+
139
+ Important:
140
+ This decorate function is designed for decorating the
141
+ :meth:`Schema.unpack <pcapkit.protocols.schema.schema.Schema.unpack>`
142
+ *class method*.
143
+
144
+ This decorator will revise the parameter list provided to the original
145
+ :meth:`Schema.unpack <pcapkit.protocols.schema.schema.Schema.unpack>` method
146
+ and extract necessary information based on the given parameters, then provide
147
+ the revised version of parameter list to the original method.
148
+
149
+ Note:
150
+ The decorated function should have following signature::
151
+
152
+ func(cls: 'typing.Type[pcapkit.protocols.schema.schema.Schema]',
153
+ data: 'bytes | typing.IO[bytes]',
154
+ length: 'Optional[int],
155
+ packet: 'Optional[dict[str, Any]',
156
+ *args: 'typing.Any', **kwargs: 'Any') -> 'pcapkit.protocols.schema.schema.Schema'
157
+
158
+ See Also:
159
+ :meth:`pcapkit.protocols.schema.schema.Schema.unpack`
160
+
161
+ :param func: decorated function
162
+ :meta decorator:
163
+ """
164
+ @functools.wraps(func)
165
+ def unpack(*args: 'P.args', **kwargs: 'P.kwargs') -> 'R_prepare':
166
+ cls = cast('Type[R_prepare]', args[0])
167
+ data = cast('bytes | IO[bytes]', args[1])
168
+ length = cast('Optional[int]', args[2])
169
+ packet = cast('Optional[dict[str, Any]]', args[3])
170
+
171
+ if isinstance(data, bytes):
172
+ length = len(data) if length is None else length
173
+ data = io.BytesIO(data)
174
+ else:
175
+ if length is None:
176
+ current = data.tell()
177
+ length = data.seek(0, io.SEEK_END) - current
178
+ data.seek(current)
179
+
180
+ if length == 0:
181
+ raise EOFError
182
+
183
+ if packet is None:
184
+ packet = {}
185
+ packet['__length__'] = length
186
+
187
+ # call the user customised preparation method
188
+ # then proceed with the unpacking process
189
+ # and eventually revise the schema data
190
+ cls.pre_unpack(packet)
191
+ schema = func(cls, data, length, packet)
192
+ ret = schema.post_process(packet)
193
+
194
+ return cast('R_prepare', ret)
195
+ return unpack