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,37 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import, wrong-import-position
3
+ """:class:`~pcapkit.protocols.internet.ipx.IPX` Vendor Crawlers
4
+ ==================================================================
5
+
6
+ .. module:: pcapkit.vendor.ipx
7
+
8
+ This module contains all vendor crawlers of
9
+ :class:`~pcapkit.protocols.internet.ipx.IPX` implementations. Available
10
+ crawlers include:
11
+
12
+ .. list-table::
13
+
14
+ * - :class:`IPX_Packet <pcapkit.vendor.ipx.packet.Packet>`
15
+ - IPX Packet Types [*]_
16
+ * - :class:`IPX_Socket <pcapkit.vendor.ipx.socket.Socket>`
17
+ - IPX Socket Types [*]_
18
+
19
+ .. [*] https://en.wikipedia.org/wiki/Internetwork_Packet_Exchange#IPX_packet_structure
20
+ .. [*] https://en.wikipedia.org/wiki/Internetwork_Packet_Exchange#Socket_number
21
+
22
+ """
23
+
24
+ ###############################################################################
25
+ import sys
26
+
27
+ path = sys.path.pop(0)
28
+ ###############################################################################
29
+
30
+ from pcapkit.vendor.ipx.packet import Packet as IPX_Packet
31
+ from pcapkit.vendor.ipx.socket import Socket as IPX_Socket
32
+
33
+ ###############################################################################
34
+ sys.path.insert(0, path)
35
+ ###############################################################################
36
+
37
+ __all__ = ['IPX_Packet', 'IPX_Socket']
@@ -0,0 +1,123 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=wrong-import-position
3
+ """IPX Packet Types
4
+ ======================
5
+
6
+ .. module:: pcapkit.vendor.ipx.packet
7
+
8
+ This module contains the vendor crawler for **IPX Packet Types**,
9
+ which is automatically generating :class:`pcapkit.const.ipx.packet.Packet`.
10
+
11
+ """
12
+
13
+ ###############################################################################
14
+ # NOTE: fix duplicated name of ``socket```
15
+ import sys
16
+
17
+ path = sys.path.pop(0)
18
+ ###############################################################################
19
+
20
+ import collections
21
+ import re
22
+ from typing import TYPE_CHECKING
23
+
24
+ import bs4
25
+
26
+ from pcapkit.vendor.default import Vendor
27
+
28
+ if TYPE_CHECKING:
29
+ from collections import Counter
30
+
31
+ from bs4 import BeautifulSoup
32
+
33
+ ###############################################################################
34
+ sys.path.insert(0, path)
35
+ ###############################################################################
36
+
37
+ __all__ = ['Packet']
38
+
39
+
40
+ class Packet(Vendor):
41
+ """IPX Packet Types"""
42
+
43
+ #: Value limit checker.
44
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
45
+ #: Link to registry.
46
+ LINK = 'https://en.wikipedia.org/wiki/Internetwork_Packet_Exchange#IPX_packet_structure'
47
+
48
+ def count(self, data: 'BeautifulSoup') -> 'Counter[str]':
49
+ """Count field records.
50
+
51
+ Args:
52
+ data: Registry data.
53
+
54
+ Returns:
55
+ Field recordings.
56
+
57
+ """
58
+ return collections.Counter()
59
+
60
+ def request(self, text: 'str') -> 'BeautifulSoup': # type: ignore[override] # pylint: disable=signature-differs
61
+ """Fetch HTML source.
62
+
63
+ Args:
64
+ text: Context from :attr:`~Vendor.LINK`.
65
+
66
+ Returns:
67
+ Parsed HTML source.
68
+
69
+ """
70
+ return bs4.BeautifulSoup(text, 'html5lib')
71
+
72
+ def process(self, soup: 'BeautifulSoup') -> 'tuple[list[str], list[str]]': # pylint: disable=arguments-differ,arguments-renamed
73
+ """Process HTML source.
74
+
75
+ Args:
76
+ data: Parsed HTML source.
77
+
78
+ Returns:
79
+ Enumeration fields and missing fields.
80
+
81
+ """
82
+ table = soup.find_all('table', class_='wikitable')[1]
83
+ content = filter(lambda item: isinstance(item, bs4.element.Tag), table.tbody)
84
+ next(content) # header
85
+
86
+ enum = [] # type: list[str]
87
+ miss = [
88
+ "return extend_enum(cls, 'Unassigned_%d' % value, value)",
89
+ ]
90
+ for item in content:
91
+ line = item.find_all('td')
92
+
93
+ pval = ''.join(line[0].stripped_strings)
94
+ desc = ''.join(line[1].stripped_strings)
95
+
96
+ split = desc.split(' (', 1)
97
+ if len(split) == 2:
98
+ name = split[0]
99
+ cmmt = re.sub(r'RFC (\d+)', r'[:rfc:`\1`]', re.sub(r',([^ ])', r', \1', split[1].replace(')', '', 1)))
100
+ else:
101
+ name, cmmt = desc, ''
102
+ renm = self.safe_name(name)
103
+
104
+ if cmmt:
105
+ name = f'``{name}``'
106
+ tmp1 = f', {cmmt}'
107
+ else:
108
+ tmp1 = ''
109
+ desc = self.wrap_comment(f'{name}{tmp1}')
110
+
111
+ pres = f"{renm} = {pval}"
112
+ sufs = f'#: {desc}'
113
+
114
+ # if len(pres) > 74:
115
+ # sufs = f"\n{' '*80}{sufs}"
116
+
117
+ # enum.append(f'{pres.ljust(76)}{sufs}')
118
+ enum.append(f'{sufs}\n {pres}')
119
+ return enum, miss
120
+
121
+
122
+ if __name__ == '__main__':
123
+ sys.exit(Packet()) # type: ignore[arg-type]
@@ -0,0 +1,125 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=wrong-import-position
3
+ """Socket Types
4
+ ==================
5
+
6
+ .. module:: pcapkit.vendor.ipx.socket
7
+
8
+ This module contains the vendor crawler for **Socket Types**,
9
+ which is automatically generating :class:`pcapkit.const.ipx.socket.Socket`.
10
+
11
+ """
12
+
13
+ ###############################################################################
14
+ # NOTE: fix duplicated name of ``socket```
15
+ import sys
16
+
17
+ path = sys.path.pop(0)
18
+ ###############################################################################
19
+
20
+ import collections
21
+ import re
22
+ from typing import TYPE_CHECKING
23
+
24
+ import bs4
25
+
26
+ from pcapkit.vendor.default import Vendor
27
+
28
+ if TYPE_CHECKING:
29
+ from collections import Counter
30
+
31
+ from bs4 import BeautifulSoup
32
+
33
+ ###############################################################################
34
+ sys.path.insert(0, path)
35
+ ###############################################################################
36
+
37
+ __all__ = ['Socket']
38
+
39
+
40
+ class Socket(Vendor):
41
+ """Socket Types"""
42
+
43
+ #: Value limit checker.
44
+ FLAG = 'isinstance(value, int) and 0x0000 <= value <= 0xFFFF'
45
+ #: Link to registry.
46
+ LINK = 'https://en.wikipedia.org/wiki/Internetwork_Packet_Exchange#Socket_number'
47
+
48
+ def count(self, data: 'BeautifulSoup') -> 'Counter[str]':
49
+ """Count field records.
50
+
51
+ Args:
52
+ data: Registry data.
53
+
54
+ Returns:
55
+ Field recordings.
56
+
57
+ """
58
+ return collections.Counter()
59
+
60
+ def request(self, text: 'str') -> 'BeautifulSoup': # type: ignore[override] # pylint: disable=signature-differs
61
+ """Fetch HTML source.
62
+
63
+ Args:
64
+ text: Context from :attr:`~Vendor.LINK`.
65
+
66
+ Returns:
67
+ Parsed HTML source.
68
+
69
+ """
70
+ return bs4.BeautifulSoup(text, 'html5lib')
71
+
72
+ def process(self, soup: 'BeautifulSoup') -> 'tuple[list[str], list[str]]': # pylint: disable=arguments-differ,arguments-renamed
73
+ """Process HTML source.
74
+
75
+ Args:
76
+ data: Parsed HTML source.
77
+
78
+ Returns:
79
+ Enumeration fields and missing fields.
80
+
81
+ """
82
+ table = soup.find_all('table', class_='wikitable')[3]
83
+ content = filter(lambda item: isinstance(item, bs4.element.Tag), table.tbody)
84
+ next(content) # header
85
+
86
+ enum = [] # type: list[str]
87
+ miss = [] # type: list[str]
88
+ for item in content:
89
+ line = item.find_all('td')
90
+
91
+ pval = ' '.join(line[0].stripped_strings)
92
+ dscp = ' '.join(line[1].stripped_strings)
93
+
94
+ data = list(filter(None, map(lambda s: s.strip(), re.split(r'\W*,|\(|\)\W*', dscp))))
95
+ if len(data) == 2:
96
+ name, desc = data
97
+ else:
98
+ name, desc = dscp, ''
99
+ renm = self.safe_name(name)
100
+
101
+ tmp1 = f', {desc}' if desc else ''
102
+ desc = self.wrap_comment(f'{name}{tmp1}')
103
+
104
+ try:
105
+ code, _ = pval, int(pval, base=16)
106
+
107
+ pres = f"{renm} = {code}"
108
+ sufs = f'#: {desc}'
109
+
110
+ # if len(pres) > 74:
111
+ # sufs = f"\n{' '*80}{sufs}"
112
+
113
+ # enum.append(f'{pres.ljust(76)}{sufs}')
114
+ enum.append(f'{sufs}\n {pres}')
115
+ except ValueError:
116
+ start, stop = pval.split('–')
117
+
118
+ miss.append(f'if {start} <= value <= {stop}:')
119
+ miss.append(f' #: {desc}')
120
+ miss.append(f" return extend_enum(cls, '{name}_0x%s' % hex(value)[2:].upper().zfill(4), value)")
121
+ return enum, miss
122
+
123
+
124
+ if __name__ == '__main__':
125
+ sys.exit(Socket()) # type: ignore[arg-type]
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import
3
+ """:class:`~pcapkit.protocols.link.l2tp.L2TP` Vendor Crawlers
4
+ ================================================================
5
+
6
+ .. module:: pcapkit.vendor.l2tp
7
+
8
+ This module contains all vendor crawlers of
9
+ :class:`~pcapkit.protocols.link.l2tp.L2TP` implementations. Available
10
+ enumerations include:
11
+
12
+ .. list-table::
13
+
14
+ * - :class:`L2TP_Type <pcapkit.vendor.l2tp.type.Type>`
15
+ - L2TP Types
16
+
17
+ """
18
+
19
+ from pcapkit.vendor.l2tp.type import Type as L2TP_Type
20
+
21
+ __all__ = ['L2TP_Type']
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*-
2
+ """L2TP Type
3
+ ===============
4
+
5
+ .. module:: pcapkit.vendor.l2tp.type
6
+
7
+ This module contains the vendor crawler for **L2TP Type**,
8
+ which is automatically generating :class:`pcapkit.const.l2tp.type.Type`.
9
+
10
+ """
11
+
12
+ import collections
13
+ import sys
14
+ from typing import TYPE_CHECKING
15
+
16
+ from pcapkit.vendor.default import Vendor
17
+
18
+ if TYPE_CHECKING:
19
+ from collections import Counter
20
+
21
+ __all__ = ['Type']
22
+
23
+ #: L2TP packet types.
24
+ DATA = {
25
+ 0: 'Control',
26
+ 1: 'Data',
27
+ } # type: dict[int, str]
28
+
29
+
30
+ class Type(Vendor):
31
+ """L2TP Type"""
32
+
33
+ #: Value limit checker.
34
+ FLAG = 'isinstance(value, int) and 0 <= value <= 1'
35
+
36
+ def request(self) -> 'dict[int, str]': # type: ignore[override] # pylint: disable=arguments-differ
37
+ """Fetch registry data.
38
+
39
+ Returns:
40
+ TCP checksum options, i.e. :data:`~pcapkit.vendor.tcp.checksum.DATA`.
41
+
42
+ """
43
+ return DATA
44
+
45
+ def count(self, data: 'dict[int, str]') -> 'Counter[str]': # type: ignore[override]
46
+ """Count field records.
47
+
48
+ Args:
49
+ data: Registry data.
50
+
51
+ Returns:
52
+ Field recordings.
53
+
54
+ """
55
+ return collections.Counter(map(self.safe_name, data.values()))
56
+
57
+ def process(self, data: 'dict[int, str]') -> 'tuple[list[str], list[str]]': # type: ignore[override] # pylint: disable=arguments-differ
58
+ """Process CSV data.
59
+
60
+ Args:
61
+ data: Registry data.
62
+
63
+ Returns:
64
+ Enumeration fields and missing fields.
65
+
66
+ """
67
+ enum = list()
68
+ miss = [
69
+ "return extend_enum(cls, 'Unassigned_%d' % value, value)",
70
+ ]
71
+ for code, name in data.items():
72
+ renm = self.rename(name, code) # type: ignore[arg-type]
73
+ enum.append(f"{renm} = {code}".ljust(76))
74
+ return enum, miss
75
+
76
+
77
+ if __name__ == '__main__':
78
+ sys.exit(Type()) # type: ignore[arg-type]
@@ -0,0 +1,204 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import
3
+ """:class:`~pcapkit.protocols.internet.mh.MH` Vendor Crawlers
4
+ ================================================================
5
+
6
+ .. module:: pcapkit.vendor.mh
7
+
8
+ This module contains all vendor crawlers of
9
+ :class:`~pcapkit.protocols.internet.mh.MH` implementations. Available
10
+ enumerations include:
11
+
12
+ .. list-table::
13
+
14
+ * - :class:`MH_Packet <pcapkit.vendor.mh.packet.Packet>`
15
+ - Mobility Header Types [*]_
16
+ * - :class:`MH_Option <pcapkit.vendor.mh.option.Option>`
17
+ - Mobility Options [*]_
18
+ * - :class:`MH_DNSStatusCode <pcapkit.vendor.mh.dns_status_code.DNSStatusCode>`
19
+ - Status Codes (DNS Update Mobility Option) [*]_
20
+ * - :class:`MH_ACKStatusCode <pcapkit.vendor.mh.ack_status_code.ACKStatusCode>`
21
+ - Pseudo Home Address Acknowledgement Status Codes [*]_
22
+ * - :class:`MH_MNIDSubtype <pcapkit.vendor.mh.mn_id_subtype.MNIDSubtype>`
23
+ - Mobile Node Identifier Option Subtypes [*]_
24
+ * - :class:`MH_StatusCode <pcapkit.vendor.mh.status_code.StatusCode>`
25
+ - Status Codes [*]_
26
+ * - :class:`MH_EnumeratingAlgorithm <pcapkit.vendor.mh.enumerating_algorithm.EnumeratingAlgorithm>`
27
+ - Enumerating Algorithms [*]_
28
+ * - :class:`MH_AuthSubtype <pcapkit.vendor.mh.auth_subtype.AuthSubtype>`
29
+ - Subtype Field of the MN-HA and MN-AAA Authentication Mobility Options [*]_
30
+ * - :class:`MH_HandoffType <pcapkit.vendor.mh.handoff_type.HandoffType>`
31
+ - Handoff Indicator Option Type Values [*]_
32
+ * - :class:`MH_AccessType <pcapkit.vendor.mh.access_type.AccessType>`
33
+ - Access Technology Type Option Type Values [*]_
34
+ * - :class:`MH_BindingUpdateFlag <pcapkit.vendor.mh.binding_update_flag.BindingUpdateFlag>`
35
+ - Binding Update Flags [*]_
36
+ * - :class:`MH_BindingACKFlag <pcapkit.vendor.mh.binding_ack_flag.BindingACKFlag>`
37
+ - Binding Acknowledgment Flags [*]_
38
+ * - :class:`MH_DSMIPv6HomeAddress <pcapkit.vendor.mh.dsmipv6_home_address.DSMIPv6HomeAddress>`
39
+ - Dual Stack MIPv6 (DSMIPv6) IPv4 Home Address Option Status Codes [*]_
40
+ * - :class:`MH_BindingRevocation <pcapkit.vendor.mh.binding_revocation.BindingRevocation>`
41
+ - Binding Revocation Type [*]_
42
+ * - :class:`MH_RevocationTrigger <pcapkit.vendor.mh.revocation_trigger.RevocationTrigger>`
43
+ - Revocation Trigger Values [*]_
44
+ * - :class:`MH_RevocationStatusCode <pcapkit.vendor.mh.revocation_status_code.RevocationStatusCode>`
45
+ - Binding Revocation Acknowledgement Status Codes [*]_
46
+ * - :class:`MH_HomeAddressReply <pcapkit.vendor.mh.home_address_reply.HomeAddressReply>`
47
+ - IPv4 Home Address Reply Status Codes [*]_
48
+ * - :class:`MH_DHCPSupportMode <pcapkit.vendor.mh.dhcp_support_mode.DHCPSupportMode>`
49
+ - IPv4 DHCP Support Mode Flags [*]_
50
+ * - :class:`MH_HandoverInitiateFlag <pcapkit.vendor.mh.handover_initiate_flag.HandoverInitiateFlag>`
51
+ - Handover Initiate Flags [*]_
52
+ * - :class:`MH_HandoverACKFlag <pcapkit.vendor.mh.handover_ack_flag.HandoverACKFlag>`
53
+ - Handover Acknowledge Flags [*]_
54
+ * - :class:`MH_HandoverACKStatus <pcapkit.vendor.mh.handover_ack_status.HandoverACKStatus>`
55
+ - Handover Initiate Status Codes [*]_
56
+ * - :class:`MH_HandoverACKStatus <pcapkit.vendor.mh.handover_ack_status.HandoverACKStatus>`
57
+ - Handover Acknowledge Status Codes [*]_
58
+ * - :class:`MH_FlowIDStatus <pcapkit.vendor.mh.flow_id_status.FlowIDStatus>`
59
+ - Flow Identification Mobility Option Status Codes [*]_
60
+ * - :class:`MH_FlowIDSuboption <pcapkit.vendor.mh.flow_id_suboption.FlowIDSuboption>`
61
+ - Flow Identification Sub-Options [*]_
62
+ * - :class:`MH_TrafficSelector <pcapkit.vendor.mh.traffic_selector.TrafficSelector>`
63
+ - Traffic Selector Format [*]_
64
+ * - :class:`MH_MNGroupID <pcapkit.vendor.mh.mn_group_id.MNGroupID>`
65
+ - Mobile Node Group Identifier Type Registry [*]_
66
+ * - :class:`MH_DSMIP6TLSPacket <pcapkit.vendor.mh.dsmip6_tls_packet.DSMIP6TLSPacket>`
67
+ - DSMIP6-TLS Packet Types Registry [*]_
68
+ * - :class:`MH_ANISuboption <pcapkit.vendor.mh.ani_suboption.ANISuboption>`
69
+ - Access Network Information (ANI) Sub-Option Type Values [*]_
70
+ * - :class:`MH_OperatorID <pcapkit.vendor.mh.operator_id.OperatorID>`
71
+ - Operator-Identifier Type Registry [*]_
72
+ * - :class:`MH_UpdateNotificationReason <pcapkit.vendor.mh.upn_reason.UpdateNotificationReason>`
73
+ - Update Notification Reasons Registry [*]_
74
+ * - :class:`MH_UpdateNotificationACKStatus <pcapkit.vendor.mh.upa_status.UpdateNotificationACKStatus>`
75
+ - Update Notification Acknowledgement Status Registry [*]_
76
+ * - :class:`MH_FlowBindingType <pcapkit.vendor.mh.fb_type.FlowBindingType>`
77
+ - Flow Binding Type [*]_
78
+ * - :class:`MH_FlowBindingIndicationTrigger <pcapkit.vendor.mh.fb_indication_trigger.FlowBindingIndicationTrigger>`
79
+ - Flow Binding Indication Triggers [*]_
80
+ * - :class:`MH_FlowBindingACKStatus <pcapkit.vendor.mh.fb_ack_status.FlowBindingACKStatus>`
81
+ - Flow Binding Acknowledgement Status Codes [*]_
82
+ * - :class:`MH_FlowBindingAction <pcapkit.vendor.mh.fb_action.FlowBindingAction>`
83
+ - Flow Binding Action Values [*]_
84
+ * - :class:`MH_QoSAttribute <pcapkit.vendor.mh.qos_attribute.QoSAttribute>`
85
+ - Quality-of-Service Attribute Registry [*]_
86
+ * - :class:`MH_LMAControlledMAGSuboption <pcapkit.vendor.mh.lma_mag_suboption.LMAControlledMAGSuboption>`
87
+ - LMA-Controlled MAG Parameters Sub-Option Type Values [*]_
88
+ * - :class:`MH_LLACode <pcapkit.vendor.mh.lla_code.LLACode>`
89
+ - Link-Layer Address (LLA) Option Code [*]_
90
+ * - :class:`MH_CGAType <pcapkit.vendor.mh.cga_type.CGAType>`
91
+ - CGA Extension Type Tags [*]_
92
+ * - :class:`MH_CGAExtension <pcapkit.vendor.mh.cga_type.CGAExtension>`
93
+ - CGA Extension Type Values [*]_
94
+ * - :class:`MH_CGASec <pcapkit.vendor.mh.cga_sec.CGASec>`
95
+ - CGA SEC [*]_
96
+ * - :class:`MH_BindingError <pcapkit.vendor.mh.binding_error.BindingError>`
97
+ - Bingding Error Status Code [*]_
98
+
99
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-1
100
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-2
101
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-3
102
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-4
103
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-5
104
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-6
105
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-7
106
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-8
107
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-9
108
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-10
109
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-11
110
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobility-parameters-12
111
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#dsmipv6-home-address-option
112
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#binding-revocation-type
113
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#revocation-trigger-values
114
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#binding-revocation-status-codes
115
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#home-address-reply
116
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#dhcp-support-mode
117
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#handover-initiate-flags
118
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#handover-acknowledge-flags
119
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#handover-initiate-status
120
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#handover-acknowledge-status
121
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#flow-id
122
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#flow-id-suboptions
123
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#traffic-selector
124
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#mobile-node-group-id-type
125
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#dsmip6-tls-packet-types
126
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#ani
127
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#op-id
128
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#upn-reasons
129
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#upa-status
130
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#flow-binding-type
131
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#flow-binding-indication-triggers
132
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#flow-binding-ack-status
133
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#flow-binding-action
134
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#qos-attribute
135
+ .. [*] https://www.iana.org/assignments/mobility-parameters/mobility-parameters.xhtml#lma-controlled-mag-parameters-sub-option-type
136
+ .. [*] :rfc:`5568#section-6.4.3`
137
+ .. [*] https://www.iana.org/assignments/cga-message-types/cga-message-types.xhtml#cga-message-types-1
138
+ .. [*] https://www.iana.org/assignments/cga-message-types/cga-message-types.xhtml#cga-message-types-2
139
+ .. [*] https://www.iana.org/assignments/cga-message-types/cga-message-types.xhtml#cga-message-types-3
140
+ .. [*] :rfc:`6275#section-6.1.9`
141
+
142
+ """
143
+
144
+ from pcapkit.vendor.mh.access_type import AccessType as MH_AccessType
145
+ from pcapkit.vendor.mh.ack_status_code import ACKStatusCode as MH_ACKStatusCode
146
+ from pcapkit.vendor.mh.ani_suboption import ANISuboption as MH_ANISuboption
147
+ from pcapkit.vendor.mh.auth_subtype import AuthSubtype as MH_AuthSubtype
148
+ from pcapkit.vendor.mh.binding_ack_flag import BindingACKFlag as MH_BindingACKFlag
149
+ from pcapkit.vendor.mh.binding_error import BindingError as MH_BindingError
150
+ from pcapkit.vendor.mh.binding_revocation import BindingRevocation as MH_BindingRevocation
151
+ from pcapkit.vendor.mh.binding_update_flag import BindingUpdateFlag as MH_BindingUpdateFlag
152
+ from pcapkit.vendor.mh.cga_extension import CGAExtension as MH_CGAExtension
153
+ from pcapkit.vendor.mh.cga_sec import CGASec as MH_CGASec
154
+ from pcapkit.vendor.mh.cga_type import CGAType as MH_CGAType
155
+ from pcapkit.vendor.mh.dhcp_support_mode import DHCPSupportMode as MH_DHCPSupportMode
156
+ from pcapkit.vendor.mh.dns_status_code import DNSStatusCode as MH_DNSStatusCode
157
+ from pcapkit.vendor.mh.dsmip6_tls_packet import DSMIP6TLSPacket as MH_DSMIP6TLSPacket
158
+ from pcapkit.vendor.mh.dsmipv6_home_address import DSMIPv6HomeAddress as MH_DSMIPv6HomeAddress
159
+ from pcapkit.vendor.mh.enumerating_algorithm import EnumeratingAlgorithm as MH_EnumeratingAlgorithm
160
+ from pcapkit.vendor.mh.fb_ack_status import FlowBindingACKStatus as MH_FlowBindingACKStatus
161
+ from pcapkit.vendor.mh.fb_action import FlowBindingAction as MH_FlowBindingAction
162
+ from pcapkit.vendor.mh.fb_indication_trigger import \
163
+ FlowBindingIndicationTrigger as MH_FlowBindingIndicationTrigger
164
+ from pcapkit.vendor.mh.fb_type import FlowBindingType as MH_FlowBindingType
165
+ from pcapkit.vendor.mh.flow_id_status import FlowIDStatus as MH_FlowIDStatus
166
+ from pcapkit.vendor.mh.flow_id_suboption import FlowIDSuboption as MH_FlowIDSuboption
167
+ from pcapkit.vendor.mh.handoff_type import HandoffType as MH_HandoffType
168
+ from pcapkit.vendor.mh.handover_ack_flag import HandoverACKFlag as MH_HandoverACKFlag
169
+ from pcapkit.vendor.mh.handover_ack_status import HandoverACKStatus as MH_HandoverACKStatus
170
+ from pcapkit.vendor.mh.handover_initiate_flag import HandoverInitiateFlag as MH_HandoverInitiateFlag
171
+ from pcapkit.vendor.mh.home_address_reply import HomeAddressReply as MH_HomeAddressReply
172
+ from pcapkit.vendor.mh.lla_code import LLACode as MH_LLACode
173
+ from pcapkit.vendor.mh.lma_mag_suboption import \
174
+ LMAControlledMAGSuboption as MH_LMAControlledMAGSuboption
175
+ from pcapkit.vendor.mh.mn_group_id import MNGroupID as MH_MNGroupID
176
+ from pcapkit.vendor.mh.mn_id_subtype import MNIDSubtype as MH_MNIDSubtype
177
+ from pcapkit.vendor.mh.operator_id import OperatorID as MH_OperatorID
178
+ from pcapkit.vendor.mh.option import Option as MH_Option
179
+ from pcapkit.vendor.mh.packet import Packet as MH_Packet
180
+ from pcapkit.vendor.mh.qos_attribute import QoSAttribute as MH_QoSAttribute
181
+ from pcapkit.vendor.mh.revocation_status_code import RevocationStatusCode as MH_RevocationStatusCode
182
+ from pcapkit.vendor.mh.revocation_trigger import RevocationTrigger as MH_RevocationTrigger
183
+ from pcapkit.vendor.mh.status_code import StatusCode as MH_StatusCode
184
+ from pcapkit.vendor.mh.traffic_selector import TrafficSelector as MH_TrafficSelector
185
+ from pcapkit.vendor.mh.upa_status import \
186
+ UpdateNotificationACKStatus as MH_UpdateNotificationACKStatus
187
+ from pcapkit.vendor.mh.upn_reason import UpdateNotificationReason as MH_UpdateNotificationReason
188
+
189
+ __all__ = [
190
+ 'MH_Packet', 'MH_Option', 'MH_DNSStatusCode', 'MH_ACKStatusCode',
191
+ 'MH_MNIDSubtype', 'MH_StatusCode', 'MH_EnumeratingAlgorithm',
192
+ 'MH_AuthSubtype', 'MH_HandoffType', 'MH_AccessType',
193
+ 'MH_BindingUpdateFlag', 'MH_BindingACKFlag', 'MH_DSMIPv6HomeAddress',
194
+ 'MH_BindingRevocation', 'MH_RevocationTrigger', 'MH_RevocationStatusCode',
195
+ 'MH_HomeAddressReply', 'MH_DHCPSupportMode', 'MH_HandoverInitiateFlag',
196
+ 'MH_HandoverACKFlag', 'MH_HandoverACKStatus', 'MH_HandoverACKStatus',
197
+ 'MH_FlowIDStatus', 'MH_FlowIDSuboption', 'MH_TrafficSelector',
198
+ 'MH_MNGroupID', 'MH_DSMIP6TLSPacket', 'MH_ANISuboption', 'MH_OperatorID',
199
+ 'MH_UpdateNotificationReason', 'MH_UpdateNotificationACKStatus',
200
+ 'MH_FlowBindingType', 'MH_FlowBindingIndicationTrigger',
201
+ 'MH_FlowBindingACKStatus', 'MH_FlowBindingAction', 'MH_QoSAttribute',
202
+ 'MH_LMAControlledMAGSuboption', 'MH_LLACode', 'MH_CGAType',
203
+ 'MH_CGAExtension', 'MH_CGASec', 'MH_BindingError',
204
+ ]
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Access Technology Type Option Type Values
3
+ ===============================================
4
+
5
+ .. module:: pcapkit.vendor.mh.access_type
6
+
7
+ This module contains the vendor crawler for **Access Technology Type Option Type Values**,
8
+ which is automatically generating :class:`pcapkit.const.mh.access_type.AccessType`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+
16
+ from pcapkit.vendor.default import Vendor
17
+
18
+ __all__ = ['AccessType']
19
+
20
+
21
+ class AccessType(Vendor):
22
+ """Access Technology Type Option Type Values"""
23
+
24
+ #: Value limit checker.
25
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
26
+ #: Link to registry.
27
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/mobility-parameters-10.csv'
28
+
29
+ def process(self, data: 'list[str]') -> 'tuple[list[str], list[str]]':
30
+ """Process CSV data.
31
+
32
+ Args:
33
+ data: CSV data.
34
+
35
+ Returns:
36
+ Enumeration fields and missing fields.
37
+
38
+ """
39
+ reader = csv.reader(data)
40
+ next(reader) # header
41
+
42
+ enum = [] # type: list[str]
43
+ miss = [] # type: list[str]
44
+ for item in reader:
45
+ long = item[1]
46
+ rfcs = item[2]
47
+
48
+ temp = [] # type: list[str]
49
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
50
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
51
+ #temp.append(f'[{rfc[:3]} {rfc[3:]}]')
52
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
53
+ else:
54
+ temp.append(f'[{rfc}]'.replace('_', ' '))
55
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
56
+
57
+ split = long.split(' (', 1)
58
+ if len(split) == 2:
59
+ name = split[0]
60
+ cmmt = f" ({split[1]}"
61
+ else:
62
+ name, cmmt = long, ''
63
+ desc = self.wrap_comment(f'{name}{cmmt}{tmp1}')
64
+
65
+ try:
66
+ code, _ = item[0], int(item[0])
67
+ renm = self.rename(name, code, original=long)
68
+
69
+ pres = f"{renm} = {code}"
70
+ sufs = f'#: {desc}'
71
+
72
+ # if len(pres) > 74:
73
+ # sufs = f"\n{' '*80}{sufs}"
74
+
75
+ # enum.append(f'{pres.ljust(76)}{sufs}')
76
+ enum.append(f'{sufs}\n {pres}')
77
+ except ValueError:
78
+ start, stop = item[0].split('-')
79
+
80
+ miss.append(f'if {start} <= value <= {stop}:')
81
+ miss.append(f' #: {desc}')
82
+ miss.append(f" return extend_enum(cls, '{self.safe_name(name)}_%d' % value, value)")
83
+ return enum, miss
84
+
85
+
86
+ if __name__ == '__main__':
87
+ sys.exit(AccessType()) # type: ignore[arg-type]