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,57 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# pylint: disable=unused-import
|
3
|
+
""":class:`~pcapkit.protocols.internet.ipv4.IPv4` Vendor Crawlers
|
4
|
+
====================================================================
|
5
|
+
|
6
|
+
.. module:: pcapkit.vendor.ipv4
|
7
|
+
|
8
|
+
This module contains all vendor crawlers of
|
9
|
+
:class:`~pcapkit.protocols.internet.ipv4.IPv4` implementations. Available
|
10
|
+
crawlers include:
|
11
|
+
|
12
|
+
.. list-table::
|
13
|
+
|
14
|
+
* - :class:`IPv4_ClassificationLevel <pcapkit.vendor.ipv4.classification_level.ClassificationLevel>`
|
15
|
+
- Classification Level Encodings
|
16
|
+
* - :class:`IPv4_OptionClass <pcapkit.vendor.ipv4.option_class.OptionClass>`
|
17
|
+
- Option Classes
|
18
|
+
* - :class:`IPv4_OptionNumber <pcapkit.vendor.ipv4.option_number.OptionNumber>`
|
19
|
+
- IP Option Numbers [*]_
|
20
|
+
* - :class:`IPv4_ProtectionAuthority <pcapkit.vendor.ipv4.protection_authority.ProtectionAuthority>`
|
21
|
+
- Protection Authority Bit Assignments
|
22
|
+
* - :class:`IPv4_QSFunction <pcapkit.vendor.ipv4.qs_function.QSFunction>`
|
23
|
+
- QS Functions
|
24
|
+
* - :class:`IPv4_RouterAlert <pcapkit.vendor.ipv4.router_alert.RouterAlert>`
|
25
|
+
- IPv4 Router Alert Option Values [*]_
|
26
|
+
* - :class:`IPv4_ToSDelay <pcapkit.vendor.ipv4.tos_del.ToSDelay>`
|
27
|
+
- ToS (DS Field) Delay
|
28
|
+
* - :class:`IPv4_ToSECN <pcapkit.vendor.ipv4.tos_ecn.ToSECN>`
|
29
|
+
- ToS ECN Field
|
30
|
+
* - :class:`IPv4_ToSPrecedence <pcapkit.vendor.ipv4.tos_pre.TOSPrecedence>`
|
31
|
+
- ToS (DS Field) Precedence
|
32
|
+
* - :class:`IPv4_ToSReliability <pcapkit.vendor.ipv4.tos_rel.TOSReliability>`
|
33
|
+
- ToS (DS Field) Reliability
|
34
|
+
* - :class:`IPv4_ToSThroughput <pcapkit.vendor.ipv4.tos_thr.TOSThroughput>`
|
35
|
+
- ToS (DS Field) Throughput
|
36
|
+
|
37
|
+
.. [*] https://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml#ip-parameters-1
|
38
|
+
.. [*] https://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml#ipv4-router-alert-option-values
|
39
|
+
|
40
|
+
"""
|
41
|
+
|
42
|
+
from pcapkit.vendor.ipv4.classification_level import ClassificationLevel as IPv4_ClassificationLevel
|
43
|
+
from pcapkit.vendor.ipv4.option_class import OptionClass as IPv4_OptionClass
|
44
|
+
from pcapkit.vendor.ipv4.option_number import OptionNumber as IPv4_OptionNumber
|
45
|
+
from pcapkit.vendor.ipv4.protection_authority import ProtectionAuthority as IPv4_ProtectionAuthority
|
46
|
+
from pcapkit.vendor.ipv4.qs_function import QSFunction as IPv4_QSFunction
|
47
|
+
from pcapkit.vendor.ipv4.router_alert import RouterAlert as IPv4_RouterAlert
|
48
|
+
from pcapkit.vendor.ipv4.tos_del import ToSDelay as IPv4_ToSDelay
|
49
|
+
from pcapkit.vendor.ipv4.tos_ecn import ToSECN as IPv4_ToSECN
|
50
|
+
from pcapkit.vendor.ipv4.tos_pre import ToSPrecedence as IPv4_ToSPrecedence
|
51
|
+
from pcapkit.vendor.ipv4.tos_rel import ToSReliability as IPv4_ToSReliability
|
52
|
+
from pcapkit.vendor.ipv4.tos_thr import ToSThroughput as IPv4_ToSThroughput
|
53
|
+
from pcapkit.vendor.ipv4.ts_flag import TSFlag as IPv4_TSFlag
|
54
|
+
|
55
|
+
__all__ = ['IPv4_ClassificationLevel', 'IPv4_OptionClass', 'IPv4_OptionNumber', 'IPv4_ProtectionAuthority',
|
56
|
+
'IPv4_QSFunction', 'IPv4_RouterAlert', 'IPv4_ToSDelay', 'IPv4_ToSECN', 'IPv4_ToSPrecedence',
|
57
|
+
'IPv4_ToSReliability', 'IPv4_ToSThroughput', 'IPv4_TSFlag']
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""Classification Level Encodings
|
3
|
+
====================================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.classification_level
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **Classification Level Encodings**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.classification_level.ClassificationLevel`.
|
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__ = ['ClassificationLevel']
|
22
|
+
|
23
|
+
#: Encoding registry.
|
24
|
+
DATA = {
|
25
|
+
0b0000_0001: 'Reserved [4]',
|
26
|
+
0b0011_1101: 'Top Secret',
|
27
|
+
0b0101_1010: 'Secret',
|
28
|
+
0b1001_0110: 'Confidential',
|
29
|
+
0b0110_0110: 'Reserved [3]',
|
30
|
+
0b1100_1100: 'Reserved [2]',
|
31
|
+
0b1010_1011: 'Unclassified',
|
32
|
+
0b1111_0001: 'Reserved [1]',
|
33
|
+
} # type: dict[int, str]
|
34
|
+
|
35
|
+
|
36
|
+
def binary(code: 'int') -> 'str':
|
37
|
+
"""Convert code to binary form."""
|
38
|
+
return f'0b{bin(code)[2:].upper().zfill(8)}'
|
39
|
+
|
40
|
+
|
41
|
+
class ClassificationLevel(Vendor):
|
42
|
+
"""Classification Level Encodings"""
|
43
|
+
|
44
|
+
#: Value limit checker.
|
45
|
+
FLAG = 'isinstance(value, int) and 0b00000000 <= value <= 0b11111111'
|
46
|
+
|
47
|
+
def request(self) -> 'dict[int, str]': # type: ignore[override] # pylint: disable=arguments-differ
|
48
|
+
"""Fetch registry data.
|
49
|
+
|
50
|
+
Returns:
|
51
|
+
Registry data (:data:`~pcapkit.vendor.ipv4.classification_level.DATA`).
|
52
|
+
|
53
|
+
"""
|
54
|
+
return DATA
|
55
|
+
|
56
|
+
def count(self, data: 'dict[int, str]') -> 'Counter[str]': # type: ignore[override]
|
57
|
+
"""Count field records.
|
58
|
+
|
59
|
+
Args:
|
60
|
+
data: Registry data.
|
61
|
+
|
62
|
+
Returns:
|
63
|
+
Field recordings.
|
64
|
+
|
65
|
+
"""
|
66
|
+
return collections.Counter(map(self.safe_name, data.values()))
|
67
|
+
|
68
|
+
def process(self, data: 'dict[int, str]') -> 'tuple[list[str], list[str]]': # type: ignore[override]
|
69
|
+
"""Process registry data.
|
70
|
+
|
71
|
+
Args:
|
72
|
+
data: Registry data.
|
73
|
+
|
74
|
+
Returns:
|
75
|
+
Enumeration fields and missing fields.
|
76
|
+
|
77
|
+
"""
|
78
|
+
enum = [] # type: list[str]
|
79
|
+
miss = [
|
80
|
+
'temp = bin(value)[2:].upper().zfill(8)',
|
81
|
+
"return extend_enum(cls, 'Unassigned_0b%s' % (temp[:4]+'_'+temp[4:]), value)",
|
82
|
+
]
|
83
|
+
for code, name in data.items():
|
84
|
+
bncd = binary(code)
|
85
|
+
renm = self.rename(name, bncd)
|
86
|
+
enum.append(f"{renm} = {bncd}".ljust(76))
|
87
|
+
return enum, miss
|
88
|
+
|
89
|
+
|
90
|
+
if __name__ == '__main__':
|
91
|
+
sys.exit(ClassificationLevel()) # type: ignore[arg-type]
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""Option Classes
|
3
|
+
====================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.option_class
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **Option Classes**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.option_class.OptionClass`.
|
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__ = ['OptionClass']
|
22
|
+
|
23
|
+
#: Option class registry.
|
24
|
+
DATA = {
|
25
|
+
0: 'control',
|
26
|
+
1: 'reserved for future use',
|
27
|
+
2: 'debugging and measurement',
|
28
|
+
3: 'reserved for future use',
|
29
|
+
} # type: dict[int, str]
|
30
|
+
|
31
|
+
|
32
|
+
class OptionClass(Vendor):
|
33
|
+
"""Option Classes"""
|
34
|
+
|
35
|
+
#: Value limit checker.s
|
36
|
+
FLAG = 'isinstance(value, int) and 0 <= value <= 3'
|
37
|
+
|
38
|
+
def request(self) -> 'dict[int, str]': # type: ignore[override] # pylint: disable=arguments-differ
|
39
|
+
"""Fetch registry data.
|
40
|
+
|
41
|
+
Returns:
|
42
|
+
Registry data (:data:`~pcapkit.vendor.ipv4.option_class.DATA`).
|
43
|
+
|
44
|
+
"""
|
45
|
+
return DATA
|
46
|
+
|
47
|
+
def count(self, data: 'dict[int, str]') -> 'Counter[str]': # type: ignore[override]
|
48
|
+
"""Count field records.
|
49
|
+
|
50
|
+
Args:
|
51
|
+
data: Registry data.
|
52
|
+
|
53
|
+
Returns:
|
54
|
+
Field recordings.
|
55
|
+
|
56
|
+
"""
|
57
|
+
return collections.Counter(map(self.safe_name, data.values()))
|
58
|
+
|
59
|
+
def process(self, data: 'dict[int, str]') -> 'tuple[list[str], list[str]]': # type: ignore[override]
|
60
|
+
"""Process registry data.
|
61
|
+
|
62
|
+
Args:
|
63
|
+
data: Registry data.
|
64
|
+
|
65
|
+
Returns:
|
66
|
+
Enumeration fields and missing fields.
|
67
|
+
|
68
|
+
"""
|
69
|
+
enum = [] # type: list[str]
|
70
|
+
miss = [
|
71
|
+
"return extend_enum(cls, 'Unassigned_%d' % value, value)",
|
72
|
+
]
|
73
|
+
for code, name in data.items():
|
74
|
+
renm = self.rename(name, code) # type: ignore[arg-type]
|
75
|
+
enum.append(f"{renm} = {code}".ljust(76))
|
76
|
+
return enum, miss
|
77
|
+
|
78
|
+
|
79
|
+
if __name__ == '__main__':
|
80
|
+
sys.exit(OptionClass()) # type: ignore[arg-type]
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""IP Option Numbers
|
3
|
+
=======================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.option_number
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **IP Option Numbers**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.option_number.OptionNumber`.
|
9
|
+
|
10
|
+
"""
|
11
|
+
|
12
|
+
import collections
|
13
|
+
import csv
|
14
|
+
import re
|
15
|
+
import sys
|
16
|
+
from typing import TYPE_CHECKING
|
17
|
+
|
18
|
+
from pcapkit.vendor.default import Vendor
|
19
|
+
|
20
|
+
if TYPE_CHECKING:
|
21
|
+
from collections import Counter
|
22
|
+
|
23
|
+
__all__ = ['OptionNumber']
|
24
|
+
|
25
|
+
|
26
|
+
class OptionNumber(Vendor):
|
27
|
+
"""IP Option Numbers"""
|
28
|
+
|
29
|
+
#: Value limit checker.
|
30
|
+
FLAG = 'isinstance(value, int) and 0 <= value <= 255'
|
31
|
+
#: Link to registry.
|
32
|
+
LINK = 'https://www.iana.org/assignments/ip-parameters/ip-parameters-1.csv'
|
33
|
+
|
34
|
+
def count(self, data: 'list[str]') -> 'Counter[str]':
|
35
|
+
"""Count field records.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
data: Registry data.
|
39
|
+
|
40
|
+
Returns:
|
41
|
+
Field recordings.
|
42
|
+
|
43
|
+
"""
|
44
|
+
reader = csv.reader(data)
|
45
|
+
next(reader) # header
|
46
|
+
return collections.Counter(map(lambda item: self.safe_name(item[4]),
|
47
|
+
filter(lambda item: len(item[3].split('-')) != 2, reader)))
|
48
|
+
|
49
|
+
def process(self, data: 'list[str]') -> 'tuple[list[str], list[str]]':
|
50
|
+
"""Process CSV data.
|
51
|
+
|
52
|
+
Args:
|
53
|
+
data: CSV data.
|
54
|
+
|
55
|
+
Returns:
|
56
|
+
Enumeration fields and missing fields.
|
57
|
+
|
58
|
+
"""
|
59
|
+
reader = csv.reader(data)
|
60
|
+
next(reader) # header
|
61
|
+
|
62
|
+
enum = [] # type: list[str]
|
63
|
+
miss = [
|
64
|
+
"return extend_enum(cls, 'Unassigned_%d' % value, value)",
|
65
|
+
]
|
66
|
+
for item in reader:
|
67
|
+
code = item[3]
|
68
|
+
dscp = item[4]
|
69
|
+
rfcs = item[5]
|
70
|
+
|
71
|
+
temp = [] # type: list[str]
|
72
|
+
for rfc in filter(None, re.split(r'\[|\]', rfcs)):
|
73
|
+
if re.match(r'\d+', rfc):
|
74
|
+
continue
|
75
|
+
if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
|
76
|
+
#temp.append(f'[{rfc[:3]} {rfc[3:]}]')
|
77
|
+
temp.append(f'[:rfc:`{rfc[3:]}`]')
|
78
|
+
else:
|
79
|
+
temp.append(f'[{rfc}]'.replace('_', ' '))
|
80
|
+
tmp1 = f" {''.join(temp)}" if rfcs else ''
|
81
|
+
|
82
|
+
abbr, name = [s.strip() for s in dscp.split('- ')]
|
83
|
+
tmp2 = re.sub(r'\[\d+\]', '', name).strip()
|
84
|
+
|
85
|
+
if abbr:
|
86
|
+
name = f', {tmp2}' if tmp2 else ''
|
87
|
+
desc = self.wrap_comment(f'``{abbr}``{name}{tmp1}')
|
88
|
+
else:
|
89
|
+
name = tmp2 or ''
|
90
|
+
desc = self.wrap_comment(f'{name}{tmp1}')
|
91
|
+
|
92
|
+
renm = self.rename(abbr or 'Unassigned', code, original=dscp)
|
93
|
+
pres = f"{renm} = {code}"
|
94
|
+
sufs = f'#: {desc}'
|
95
|
+
|
96
|
+
#if len(pres) > 74:
|
97
|
+
# sufs = f"\n{' '*80}{sufs}"
|
98
|
+
|
99
|
+
#enum.append(f'{pres.ljust(76)}{sufs}')
|
100
|
+
enum.append(f'{sufs}\n {pres}')
|
101
|
+
return enum, miss
|
102
|
+
|
103
|
+
|
104
|
+
if __name__ == '__main__':
|
105
|
+
sys.exit(OptionNumber()) # type: ignore[arg-type]
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""Protection Authority Bit Assignments
|
3
|
+
==========================================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.protection_authority
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **Protection Authority Bit Assignments**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.protection_authority.ProtectionAuthority`.
|
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__ = ['ProtectionAuthority']
|
22
|
+
|
23
|
+
#: Protection authority registry.
|
24
|
+
DATA = {
|
25
|
+
0: 'GENSER',
|
26
|
+
1: 'SIOP-ESI',
|
27
|
+
2: 'SCI',
|
28
|
+
3: 'NSA',
|
29
|
+
4: 'DOE',
|
30
|
+
5: 'Unassigned',
|
31
|
+
6: 'Unassigned',
|
32
|
+
7: 'Field Termination Indicator',
|
33
|
+
} # type: dict[int, str]
|
34
|
+
|
35
|
+
|
36
|
+
class ProtectionAuthority(Vendor):
|
37
|
+
"""Protection Authority Bit Assignments"""
|
38
|
+
|
39
|
+
#: Value limit checker.
|
40
|
+
FLAG = 'isinstance(value, int) and value >= 0'
|
41
|
+
|
42
|
+
def request(self) -> 'dict[int, str]': # type: ignore[override] # pylint: disable=arguments-differ
|
43
|
+
"""Fetch registry data.
|
44
|
+
|
45
|
+
Returns:
|
46
|
+
Registry data (:data:`~pcapkit.vendor.ipv4.protection_authority.DATA`).
|
47
|
+
|
48
|
+
"""
|
49
|
+
return DATA
|
50
|
+
|
51
|
+
def count(self, data: 'dict[int, str]') -> 'Counter[str]': # type: ignore[override]
|
52
|
+
"""Count field records.
|
53
|
+
|
54
|
+
Args:
|
55
|
+
data: Registry data.
|
56
|
+
|
57
|
+
Returns:
|
58
|
+
Field recordings.
|
59
|
+
|
60
|
+
"""
|
61
|
+
return collections.Counter(map(self.safe_name, data.values()))
|
62
|
+
|
63
|
+
def process(self, data: 'dict[int, str]') -> 'tuple[list[str], list[str]]': # type: ignore[override]
|
64
|
+
"""Process registry data.
|
65
|
+
|
66
|
+
Args:
|
67
|
+
data: Registry data.
|
68
|
+
|
69
|
+
Returns:
|
70
|
+
Enumeration fields and missing fields.
|
71
|
+
|
72
|
+
"""
|
73
|
+
enum = [] # type: list[str]
|
74
|
+
miss = [
|
75
|
+
"return extend_enum(cls, 'Unassigned_%d' % value, value)",
|
76
|
+
]
|
77
|
+
for code, name in data.items():
|
78
|
+
renm = self.rename(name, code) # type: ignore[arg-type]
|
79
|
+
enum.append(f"{renm} = {code}".ljust(76))
|
80
|
+
return enum, miss
|
81
|
+
|
82
|
+
|
83
|
+
if __name__ == '__main__':
|
84
|
+
sys.exit(ProtectionAuthority()) # type: ignore[arg-type]
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""QS Functions
|
3
|
+
==================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.qs_function
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **QS Functions**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.qs_function.QSFunction`.
|
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__ = ['QSFunction']
|
22
|
+
|
23
|
+
#: QS function registry.
|
24
|
+
DATA = {
|
25
|
+
0: 'Quick-Start Request',
|
26
|
+
8: 'Report of Approved Rate',
|
27
|
+
} # type: dict[int, str]
|
28
|
+
|
29
|
+
|
30
|
+
class QSFunction(Vendor):
|
31
|
+
"""QS Functions"""
|
32
|
+
|
33
|
+
#: Value limit checker.
|
34
|
+
FLAG = 'isinstance(value, int) and 0 <= value <= 8'
|
35
|
+
|
36
|
+
def request(self) -> 'dict[int, str]': # type: ignore[override] # pylint: disable=arguments-differ
|
37
|
+
"""Fetch registry data.
|
38
|
+
|
39
|
+
Returns:
|
40
|
+
Registry data (:data:`~pcapkit.vendor.ipv4.qs_function.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]
|
58
|
+
"""Process registry data.
|
59
|
+
|
60
|
+
Args:
|
61
|
+
data: Registry data.
|
62
|
+
|
63
|
+
Returns:
|
64
|
+
Enumeration fields and missing fields.
|
65
|
+
|
66
|
+
"""
|
67
|
+
enum = [] # type: list[str]
|
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(QSFunction()) # type: ignore[arg-type]
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""IPv4 Router Alert Option Values
|
3
|
+
=====================================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.router_alert
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **IPv4 Router Alert Option Values**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.router_alert.RouterAlert`.
|
9
|
+
|
10
|
+
"""
|
11
|
+
|
12
|
+
import csv
|
13
|
+
import re
|
14
|
+
import sys
|
15
|
+
|
16
|
+
from pcapkit.vendor.default import Vendor
|
17
|
+
|
18
|
+
__all__ = ['RouterAlert']
|
19
|
+
|
20
|
+
|
21
|
+
class RouterAlert(Vendor):
|
22
|
+
"""IPv4 Router Alert Option Values"""
|
23
|
+
|
24
|
+
#: Value limit checker.
|
25
|
+
FLAG = 'isinstance(value, int) and 0 <= value <= 65535'
|
26
|
+
#: Link to registry.
|
27
|
+
LINK = 'https://www.iana.org/assignments/ip-parameters/ipv4-router-alert-option-values.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
|
+
name = 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
|
+
desc = self.wrap_comment(re.sub(r'\r*\n', ' ', '%s %s' % ( # pylint: disable=consider-using-f-string
|
56
|
+
name, ''.join(temp) if rfcs else '',
|
57
|
+
), re.MULTILINE))
|
58
|
+
|
59
|
+
try:
|
60
|
+
code, _ = item[0], int(item[0])
|
61
|
+
renm = self.rename(name, code)
|
62
|
+
|
63
|
+
pres = f"{renm} = {code}"
|
64
|
+
sufs = f'#: {desc}'
|
65
|
+
|
66
|
+
#if len(pres) > 74:
|
67
|
+
# sufs = f"\n{' '*80}{sufs}"
|
68
|
+
|
69
|
+
#enum.append(f'{pres.ljust(76)}{sufs}')
|
70
|
+
enum.append(f'{sufs}\n {pres}')
|
71
|
+
except ValueError:
|
72
|
+
start, stop = map(int, item[0].split('-'))
|
73
|
+
|
74
|
+
if 'Level' in name:
|
75
|
+
base = name.rstrip('s 0-31')
|
76
|
+
for tmp_code in range(start, stop+1):
|
77
|
+
renm = self.safe_name(f'{base}_{tmp_code-start}')
|
78
|
+
pres = f"{renm} = {tmp_code}"
|
79
|
+
|
80
|
+
#if len(pres) > 74:
|
81
|
+
# sufs = f"\n{' '*80}{sufs}"
|
82
|
+
|
83
|
+
#enum.append(f'{pres.ljust(76)}{sufs}')
|
84
|
+
enum.append(f'#: {desc}\n {pres}')
|
85
|
+
else:
|
86
|
+
miss.append(f'if {start} <= value <= {stop}:')
|
87
|
+
miss.append(f' #: {desc}')
|
88
|
+
miss.append(f" return extend_enum(cls, '{name}_%d' % value, value)")
|
89
|
+
return enum, miss
|
90
|
+
|
91
|
+
|
92
|
+
if __name__ == '__main__':
|
93
|
+
sys.exit(RouterAlert()) # type: ignore[arg-type]
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""ToS (DS Field) Delay
|
3
|
+
==========================
|
4
|
+
|
5
|
+
.. module:: pcapkit.vendor.ipv4.tos_del
|
6
|
+
|
7
|
+
This module contains the vendor crawler for **ToS (DS Field) Delay**,
|
8
|
+
which is automatically generating :class:`pcapkit.const.ipv4.tos_del.ToSDelay`.
|
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__ = ['ToSDelay']
|
22
|
+
|
23
|
+
#: ToS registry.
|
24
|
+
DATA = {
|
25
|
+
0: 'Normal',
|
26
|
+
1: 'Low',
|
27
|
+
} # type: dict[int, str]
|
28
|
+
|
29
|
+
|
30
|
+
class ToSDelay(Vendor):
|
31
|
+
"""ToS (DS Field) Delay"""
|
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
|
+
Registry data (:data:`~pcapkit.vendor.ipv4.tos_del.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]
|
58
|
+
"""Process registry data.
|
59
|
+
|
60
|
+
Args:
|
61
|
+
data: Registry data.
|
62
|
+
|
63
|
+
Returns:
|
64
|
+
Enumeration fields and missing fields.
|
65
|
+
|
66
|
+
"""
|
67
|
+
enum = [] # type: list[str]
|
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).upper() # 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(ToSDelay()) # type: ignore[arg-type]
|