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,244 @@
1
+ # -*- coding: utf-8 -*-
2
+ """FTP Command
3
+ =================
4
+
5
+ .. module:: pcapkit.vendor.ftp.command
6
+
7
+ This module contains the vendor crawler for **FTP Command**,
8
+ which is automatically generating :class:`pcapkit.const.ftp.command.Command`.
9
+
10
+ """
11
+ import collections
12
+ import csv
13
+ import re
14
+ import sys
15
+ from typing import TYPE_CHECKING, cast
16
+
17
+ from pcapkit.vendor.default import Vendor
18
+
19
+ if TYPE_CHECKING:
20
+ from collections import OrderedDict
21
+ from typing import Callable
22
+
23
+ __all__ = ['Command']
24
+
25
+ #: Command type.
26
+ KIND = {
27
+ 'a': 'CommandType.A',
28
+ 'p': 'CommandType.P',
29
+ 's': 'CommandType.S',
30
+ } # type: dict[str, str]
31
+
32
+ #: Conformance requirements.
33
+ CONF = {
34
+ 'm': 'ConformanceRequirement.M',
35
+ 'o': 'ConformanceRequirement.O',
36
+ 'h': 'ConformanceRequirement.H',
37
+ } # type: dict[str, str]
38
+
39
+ #: Default constant template of enumerate registry from IANA CSV.
40
+ LINE = lambda NAME, DOCS, ENUM, MODL: f'''\
41
+ # -*- coding: utf-8 -*-
42
+ # mypy: disable-error-code=assignment
43
+ # pylint: disable=line-too-long,consider-using-f-string
44
+ """{(name := DOCS.split(' [', maxsplit=1)[0])}
45
+ {'=' * (len(name) + 6)}
46
+
47
+ .. module:: {MODL.replace('vendor', 'const')}
48
+
49
+ This module contains the constant enumeration for **{name}**,
50
+ which is automatically generated from :class:`{MODL}.{NAME}`.
51
+
52
+ """
53
+
54
+ from typing import TYPE_CHECKING
55
+
56
+ from aenum import IntEnum, IntFlag, StrEnum, auto, extend_enum
57
+
58
+ if TYPE_CHECKING:
59
+ from typing import Optional, Type
60
+
61
+ __all__ = ['{NAME}']
62
+
63
+
64
+ class FEATCode(StrEnum):
65
+ """Keyword returned in FEAT response line for this command/extension,
66
+ c.f., :rfc:`5797#secion-3`."""
67
+
68
+ #: FTP standard commands [:rfc:`0959`].
69
+ base = '<base>'
70
+ #: Historic experimental commands [:rfc:`0775`][:rfc:`1639`].
71
+ hist = '<hist>'
72
+ #: FTP Security Extensions [:rfc:`2228`].
73
+ secu = '<secu>'
74
+ #: FTP Feature Negotiation [:rfc:`2389`].
75
+ feat = '<feat>'
76
+ #: FTP Extensions for NAT/IPv6 [:rfc:`2428`].
77
+ nat6 = '<nat6>'
78
+
79
+ def __repr__(self) -> 'str':
80
+ return "<%s [%s]>" % (self.__class__.__name__, self._name_)
81
+
82
+ @classmethod
83
+ def _missing_(cls, value: 'str') -> 'FEATCode':
84
+ """Lookup function used when value is not found.
85
+
86
+ Args:
87
+ value: Value to get enum item.
88
+
89
+ """
90
+ return extend_enum(cls, value.upper(), value)
91
+
92
+
93
+ class CommandType(IntFlag):
94
+ """Type of "kind" of command, based on :rfc:`959#section-4.1`."""
95
+
96
+ undefined = 0
97
+
98
+ #: Access control.
99
+ A = auto()
100
+ #: Parameter setting.
101
+ P = auto()
102
+ #: Service execution.
103
+ S = auto()
104
+
105
+
106
+ class ConformanceRequirement(IntEnum):
107
+ """Expectation for support in modern FTP implementations."""
108
+
109
+ #: Mandatory to implement.
110
+ M = auto()
111
+ #: Optional.
112
+ O = auto()
113
+ #: Historic.
114
+ H = auto()
115
+
116
+
117
+ class {NAME}(StrEnum):
118
+ """[{NAME}] {DOCS}"""
119
+
120
+ if TYPE_CHECKING:
121
+ #: Feature code. Keyword returned in FEAT response line for this command/extension,
122
+ #: c.f., :rfc:`5797#secion-2.2`.
123
+ feat: 'Optional[FEATCode]'
124
+ #: Brief description of command / extension.
125
+ desc: 'Optional[str]'
126
+ #: Type of "kind" of command, based on :rfc:`959#section-4.1`.
127
+ type: 'CommandType'
128
+ #: Expectation for support in modern FTP implementations.
129
+ conf: 'ConformanceRequirement'
130
+
131
+ def __new__(cls, name: 'str', feat: 'Optional[FEATCode]' = None,
132
+ desc: 'Optional[str]' = None, type: 'CommandType' = CommandType.undefined,
133
+ conf: 'ConformanceRequirement' = ConformanceRequirement.O) -> 'Type[{NAME}]':
134
+ obj = str.__new__(cls, name)
135
+ obj._value_ = name
136
+
137
+ obj.feat = feat
138
+ obj.desc = desc
139
+ obj.type = type
140
+ obj.conf = conf
141
+
142
+ return obj
143
+
144
+ def __repr__(self) -> 'str':
145
+ return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, self.desc)
146
+
147
+ {ENUM}
148
+
149
+ @staticmethod
150
+ def get(key: 'str', default: 'Optional[str]' = None) -> '{NAME}':
151
+ """Backport support for original codes.
152
+
153
+ Args:
154
+ key: Key to get enum item.
155
+ default: Default value if not found.
156
+
157
+ :meta private:
158
+ """
159
+ if key not in {NAME}._member_map_: # pylint: disable=no-member
160
+ return extend_enum({NAME}, key.upper(), default if default is not None else key)
161
+ return {NAME}[key] # type: ignore[misc]
162
+
163
+ @classmethod
164
+ def _missing_(cls, value: 'str') -> '{NAME}':
165
+ """Lookup function used when value is not found.
166
+
167
+ Args:
168
+ value: Value to get enum item.
169
+
170
+ """
171
+ return extend_enum(cls, value.upper(), value)
172
+ '''.strip() # type: Callable[[str, str, str, str], str]
173
+
174
+
175
+ class Command(Vendor):
176
+ """FTP Command"""
177
+
178
+ #: Link to registry.
179
+ LINK = 'https://www.iana.org/assignments/ftp-commands-extensions/ftp-commands-extensions-2.csv'
180
+
181
+ def process(self, data: 'list[str]') -> 'list[str]': # type: ignore[override]
182
+ """Process CSV data.
183
+
184
+ Args:
185
+ data: CSV data.
186
+
187
+ Returns:
188
+ Enumeration fields.
189
+
190
+ """
191
+ reader = csv.reader(data)
192
+ next(reader) # header
193
+
194
+ enum = collections.OrderedDict() # type: OrderedDict[str, str]
195
+ for item in reader:
196
+ cmmd = item[0].strip('+')
197
+ feat = item[1] or None
198
+ desc = re.sub(r'{.*}', r'', item[2]).strip() or None
199
+ kind = ' | '.join(KIND[s] for s in item[3].split('/') if s in KIND) or None
200
+ conf = CONF.get(item[4].split()[0])
201
+
202
+ temp = [] # type: list[str]
203
+ #for rfc in filter(lambda s: 'RFC' in s, re.split(r'\[|\]', item[5])):
204
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
205
+ for rfc in filter(None, map(lambda s: s.strip(), re.split(r'\[|\]', item[5]))):
206
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
207
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
208
+ else:
209
+ temp.append(f'[{rfc}]'.replace('_', ' '))
210
+ cmmt = self.wrap_comment('%s %s' % (desc, ''.join(temp))) # pylint: disable=consider-using-f-string
211
+
212
+ if cmmd == '-N/A-':
213
+ cmmd = cast('str', feat)
214
+
215
+ if isinstance(feat, str):
216
+ if not feat.isupper():
217
+ feat = f'FEATCode.{feat}'
218
+ else:
219
+ feat = f'FEATCode({feat!r})'
220
+
221
+ pres = f"{cmmd}: 'Command' = {cmmd!r}, {feat}, {desc!r}, {kind or 0}, {conf}"
222
+ sufs = f'#: {cmmt}'
223
+
224
+ enum[cmmd] = f'{sufs}\n {pres}'
225
+ return list(enum.values())
226
+
227
+ def context(self, data: 'list[str]') -> 'str':
228
+ """Generate constant context.
229
+
230
+ Args:
231
+ data: CSV data.
232
+
233
+ Returns:
234
+ Constant context.
235
+
236
+ """
237
+ enum = self.process(data)
238
+ ENUM = '\n\n '.join(map(lambda s: s.rstrip(), enum)).strip()
239
+
240
+ return LINE(self.NAME, self.DOCS, ENUM, self.__module__)
241
+
242
+
243
+ if __name__ == '__main__':
244
+ sys.exit(Command()) # type: ignore[arg-type]
@@ -0,0 +1,256 @@
1
+ # -*- coding: utf-8 -*-
2
+ """FTP Server Return Code
3
+ ============================
4
+
5
+ .. module:: pcapkit.vendor.ftp.return_code
6
+
7
+ This module contains the vendor crawler for **FTP Server Return Code**,
8
+ which is automatically generating :class:`pcapkit.const.ftp.return_code.ReturnCode`.
9
+
10
+ """
11
+
12
+ import collections
13
+ import re
14
+ import sys
15
+ from typing import TYPE_CHECKING
16
+
17
+ import bs4
18
+
19
+ from pcapkit.vendor.default import Vendor
20
+
21
+ if TYPE_CHECKING:
22
+ from collections import Counter
23
+ from typing import Callable
24
+
25
+ from bs4 import BeautifulSoup
26
+
27
+ __all__ = ['ReturnCode']
28
+
29
+ LINE = lambda NAME, DOCS, FLAG, ENUM, MODL: f'''\
30
+ # -*- coding: utf-8 -*-
31
+ # mypy: disable-error-code=assignment
32
+ # pylint: disable=line-too-long,consider-using-f-string
33
+ """{(name := DOCS.split(' [', maxsplit=1)[0])}
34
+ {'=' * (len(name) + 6)}
35
+
36
+ .. module:: {MODL.replace('vendor', 'const')}
37
+
38
+ This module contains the constant enumeration for **{name}**,
39
+ which is automatically generated from :class:`{MODL}.{NAME}`.
40
+
41
+ """
42
+
43
+ from typing import TYPE_CHECKING
44
+
45
+ from aenum import IntEnum, extend_enum
46
+
47
+ if TYPE_CHECKING:
48
+ from typing import Optional, Type
49
+
50
+ __all__ = ['{NAME}']
51
+
52
+ #: Grouping information.
53
+ INFO = {{
54
+ '0': 'Syntax',
55
+ '1': 'Information',
56
+ '2': 'Connections',
57
+ '3': 'Authentication and accounting',
58
+ '4': 'Unspecified', # [RFC 959]
59
+ '5': 'File system',
60
+ }} # type: dict[str, str]
61
+
62
+
63
+ class ResponseKind(IntEnum):
64
+ """Response kind; whether the response is good, bad or incomplete."""
65
+
66
+ PositivePreliminary = 1
67
+ PositiveCompletion = 2
68
+ PositiveIntermediate = 3
69
+ TransientNegativeCompletion = 4
70
+ PermanentNegativeCompletion = 5
71
+ Protected = 6
72
+
73
+ def _missing_(cls, value: 'int') -> 'ResponseKind':
74
+ """Lookup function used when value is not found.
75
+
76
+ Args:
77
+ value: Value to lookup.
78
+
79
+ """
80
+ if isinstance(value, int) and 0 <= value <= 9:
81
+ return extend_enum(cls, 'Unknown_%d' % value, value)
82
+ return super()._missing_(value)
83
+
84
+
85
+ class GroupingInformation(IntEnum):
86
+ """Grouping information."""
87
+
88
+ Syntax = 0
89
+ Information = 1
90
+ Connections = 2
91
+ AuthenticationAccounting = 3
92
+ Unspecified = 4
93
+ FileSystem = 5
94
+
95
+ def _missing_(cls, value: 'int') -> 'GroupingInformation':
96
+ """Lookup function used when value is not found.
97
+
98
+ Args:
99
+ value: Value to lookup.
100
+
101
+ """
102
+ if isinstance(value, int) and 0 <= value <= 9:
103
+ return extend_enum(cls, 'Unknown_%d' % value, value)
104
+ return super()._missing_(value)
105
+
106
+
107
+ class {NAME}(IntEnum):
108
+ """[{NAME}] {DOCS}"""
109
+
110
+ if TYPE_CHECKING:
111
+ #: Description of the return code.
112
+ description: 'Optional[str]'
113
+ #: Response kind.
114
+ kind: 'ResponseKind'
115
+ #: Grouping information.
116
+ group: 'GroupingInformation'
117
+
118
+ def __new__(cls, value: 'int', description: 'Optional[str]' = None) -> 'Type[{NAME}]':
119
+ obj = int.__new__(cls, value)
120
+ obj._value_ = value
121
+
122
+ code = str(value)
123
+ obj.description = description
124
+ obj.kind = ResponseKind(int(code[0]))
125
+ obj.group = GroupingInformation(int(code[1]))
126
+
127
+ return obj
128
+
129
+ def __repr__(self) -> 'str':
130
+ return "<%s [%s]>" % (self.__class__.__name__, self._value_)
131
+
132
+ def __str__(self) -> 'str':
133
+ return "[%s] %s" % (self._value_, self.description)
134
+
135
+ {ENUM}
136
+
137
+ @staticmethod
138
+ def get(key: 'int | str', default: 'int' = -1) -> '{NAME}':
139
+ """Backport support for original codes.
140
+
141
+ Args:
142
+ key: Key to get enum item.
143
+ default: Default value if not found.
144
+
145
+ :meta private:
146
+ """
147
+ if isinstance(key, int):
148
+ return {NAME}(key)
149
+ if key not in {NAME}._member_map_: # pylint: disable=no-member
150
+ return extend_enum({NAME}, key, default)
151
+ return {NAME}[key] # type: ignore[misc]
152
+
153
+ @classmethod
154
+ def _missing_(cls, value: 'int') -> '{NAME}':
155
+ """Lookup function used when value is not found.
156
+
157
+ Args:
158
+ value: Value to get enum item.
159
+
160
+ """
161
+ if not ({FLAG}):
162
+ raise ValueError('%r is not a valid %s' % (value, cls.__name__))
163
+ return extend_enum(cls, 'CODE_%s' % value, value)
164
+ ''' # type: Callable[[str, str, str, str, str], str]
165
+
166
+
167
+ class ReturnCode(Vendor):
168
+ """FTP Server Return Code"""
169
+
170
+ #: Value limit checker.
171
+ FLAG = 'isinstance(value, int) and 100 <= value <= 659'
172
+ #: Link to registry.
173
+ LINK = 'https://en.wikipedia.org/wiki/List_of_FTP_server_return_codes'
174
+
175
+ def request(self, text: 'str') -> 'BeautifulSoup': # type: ignore[override] # pylint: disable=signature-differs
176
+ """Fetch registry data.
177
+
178
+ Args:
179
+ text: Context from :attr:`~ReturnCode.LINK`.
180
+
181
+ Returns:
182
+ Parsed HTML source.
183
+
184
+ """
185
+ return bs4.BeautifulSoup(text, 'html5lib')
186
+
187
+ def context(self, soup: 'BeautifulSoup') -> 'str': # pylint: disable=arguments-differ,arguments-renamed
188
+ """Generate constant context.
189
+
190
+ Args:
191
+ soup: Parsed HTML source.
192
+
193
+ Returns:
194
+ Constant context.
195
+
196
+ """
197
+ enum = self.process(soup)
198
+ ENUM = '\n\n '.join(map(lambda s: s.rstrip(), enum))
199
+ return LINE(self.NAME, self.DOCS, self.FLAG, ENUM, self.__module__)
200
+
201
+ def process(self, soup: 'BeautifulSoup') -> 'list[str]': # type: ignore[override] # pylint: disable=arguments-differ,arguments-renamed
202
+ """Process registry data.
203
+
204
+ Args:
205
+ soup: Parsed HTML source.
206
+
207
+ Returns:
208
+ Enumeration fields.
209
+
210
+ """
211
+ table = soup.find_all('table', class_='wikitable')[2]
212
+ content = filter(lambda item: isinstance(item, bs4.element.Tag), table.tbody)
213
+ next(content) # header
214
+
215
+ enum = [] # type: list[str]
216
+ for item in content:
217
+ line = item.find_all('td')
218
+
219
+ code = ' '.join(line[0].stripped_strings)
220
+ if len(code) != 3:
221
+ continue
222
+
223
+ #desc = f"{' '.join(line[1].stripped_strings).split('.')[0].strip()}."
224
+ #enum.append(f'{self.NAME}[{self.rename(desc, code)!r}] = {code}')
225
+
226
+ cmmt = re.sub(r' +', r' ', '. '.join(map(lambda s: s.strip(), ' '.join(
227
+ line[1].stripped_strings).split('.'))).replace('e. g. ,', 'e.g.,').strip())
228
+ sufs = self.wrap_comment(cmmt) # pylint: disable=line-too-long
229
+
230
+ desc = re.sub(r'\(.*\)', r'', cmmt.split('.', maxsplit=1)[0]).strip() + '.'
231
+ pref = f"CODE_{code}: 'ReturnCode' = {code}, {desc!r}"
232
+
233
+ enum.append(f'#: {sufs}\n {pref}')
234
+ return enum
235
+
236
+ def count(self, soup: 'BeautifulSoup') -> 'Counter[str]': # pylint: disable=arguments-differ,arguments-renamed,unused-argument
237
+ """Count field records."""
238
+ #table = soup.find_all('table', class_='wikitable')[2]
239
+ #content = filter(lambda item: isinstance(item, bs4.element.Tag), table.tbody)
240
+ #next(content) # header
241
+
242
+ #temp = list()
243
+ #for item in content:
244
+ # line = item.find_all('td')
245
+
246
+ # code = ' '.join(line[0].stripped_strings)
247
+ # if len(code) != 3:
248
+ # continue
249
+ # desc = f"{' '.join(line[1].stripped_strings).split('.')[0].strip()}."
250
+ # temp.append(desc)
251
+ #return collections.Counter(temp)
252
+ return collections.Counter()
253
+
254
+
255
+ if __name__ == '__main__':
256
+ sys.exit(ReturnCode()) # type: ignore[arg-type]
@@ -0,0 +1,94 @@
1
+ # -*- coding: utf-8 -*-
2
+ # pylint: disable=unused-import
3
+ """:class:`~pcapkit.protocols.internet.hip.HIP` Vendor crawlers
4
+ ========================================================================
5
+
6
+ .. module:: pcapkit.const.hip
7
+
8
+ This module contains all vendor crawlers of
9
+ :class:`~pcapkit.protocols.internet.hip.HIP` implementations. Available
10
+ crawlers include:
11
+
12
+ .. list-table::
13
+
14
+ * - :class:`HIP_Certificate <pcapkit.vendor.hip.certificate.Certificate>`
15
+ - HIP Certificate Types [*]_
16
+ * - :class:`HIP_Cipher <pcapkit.vendor.hip.cipher.Cipher>`
17
+ - HIP Cipher IDs [*]_
18
+ * - :class:`HIP_DITypes <pcapkit.vendor.hip.di.DITypes>`
19
+ - DI-Types [*]_
20
+ * - :class:`HIP_ECDSACurve <pcapkit.vendor.hip.ecdsa_curve.ECDSACurve>`
21
+ - ECDSA Curve Label [*]_
22
+ * - :class:`HIP_ECDSALowCurve <pcapkit.vendor.hip.ecdsa_low_curve.ECDSALowCurve>`
23
+ - ECDSA_LOW Curve Label [*]_
24
+ * - :class:`HIP_EdDSACurve <pcapkit.vendor.hip.eddsa_curve.EdDSACurve>`
25
+ - EdDSA Curve Label [*]_
26
+ * - :class:`HIP_ESPTransformSuite <pcapkit.vendor.hip.esp_transform_suite.ESPTransformSuite>`
27
+ - ESP Transform Suite IDs [*]_
28
+ * - :class:`HIP_Group <pcapkit.vendor.hip.group.Group>`
29
+ - Group IDs [*]_
30
+ * - :class:`HIP_HIAlgorithm <pcapkit.vendor.hip.hi_algorithm.HIAlgorithm>`
31
+ - HI Algorithm [*]_
32
+ * - :class:`HIP_HITSuite <pcapkit.vendor.hip.hit_suite.HITSuite>`
33
+ - HIT Suite IDs [*]_
34
+ * - :class:`HIP_NATTraversal <pcapkit.vendor.hip.nat_traversal.NATTraversal>`
35
+ - HIP NAT Traversal Modes [*]_
36
+ * - :class:`HIP_NotifyMessage <pcapkit.vendor.hip.notify_message.NotifyMessage>`
37
+ - Notify Message Types [*]_
38
+ * - :class:`HIP_Packet <pcapkit.vendor.hip.packet.Packet>`
39
+ - Packet Types [*]_
40
+ * - :class:`HIP_Parameter <pcapkit.vendor.hip.parameter.Parameter>`
41
+ - Parameter Types [*]_
42
+ * - :class:`HIP_Registration <pcapkit.vendor.hip.registration.Registration>`
43
+ - Registration Types [*]_
44
+ * - :class:`HIP_RegistrationFailure <pcapkit.vendor.hip.registration_failure.RegistrationFailure>`
45
+ - Registration Failure Types [*]_
46
+ * - :class:`HIP_Suite <pcapkit.vendor.hip.suite.Suite>`
47
+ - Suite IDs [*]_
48
+ * - :class:`HIP_Transport <pcapkit.vendor.hip.transport.Transport>`
49
+ - HIP Transport Modes [*]_
50
+
51
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#certificate-types
52
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-cipher-id
53
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-7
54
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#ecdsa-curve-label
55
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#ecdsa-low-curve-label
56
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#eddsa-curve-label
57
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#esp-transform-suite-ids
58
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-5
59
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hi-algorithm
60
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hit-suite-id
61
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#nat-traversal
62
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-9
63
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-1
64
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-4
65
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-11
66
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-13
67
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-6
68
+ .. [*] https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#transport-modes
69
+
70
+ """
71
+
72
+ from pcapkit.vendor.hip.certificate import Certificate as HIP_Certificate
73
+ from pcapkit.vendor.hip.cipher import Cipher as HIP_Cipher
74
+ from pcapkit.vendor.hip.di import DITypes as HIP_DITypes
75
+ from pcapkit.vendor.hip.ecdsa_curve import ECDSACurve as HIP_ECDSACurve
76
+ from pcapkit.vendor.hip.ecdsa_low_curve import ECDSALowCurve as HIP_ECDSALowCurve
77
+ from pcapkit.vendor.hip.eddsa_curve import EdDSACurve as HIP_EdDSACurve
78
+ from pcapkit.vendor.hip.esp_transform_suite import ESPTransformSuite as HIP_ESPTransformSuite
79
+ from pcapkit.vendor.hip.group import Group as HIP_Group
80
+ from pcapkit.vendor.hip.hi_algorithm import HIAlgorithm as HIP_HIAlgorithm
81
+ from pcapkit.vendor.hip.hit_suite import HITSuite as HIP_HITSuite
82
+ from pcapkit.vendor.hip.nat_traversal import NATTraversal as HIP_NATTraversal
83
+ from pcapkit.vendor.hip.notify_message import NotifyMessage as HIP_NotifyMessage
84
+ from pcapkit.vendor.hip.packet import Packet as HIP_Packet
85
+ from pcapkit.vendor.hip.parameter import Parameter as HIP_Parameter
86
+ from pcapkit.vendor.hip.registration import Registration as HIP_Registration
87
+ from pcapkit.vendor.hip.registration_failure import RegistrationFailure as HIP_RegistrationFailure
88
+ from pcapkit.vendor.hip.suite import Suite as HIP_Suite
89
+ from pcapkit.vendor.hip.transport import Transport as HIP_Transport
90
+
91
+ __all__ = ['HIP_Certificate', 'HIP_Cipher', 'HIP_DITypes', 'HIP_ECDSACurve', 'HIP_ECDSALowCurve',
92
+ 'HIP_ESPTransformSuite', 'HIP_Group', 'HIP_HIAlgorithm', 'HIP_HITSuite', 'HIP_NATTraversal',
93
+ 'HIP_NotifyMessage', 'HIP_Packet', 'HIP_Parameter', 'HIP_Registration', 'HIP_RegistrationFailure',
94
+ 'HIP_Suite', 'HIP_Transport', 'HIP_EdDSACurve']
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ """HIP Certificate Types
3
+ ===========================
4
+
5
+ .. module:: pcapkit.const.hip.certificate
6
+
7
+ This module contains the vendor crawler for **HIP Certificate Types**,
8
+ which is automatically generating :class:`pcapkit.const.hip.certificate.Certificate`.
9
+
10
+ """
11
+
12
+ import sys
13
+
14
+ from pcapkit.vendor.default import Vendor
15
+
16
+ __all__ = ['Certificate']
17
+
18
+
19
+ class Certificate(Vendor):
20
+ """HIP Certificate Types"""
21
+
22
+ #: Value limit checker.
23
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
24
+ #: Link to registry.
25
+ LINK = 'https://www.iana.org/assignments/hip-parameters/certificate-types.csv'
26
+
27
+
28
+ if __name__ == '__main__':
29
+ sys.exit(Certificate()) # type: ignore[arg-type]
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Cipher IDs
3
+ ================
4
+
5
+ .. module:: pcapkit.const.hip.cipher
6
+
7
+ This module contains the vendor crawler for **Cipher IDs**,
8
+ which is automatically generating :class:`pcapkit.const.hip.cipher.Cipher`.
9
+
10
+ """
11
+
12
+ import sys
13
+
14
+ from pcapkit.vendor.default import Vendor
15
+
16
+ __all__ = ['Cipher']
17
+
18
+
19
+ class Cipher(Vendor):
20
+ """Cipher IDs"""
21
+
22
+ #: Value limit checker.
23
+ FLAG = 'isinstance(value, int) and 0 <= value <= 65535'
24
+ #: Link to registry.
25
+ LINK = 'https://www.iana.org/assignments/hip-parameters/hip-cipher-id.csv'
26
+
27
+
28
+ if __name__ == '__main__':
29
+ sys.exit(Cipher()) # type: ignore[arg-type]
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ """DI-Types
3
+ ==============
4
+
5
+ .. module:: pcapkit.const.hip.di
6
+
7
+ This module contains the vendor crawler for **DI-Types**,
8
+ which is automatically generating :class:`pcapkit.const.hip.di.DITypes`.
9
+
10
+ """
11
+
12
+ import sys
13
+
14
+ from pcapkit.vendor.default import Vendor
15
+
16
+ __all__ = ['DITypes']
17
+
18
+
19
+ class DITypes(Vendor):
20
+ """DI-Types"""
21
+
22
+ #: Value limit checker.
23
+ FLAG = 'isinstance(value, int) and 0 <= value <= 15'
24
+ #: Link to registry.
25
+ LINK = 'https://www.iana.org/assignments/hip-parameters/hip-parameters-7.csv'
26
+
27
+
28
+ if __name__ == '__main__':
29
+ sys.exit(DITypes()) # type: ignore[arg-type]