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.
- pcapkit/__init__.py +126 -0
- pcapkit/__main__.py +138 -0
- pcapkit/all.py +136 -0
- pcapkit/const/__init__.py +81 -0
- pcapkit/const/arp/__init__.py +25 -0
- pcapkit/const/arp/hardware.py +181 -0
- pcapkit/const/arp/operation.py +131 -0
- pcapkit/const/ftp/__init__.py +25 -0
- pcapkit/const/ftp/command.py +309 -0
- pcapkit/const/ftp/return_code.py +304 -0
- pcapkit/const/hip/__init__.py +94 -0
- pcapkit/const/hip/certificate.py +77 -0
- pcapkit/const/hip/cipher.py +65 -0
- pcapkit/const/hip/di.py +59 -0
- pcapkit/const/hip/ecdsa_curve.py +59 -0
- pcapkit/const/hip/ecdsa_low_curve.py +56 -0
- pcapkit/const/hip/eddsa_curve.py +65 -0
- pcapkit/const/hip/esp_transform_suite.py +98 -0
- pcapkit/const/hip/group.py +86 -0
- pcapkit/const/hip/hi_algorithm.py +86 -0
- pcapkit/const/hip/hit_suite.py +68 -0
- pcapkit/const/hip/nat_traversal.py +62 -0
- pcapkit/const/hip/notify_message.py +200 -0
- pcapkit/const/hip/packet.py +89 -0
- pcapkit/const/hip/parameter.py +377 -0
- pcapkit/const/hip/registration.py +68 -0
- pcapkit/const/hip/registration_failure.py +84 -0
- pcapkit/const/hip/suite.py +71 -0
- pcapkit/const/hip/transport.py +59 -0
- pcapkit/const/http/__init__.py +39 -0
- pcapkit/const/http/error_code.py +95 -0
- pcapkit/const/http/frame.py +95 -0
- pcapkit/const/http/method.py +184 -0
- pcapkit/const/http/setting.py +96 -0
- pcapkit/const/http/status_code.py +294 -0
- pcapkit/const/ipv4/__init__.py +57 -0
- pcapkit/const/ipv4/classification_level.py +64 -0
- pcapkit/const/ipv4/option_class.py +55 -0
- pcapkit/const/ipv4/option_number.py +137 -0
- pcapkit/const/ipv4/protection_authority.py +63 -0
- pcapkit/const/ipv4/qs_function.py +51 -0
- pcapkit/const/ipv4/router_alert.py +251 -0
- pcapkit/const/ipv4/tos_del.py +51 -0
- pcapkit/const/ipv4/tos_ecn.py +55 -0
- pcapkit/const/ipv4/tos_pre.py +63 -0
- pcapkit/const/ipv4/tos_rel.py +51 -0
- pcapkit/const/ipv4/tos_thr.py +51 -0
- pcapkit/const/ipv4/ts_flag.py +53 -0
- pcapkit/const/ipv6/__init__.py +53 -0
- pcapkit/const/ipv6/extension_header.py +66 -0
- pcapkit/const/ipv6/option.py +137 -0
- pcapkit/const/ipv6/option_action.py +55 -0
- pcapkit/const/ipv6/qs_function.py +51 -0
- pcapkit/const/ipv6/router_alert.py +266 -0
- pcapkit/const/ipv6/routing.py +80 -0
- pcapkit/const/ipv6/seed_id.py +55 -0
- pcapkit/const/ipv6/smf_dpd_mode.py +51 -0
- pcapkit/const/ipv6/tagger_id.py +62 -0
- pcapkit/const/ipx/__init__.py +27 -0
- pcapkit/const/ipx/packet.py +72 -0
- pcapkit/const/ipx/socket.py +104 -0
- pcapkit/const/l2tp/__init__.py +21 -0
- pcapkit/const/l2tp/type.py +51 -0
- pcapkit/const/mh/__init__.py +204 -0
- pcapkit/const/mh/access_type.py +92 -0
- pcapkit/const/mh/ack_status_code.py +71 -0
- pcapkit/const/mh/ani_suboption.py +74 -0
- pcapkit/const/mh/auth_subtype.py +53 -0
- pcapkit/const/mh/binding_ack_flag.py +66 -0
- pcapkit/const/mh/binding_error.py +51 -0
- pcapkit/const/mh/binding_revocation.py +59 -0
- pcapkit/const/mh/binding_update_flag.py +81 -0
- pcapkit/const/mh/cga_extension.py +66 -0
- pcapkit/const/mh/cga_sec.py +57 -0
- pcapkit/const/mh/cga_type.py +68 -0
- pcapkit/const/mh/dhcp_support_mode.py +53 -0
- pcapkit/const/mh/dns_status_code.py +65 -0
- pcapkit/const/mh/dsmip6_tls_packet.py +62 -0
- pcapkit/const/mh/dsmipv6_home_address.py +74 -0
- pcapkit/const/mh/enumerating_algorithm.py +56 -0
- pcapkit/const/mh/fb_ack_status.py +62 -0
- pcapkit/const/mh/fb_action.py +71 -0
- pcapkit/const/mh/fb_indication_trigger.py +65 -0
- pcapkit/const/mh/fb_type.py +59 -0
- pcapkit/const/mh/flow_id_status.py +77 -0
- pcapkit/const/mh/flow_id_suboption.py +71 -0
- pcapkit/const/mh/handoff_type.py +71 -0
- pcapkit/const/mh/handover_ack_flag.py +54 -0
- pcapkit/const/mh/handover_ack_status.py +92 -0
- pcapkit/const/mh/handover_initiate_flag.py +57 -0
- pcapkit/const/mh/handover_initiate_status.py +62 -0
- pcapkit/const/mh/home_address_reply.py +71 -0
- pcapkit/const/mh/lla_code.py +63 -0
- pcapkit/const/mh/lma_mag_suboption.py +59 -0
- pcapkit/const/mh/mn_group_id.py +59 -0
- pcapkit/const/mh/mn_id_subtype.py +77 -0
- pcapkit/const/mh/operator_id.py +63 -0
- pcapkit/const/mh/option.py +260 -0
- pcapkit/const/mh/packet.py +119 -0
- pcapkit/const/mh/qos_attribute.py +89 -0
- pcapkit/const/mh/revocation_status_code.py +83 -0
- pcapkit/const/mh/revocation_trigger.py +86 -0
- pcapkit/const/mh/status_code.py +232 -0
- pcapkit/const/mh/traffic_selector.py +62 -0
- pcapkit/const/mh/upa_status.py +71 -0
- pcapkit/const/mh/upn_reason.py +80 -0
- pcapkit/const/ospf/__init__.py +27 -0
- pcapkit/const/ospf/authentication.py +65 -0
- pcapkit/const/ospf/packet.py +71 -0
- pcapkit/const/pcapng/__init__.py +51 -0
- pcapkit/const/pcapng/block_type.py +152 -0
- pcapkit/const/pcapng/filter_type.py +48 -0
- pcapkit/const/pcapng/hash_algorithm.py +59 -0
- pcapkit/const/pcapng/option_type.py +233 -0
- pcapkit/const/pcapng/record_type.py +57 -0
- pcapkit/const/pcapng/secrets_type.py +56 -0
- pcapkit/const/pcapng/verdict_type.py +53 -0
- pcapkit/const/reg/__init__.py +34 -0
- pcapkit/const/reg/apptype.py +32702 -0
- pcapkit/const/reg/ethertype.py +714 -0
- pcapkit/const/reg/linktype.py +902 -0
- pcapkit/const/reg/transtype.py +523 -0
- pcapkit/const/tcp/__init__.py +35 -0
- pcapkit/const/tcp/checksum.py +55 -0
- pcapkit/const/tcp/flags.py +73 -0
- pcapkit/const/tcp/mp_tcp_option.py +80 -0
- pcapkit/const/tcp/option.py +198 -0
- pcapkit/const/vlan/__init__.py +23 -0
- pcapkit/const/vlan/priority_level.py +71 -0
- pcapkit/corekit/__init__.py +59 -0
- pcapkit/corekit/fields/__init__.py +45 -0
- pcapkit/corekit/fields/collections.py +282 -0
- pcapkit/corekit/fields/field.py +269 -0
- pcapkit/corekit/fields/ipaddress.py +274 -0
- pcapkit/corekit/fields/misc.py +722 -0
- pcapkit/corekit/fields/numbers.py +375 -0
- pcapkit/corekit/fields/strings.py +245 -0
- pcapkit/corekit/infoclass.py +394 -0
- pcapkit/corekit/io.py +506 -0
- pcapkit/corekit/module.py +39 -0
- pcapkit/corekit/multidict.py +626 -0
- pcapkit/corekit/protochain.py +263 -0
- pcapkit/corekit/version.py +33 -0
- pcapkit/dumpkit/__init__.py +15 -0
- pcapkit/dumpkit/common.py +199 -0
- pcapkit/dumpkit/null.py +77 -0
- pcapkit/dumpkit/pcap.py +144 -0
- pcapkit/foundation/__init__.py +45 -0
- pcapkit/foundation/engines/__init__.py +36 -0
- pcapkit/foundation/engines/dpkt.py +230 -0
- pcapkit/foundation/engines/engine.py +194 -0
- pcapkit/foundation/engines/pcap.py +188 -0
- pcapkit/foundation/engines/pcapng.py +310 -0
- pcapkit/foundation/engines/pyshark.py +166 -0
- pcapkit/foundation/engines/scapy.py +161 -0
- pcapkit/foundation/extraction.py +915 -0
- pcapkit/foundation/reassembly/__init__.py +49 -0
- pcapkit/foundation/reassembly/data/__init__.py +48 -0
- pcapkit/foundation/reassembly/data/ip.py +117 -0
- pcapkit/foundation/reassembly/data/tcp.py +145 -0
- pcapkit/foundation/reassembly/ip.py +192 -0
- pcapkit/foundation/reassembly/ipv4.py +50 -0
- pcapkit/foundation/reassembly/ipv6.py +50 -0
- pcapkit/foundation/reassembly/reassembly.py +389 -0
- pcapkit/foundation/reassembly/tcp.py +249 -0
- pcapkit/foundation/registry/__init__.py +41 -0
- pcapkit/foundation/registry/foundation.py +327 -0
- pcapkit/foundation/registry/protocols.py +885 -0
- pcapkit/foundation/traceflow/__init__.py +44 -0
- pcapkit/foundation/traceflow/data/__init__.py +30 -0
- pcapkit/foundation/traceflow/data/tcp.py +105 -0
- pcapkit/foundation/traceflow/tcp.py +159 -0
- pcapkit/foundation/traceflow/traceflow.py +390 -0
- pcapkit/interface/__init__.py +22 -0
- pcapkit/interface/core.py +185 -0
- pcapkit/interface/misc.py +120 -0
- pcapkit/protocols/__init__.py +85 -0
- pcapkit/protocols/application/NotImplemented/bgp.py +0 -0
- pcapkit/protocols/application/NotImplemented/dhcp.py +0 -0
- pcapkit/protocols/application/NotImplemented/dhcpv6.py +0 -0
- pcapkit/protocols/application/NotImplemented/dns.py +0 -0
- pcapkit/protocols/application/NotImplemented/imap.py +0 -0
- pcapkit/protocols/application/NotImplemented/ldap.py +0 -0
- pcapkit/protocols/application/NotImplemented/mqtt.py +0 -0
- pcapkit/protocols/application/NotImplemented/nntp.py +0 -0
- pcapkit/protocols/application/NotImplemented/ntp.py +0 -0
- pcapkit/protocols/application/NotImplemented/onc_rpc.py +0 -0
- pcapkit/protocols/application/NotImplemented/pop.py +0 -0
- pcapkit/protocols/application/NotImplemented/rip.py +0 -0
- pcapkit/protocols/application/NotImplemented/rtp.py +0 -0
- pcapkit/protocols/application/NotImplemented/sip.py +0 -0
- pcapkit/protocols/application/NotImplemented/smtp.py +0 -0
- pcapkit/protocols/application/NotImplemented/snmp.py +0 -0
- pcapkit/protocols/application/NotImplemented/ssh.py +0 -0
- pcapkit/protocols/application/NotImplemented/telnet.py +0 -0
- pcapkit/protocols/application/NotImplemented/tls.py +0 -0
- pcapkit/protocols/application/NotImplemented/xmpp.py +0 -0
- pcapkit/protocols/application/__init__.py +34 -0
- pcapkit/protocols/application/application.py +114 -0
- pcapkit/protocols/application/ftp.py +206 -0
- pcapkit/protocols/application/http.py +176 -0
- pcapkit/protocols/application/httpv1.py +320 -0
- pcapkit/protocols/application/httpv2.py +1255 -0
- pcapkit/protocols/data/__init__.py +192 -0
- pcapkit/protocols/data/application/__init__.py +57 -0
- pcapkit/protocols/data/application/ftp.py +59 -0
- pcapkit/protocols/data/application/httpv1.py +79 -0
- pcapkit/protocols/data/application/httpv2.py +293 -0
- pcapkit/protocols/data/data.py +25 -0
- pcapkit/protocols/data/internet/__init__.py +298 -0
- pcapkit/protocols/data/internet/ah.py +31 -0
- pcapkit/protocols/data/internet/hip.py +804 -0
- pcapkit/protocols/data/internet/hopopt.py +351 -0
- pcapkit/protocols/data/internet/ipv4.py +369 -0
- pcapkit/protocols/data/internet/ipv6.py +67 -0
- pcapkit/protocols/data/internet/ipv6_frag.py +29 -0
- pcapkit/protocols/data/internet/ipv6_opts.py +368 -0
- pcapkit/protocols/data/internet/ipv6_route.py +86 -0
- pcapkit/protocols/data/internet/ipx.py +56 -0
- pcapkit/protocols/data/internet/mh.py +509 -0
- pcapkit/protocols/data/link/__init__.py +33 -0
- pcapkit/protocols/data/link/arp.py +74 -0
- pcapkit/protocols/data/link/ethernet.py +28 -0
- pcapkit/protocols/data/link/l2tp.py +63 -0
- pcapkit/protocols/data/link/ospf.py +58 -0
- pcapkit/protocols/data/link/vlan.py +42 -0
- pcapkit/protocols/data/misc/__init__.py +109 -0
- pcapkit/protocols/data/misc/null.py +18 -0
- pcapkit/protocols/data/misc/pcap/__init__.py +18 -0
- pcapkit/protocols/data/misc/pcap/frame.py +56 -0
- pcapkit/protocols/data/misc/pcap/header.py +53 -0
- pcapkit/protocols/data/misc/pcapng.py +925 -0
- pcapkit/protocols/data/misc/raw.py +25 -0
- pcapkit/protocols/data/protocol.py +32 -0
- pcapkit/protocols/data/transport/__init__.py +71 -0
- pcapkit/protocols/data/transport/tcp.py +555 -0
- pcapkit/protocols/data/transport/udp.py +29 -0
- pcapkit/protocols/internet/NotImplemented/ecn.py +0 -0
- pcapkit/protocols/internet/NotImplemented/esp.py +97 -0
- pcapkit/protocols/internet/NotImplemented/icmp.py +0 -0
- pcapkit/protocols/internet/NotImplemented/icmpv6.py +0 -0
- pcapkit/protocols/internet/NotImplemented/igmp.py +0 -0
- pcapkit/protocols/internet/NotImplemented/shim6.py +0 -0
- pcapkit/protocols/internet/__init__.py +43 -0
- pcapkit/protocols/internet/ah.py +275 -0
- pcapkit/protocols/internet/hip.py +4727 -0
- pcapkit/protocols/internet/hopopt.py +1879 -0
- pcapkit/protocols/internet/internet.py +240 -0
- pcapkit/protocols/internet/ip.py +51 -0
- pcapkit/protocols/internet/ipsec.py +50 -0
- pcapkit/protocols/internet/ipv4.py +1782 -0
- pcapkit/protocols/internet/ipv6.py +361 -0
- pcapkit/protocols/internet/ipv6_frag.py +258 -0
- pcapkit/protocols/internet/ipv6_opts.py +1890 -0
- pcapkit/protocols/internet/ipv6_route.py +710 -0
- pcapkit/protocols/internet/ipx.py +230 -0
- pcapkit/protocols/internet/mh.py +2764 -0
- pcapkit/protocols/link/NotImplemented/dsl.py +0 -0
- pcapkit/protocols/link/NotImplemented/eapol.py +1 -0
- pcapkit/protocols/link/NotImplemented/fddi.py +0 -0
- pcapkit/protocols/link/NotImplemented/isdn.py +0 -0
- pcapkit/protocols/link/NotImplemented/ndp.py +0 -0
- pcapkit/protocols/link/NotImplemented/ppp.py +0 -0
- pcapkit/protocols/link/__init__.py +35 -0
- pcapkit/protocols/link/arp.py +421 -0
- pcapkit/protocols/link/ethernet.py +248 -0
- pcapkit/protocols/link/l2tp.py +267 -0
- pcapkit/protocols/link/link.py +140 -0
- pcapkit/protocols/link/ospf.py +342 -0
- pcapkit/protocols/link/rarp.py +82 -0
- pcapkit/protocols/link/vlan.py +225 -0
- pcapkit/protocols/misc/__init__.py +37 -0
- pcapkit/protocols/misc/null.py +129 -0
- pcapkit/protocols/misc/pcap/__init__.py +17 -0
- pcapkit/protocols/misc/pcap/frame.py +478 -0
- pcapkit/protocols/misc/pcap/header.py +358 -0
- pcapkit/protocols/misc/pcapng.py +5520 -0
- pcapkit/protocols/misc/raw.py +180 -0
- pcapkit/protocols/protocol.py +1216 -0
- pcapkit/protocols/schema/__init__.py +140 -0
- pcapkit/protocols/schema/application/__init__.py +40 -0
- pcapkit/protocols/schema/application/ftp.py +21 -0
- pcapkit/protocols/schema/application/httpv1.py +21 -0
- pcapkit/protocols/schema/application/httpv2.py +384 -0
- pcapkit/protocols/schema/internet/__init__.py +294 -0
- pcapkit/protocols/schema/internet/ah.py +40 -0
- pcapkit/protocols/schema/internet/hip.py +1184 -0
- pcapkit/protocols/schema/internet/hopopt.py +679 -0
- pcapkit/protocols/schema/internet/ipv4.py +576 -0
- pcapkit/protocols/schema/internet/ipv6.py +63 -0
- pcapkit/protocols/schema/internet/ipv6_frag.py +48 -0
- pcapkit/protocols/schema/internet/ipv6_opts.py +680 -0
- pcapkit/protocols/schema/internet/ipv6_route.py +198 -0
- pcapkit/protocols/schema/internet/ipx.py +40 -0
- pcapkit/protocols/schema/internet/mh.py +718 -0
- pcapkit/protocols/schema/link/__init__.py +19 -0
- pcapkit/protocols/schema/link/arp.py +39 -0
- pcapkit/protocols/schema/link/ethernet.py +51 -0
- pcapkit/protocols/schema/link/l2tp.py +88 -0
- pcapkit/protocols/schema/link/ospf.py +90 -0
- pcapkit/protocols/schema/link/vlan.py +69 -0
- pcapkit/protocols/schema/misc/__init__.py +108 -0
- pcapkit/protocols/schema/misc/null.py +18 -0
- pcapkit/protocols/schema/misc/pcap/__init__.py +10 -0
- pcapkit/protocols/schema/misc/pcap/frame.py +51 -0
- pcapkit/protocols/schema/misc/pcap/header.py +63 -0
- pcapkit/protocols/schema/misc/pcapng.py +1689 -0
- pcapkit/protocols/schema/misc/raw.py +24 -0
- pcapkit/protocols/schema/schema.py +809 -0
- pcapkit/protocols/schema/transport/__init__.py +69 -0
- pcapkit/protocols/schema/transport/tcp.py +928 -0
- pcapkit/protocols/schema/transport/udp.py +90 -0
- pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
- pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
- pcapkit/protocols/transport/NotImplemented/sctp.py +0 -0
- pcapkit/protocols/transport/__init__.py +27 -0
- pcapkit/protocols/transport/tcp.py +3025 -0
- pcapkit/protocols/transport/transport.py +158 -0
- pcapkit/protocols/transport/udp.py +214 -0
- pcapkit/py.typed +0 -0
- pcapkit/toolkit/__init__.py +57 -0
- pcapkit/toolkit/dpkt.py +306 -0
- pcapkit/toolkit/pcap.py +212 -0
- pcapkit/toolkit/pcapng.py +251 -0
- pcapkit/toolkit/pyshark.py +99 -0
- pcapkit/toolkit/scapy.py +297 -0
- pcapkit/utilities/__init__.py +20 -0
- pcapkit/utilities/compat.py +196 -0
- pcapkit/utilities/decorators.py +192 -0
- pcapkit/utilities/exceptions.py +365 -0
- pcapkit/utilities/logging.py +55 -0
- pcapkit/utilities/warnings.py +185 -0
- pcapkit/vendor/__init__.py +105 -0
- pcapkit/vendor/__main__.py +92 -0
- pcapkit/vendor/arp/__init__.py +27 -0
- pcapkit/vendor/arp/hardware.py +29 -0
- pcapkit/vendor/arp/operation.py +29 -0
- pcapkit/vendor/default.py +474 -0
- pcapkit/vendor/ftp/__init__.py +27 -0
- pcapkit/vendor/ftp/command.py +244 -0
- pcapkit/vendor/ftp/return_code.py +256 -0
- pcapkit/vendor/hip/__init__.py +94 -0
- pcapkit/vendor/hip/certificate.py +29 -0
- pcapkit/vendor/hip/cipher.py +29 -0
- pcapkit/vendor/hip/di.py +29 -0
- pcapkit/vendor/hip/ecdsa_curve.py +29 -0
- pcapkit/vendor/hip/ecdsa_low_curve.py +29 -0
- pcapkit/vendor/hip/eddsa_curve.py +85 -0
- pcapkit/vendor/hip/esp_transform_suite.py +29 -0
- pcapkit/vendor/hip/group.py +87 -0
- pcapkit/vendor/hip/hi_algorithm.py +29 -0
- pcapkit/vendor/hip/hit_suite.py +29 -0
- pcapkit/vendor/hip/nat_traversal.py +29 -0
- pcapkit/vendor/hip/notify_message.py +29 -0
- pcapkit/vendor/hip/packet.py +88 -0
- pcapkit/vendor/hip/parameter.py +88 -0
- pcapkit/vendor/hip/registration.py +29 -0
- pcapkit/vendor/hip/registration_failure.py +29 -0
- pcapkit/vendor/hip/suite.py +29 -0
- pcapkit/vendor/hip/transport.py +29 -0
- pcapkit/vendor/http/__init__.py +39 -0
- pcapkit/vendor/http/error_code.py +95 -0
- pcapkit/vendor/http/frame.py +91 -0
- pcapkit/vendor/http/method.py +167 -0
- pcapkit/vendor/http/setting.py +93 -0
- pcapkit/vendor/http/status_code.py +185 -0
- pcapkit/vendor/ipv4/__init__.py +57 -0
- pcapkit/vendor/ipv4/classification_level.py +91 -0
- pcapkit/vendor/ipv4/option_class.py +80 -0
- pcapkit/vendor/ipv4/option_number.py +105 -0
- pcapkit/vendor/ipv4/protection_authority.py +84 -0
- pcapkit/vendor/ipv4/qs_function.py +78 -0
- pcapkit/vendor/ipv4/router_alert.py +93 -0
- pcapkit/vendor/ipv4/tos_del.py +78 -0
- pcapkit/vendor/ipv4/tos_ecn.py +95 -0
- pcapkit/vendor/ipv4/tos_pre.py +84 -0
- pcapkit/vendor/ipv4/tos_rel.py +78 -0
- pcapkit/vendor/ipv4/tos_thr.py +77 -0
- pcapkit/vendor/ipv4/ts_flag.py +79 -0
- pcapkit/vendor/ipv6/__init__.py +53 -0
- pcapkit/vendor/ipv6/extension_header.py +171 -0
- pcapkit/vendor/ipv6/option.py +104 -0
- pcapkit/vendor/ipv6/option_action.py +90 -0
- pcapkit/vendor/ipv6/qs_function.py +78 -0
- pcapkit/vendor/ipv6/router_alert.py +93 -0
- pcapkit/vendor/ipv6/routing.py +87 -0
- pcapkit/vendor/ipv6/seed_id.py +81 -0
- pcapkit/vendor/ipv6/smf_dpd_mode.py +78 -0
- pcapkit/vendor/ipv6/tagger_id.py +81 -0
- pcapkit/vendor/ipx/__init__.py +37 -0
- pcapkit/vendor/ipx/packet.py +123 -0
- pcapkit/vendor/ipx/socket.py +125 -0
- pcapkit/vendor/l2tp/__init__.py +21 -0
- pcapkit/vendor/l2tp/type.py +78 -0
- pcapkit/vendor/mh/__init__.py +204 -0
- pcapkit/vendor/mh/access_type.py +87 -0
- pcapkit/vendor/mh/ack_status_code.py +88 -0
- pcapkit/vendor/mh/ani_suboption.py +88 -0
- pcapkit/vendor/mh/auth_subtype.py +83 -0
- pcapkit/vendor/mh/binding_ack_flag.py +148 -0
- pcapkit/vendor/mh/binding_error.py +78 -0
- pcapkit/vendor/mh/binding_revocation.py +87 -0
- pcapkit/vendor/mh/binding_update_flag.py +147 -0
- pcapkit/vendor/mh/cga_extension.py +91 -0
- pcapkit/vendor/mh/cga_sec.py +91 -0
- pcapkit/vendor/mh/cga_type.py +74 -0
- pcapkit/vendor/mh/dhcp_support_mode.py +77 -0
- pcapkit/vendor/mh/dns_status_code.py +87 -0
- pcapkit/vendor/mh/dsmip6_tls_packet.py +87 -0
- pcapkit/vendor/mh/dsmipv6_home_address.py +87 -0
- pcapkit/vendor/mh/enumerating_algorithm.py +82 -0
- pcapkit/vendor/mh/fb_ack_status.py +87 -0
- pcapkit/vendor/mh/fb_action.py +88 -0
- pcapkit/vendor/mh/fb_indication_trigger.py +87 -0
- pcapkit/vendor/mh/fb_type.py +88 -0
- pcapkit/vendor/mh/flow_id_status.py +87 -0
- pcapkit/vendor/mh/flow_id_suboption.py +87 -0
- pcapkit/vendor/mh/handoff_type.py +87 -0
- pcapkit/vendor/mh/handover_ack_flag.py +143 -0
- pcapkit/vendor/mh/handover_ack_status.py +87 -0
- pcapkit/vendor/mh/handover_initiate_flag.py +143 -0
- pcapkit/vendor/mh/handover_initiate_status.py +87 -0
- pcapkit/vendor/mh/home_address_reply.py +87 -0
- pcapkit/vendor/mh/lla_code.py +97 -0
- pcapkit/vendor/mh/lma_mag_suboption.py +88 -0
- pcapkit/vendor/mh/mn_group_id.py +87 -0
- pcapkit/vendor/mh/mn_id_subtype.py +87 -0
- pcapkit/vendor/mh/operator_id.py +87 -0
- pcapkit/vendor/mh/option.py +83 -0
- pcapkit/vendor/mh/packet.py +82 -0
- pcapkit/vendor/mh/qos_attribute.py +87 -0
- pcapkit/vendor/mh/revocation_status_code.py +87 -0
- pcapkit/vendor/mh/revocation_trigger.py +87 -0
- pcapkit/vendor/mh/status_code.py +91 -0
- pcapkit/vendor/mh/traffic_selector.py +87 -0
- pcapkit/vendor/mh/upa_status.py +87 -0
- pcapkit/vendor/mh/upn_reason.py +87 -0
- pcapkit/vendor/ospf/__init__.py +27 -0
- pcapkit/vendor/ospf/authentication.py +29 -0
- pcapkit/vendor/ospf/packet.py +29 -0
- pcapkit/vendor/pcapng/__init__.py +51 -0
- pcapkit/vendor/pcapng/block_type.py +94 -0
- pcapkit/vendor/pcapng/filter_type.py +77 -0
- pcapkit/vendor/pcapng/hash_algorithm.py +82 -0
- pcapkit/vendor/pcapng/option_type.py +287 -0
- pcapkit/vendor/pcapng/record_type.py +81 -0
- pcapkit/vendor/pcapng/secrets_type.py +81 -0
- pcapkit/vendor/pcapng/verdict_type.py +79 -0
- pcapkit/vendor/reg/__init__.py +34 -0
- pcapkit/vendor/reg/apptype.py +338 -0
- pcapkit/vendor/reg/ethertype.py +121 -0
- pcapkit/vendor/reg/linktype.py +110 -0
- pcapkit/vendor/reg/transtype.py +111 -0
- pcapkit/vendor/tcp/__init__.py +35 -0
- pcapkit/vendor/tcp/checksum.py +80 -0
- pcapkit/vendor/tcp/flags.py +149 -0
- pcapkit/vendor/tcp/mp_tcp_option.py +90 -0
- pcapkit/vendor/tcp/option.py +103 -0
- pcapkit/vendor/vlan/__init__.py +23 -0
- pcapkit/vendor/vlan/priority_level.py +97 -0
- pypcapkit-1.3.3.post1.dist-info/LICENSE +29 -0
- pypcapkit-1.3.3.post1.dist-info/METADATA +236 -0
- pypcapkit-1.3.3.post1.dist-info/RECORD +466 -0
- pypcapkit-1.3.3.post1.dist-info/WHEEL +5 -0
- pypcapkit-1.3.3.post1.dist-info/entry_points.txt +3 -0
- 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]
|