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,29 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""data model for UDP protocol"""
|
3
|
+
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
from pcapkit.corekit.infoclass import info_final
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
|
+
|
9
|
+
if TYPE_CHECKING:
|
10
|
+
from pcapkit.const.reg.apptype import AppType
|
11
|
+
|
12
|
+
__all__ = ['UDP']
|
13
|
+
|
14
|
+
|
15
|
+
@info_final
|
16
|
+
class UDP(Protocol):
|
17
|
+
"""Data model for UDP protocol."""
|
18
|
+
|
19
|
+
#: Source port.
|
20
|
+
srcport: 'AppType'
|
21
|
+
#: Destination port.
|
22
|
+
dstport: 'AppType'
|
23
|
+
#: Length (header includes).
|
24
|
+
len: 'int'
|
25
|
+
#: Checksum.
|
26
|
+
checksum: 'bytes'
|
27
|
+
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
def __init__(self, srcport: 'AppType', dstport: 'AppType', len: 'int', checksum: 'bytes') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,redefined-builtin
|
File without changes
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""encapsulating security payload
|
3
|
+
|
4
|
+
``jspcap.protocols.internet.esp`` contains ``ESP`` only,
|
5
|
+
which implements Encapsulating Security Payload header
|
6
|
+
(ESP), whose structure is described as below.
|
7
|
+
|
8
|
+
0 1 2 3
|
9
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
10
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|
11
|
+
| Security Parameters Index (SPI) | ^Int.
|
12
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|
13
|
+
| Sequence Number | |ered
|
14
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|
15
|
+
| Payload Data* (variable) | | ^
|
16
|
+
~ ~ | |
|
17
|
+
| | |Conf.
|
18
|
+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|
19
|
+
| | Padding (0-255 bytes) | |ered*
|
20
|
+
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
|
21
|
+
| | Pad Length | Next Header | v v
|
22
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|
23
|
+
| Integrity Check Value-ICV (variable) |
|
24
|
+
~ ~
|
25
|
+
| |
|
26
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
27
|
+
|
28
|
+
"""
|
29
|
+
from pcapkit.corekit.infoclass import Info
|
30
|
+
from pcapkit.protocols.internet.ipsec import IPsec
|
31
|
+
|
32
|
+
__all__ = ['ESP']
|
33
|
+
|
34
|
+
|
35
|
+
class ESP(IPsec):
|
36
|
+
"""This class implements Encapsulating Security Payload."""
|
37
|
+
|
38
|
+
##########################################################################
|
39
|
+
# Properties.
|
40
|
+
##########################################################################
|
41
|
+
|
42
|
+
@property
|
43
|
+
def name(self):
|
44
|
+
"""Name of corresponding protocol."""
|
45
|
+
return 'Encapsulating Security Payload'
|
46
|
+
|
47
|
+
@property
|
48
|
+
def length(self):
|
49
|
+
""""Header length of current protocol."""
|
50
|
+
return self._info.length
|
51
|
+
|
52
|
+
@property
|
53
|
+
def protocol(self):
|
54
|
+
"""Name of next layer protocol."""
|
55
|
+
return self._info.next
|
56
|
+
|
57
|
+
##########################################################################
|
58
|
+
# Methods.
|
59
|
+
##########################################################################
|
60
|
+
|
61
|
+
def read(self, length, version):
|
62
|
+
"""Read Encapsulating Security Payload.
|
63
|
+
|
64
|
+
Structure of ESP header [RFC 4303]:
|
65
|
+
|
66
|
+
0 1 2 3
|
67
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
68
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|
69
|
+
| Security Parameters Index (SPI) | ^Int.
|
70
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|
71
|
+
| Sequence Number | |ered
|
72
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|
73
|
+
| Payload Data* (variable) | | ^
|
74
|
+
~ ~ | |
|
75
|
+
| | |Conf.
|
76
|
+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|
77
|
+
| | Padding (0-255 bytes) | |ered*
|
78
|
+
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
|
79
|
+
| | Pad Length | Next Header | v v
|
80
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|
81
|
+
| Integrity Check Value-ICV (variable) |
|
82
|
+
~ ~
|
83
|
+
| |
|
84
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
85
|
+
|
86
|
+
"""
|
87
|
+
pass
|
88
|
+
|
89
|
+
##########################################################################
|
90
|
+
# Data models.
|
91
|
+
##########################################################################
|
92
|
+
|
93
|
+
def __len__(self):
|
94
|
+
return self._info.length
|
95
|
+
|
96
|
+
def __length_hint__(self):
|
97
|
+
return 256
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# pylint: disable=unused-import,fixme
|
3
|
+
"""Internet Layer Protocols
|
4
|
+
==============================
|
5
|
+
|
6
|
+
.. module:: pcapkit.protocols.internet
|
7
|
+
|
8
|
+
:mod:`pcapkit.protocols.internet` is collection of all protocols
|
9
|
+
in internet layer, with detailed implementation and methods.
|
10
|
+
|
11
|
+
"""
|
12
|
+
# TODO: Implements ECN, ESP, ICMP, ICMPv6, IGMP, Shim6.
|
13
|
+
|
14
|
+
# Base Class for Internet Layer
|
15
|
+
from pcapkit.protocols.internet.internet import Internet
|
16
|
+
|
17
|
+
# Utility Classes for Protocols
|
18
|
+
from pcapkit.protocols.internet.ah import AH
|
19
|
+
from pcapkit.protocols.internet.ipv4 import IPv4
|
20
|
+
from pcapkit.protocols.internet.ipv6 import IPv6
|
21
|
+
from pcapkit.protocols.internet.ipx import IPX
|
22
|
+
|
23
|
+
# IPv6 Extension Headers
|
24
|
+
from pcapkit.protocols.internet.hip import HIP
|
25
|
+
from pcapkit.protocols.internet.hopopt import HOPOPT
|
26
|
+
from pcapkit.protocols.internet.ipv6_frag import IPv6_Frag
|
27
|
+
from pcapkit.protocols.internet.ipv6_opts import IPv6_Opts
|
28
|
+
from pcapkit.protocols.internet.ipv6_route import IPv6_Route
|
29
|
+
from pcapkit.protocols.internet.mh import MH
|
30
|
+
|
31
|
+
# Ethertype IEEE 802 Numbers
|
32
|
+
from pcapkit.const.reg.ethertype import EtherType as ETHERTYPE
|
33
|
+
|
34
|
+
# Deprecated / Base Classes
|
35
|
+
from pcapkit.protocols.internet.ip import IP
|
36
|
+
from pcapkit.protocols.internet.ipsec import IPsec
|
37
|
+
|
38
|
+
__all__ = [
|
39
|
+
'ETHERTYPE', # Protocol Numbers
|
40
|
+
'AH', 'IP', 'IPsec', 'IPv4', 'IPv6', 'IPX', # Internet Layer
|
41
|
+
'HIP', 'HOPOPT', 'IPv6_Frag',
|
42
|
+
'IPv6_Opts', 'IPv6_Route', 'MH', # IPv6 Extension Header
|
43
|
+
]
|
@@ -0,0 +1,275 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""AH - Authentication Header
|
3
|
+
================================
|
4
|
+
|
5
|
+
.. module:: pcapkit.protocols.internet.ah
|
6
|
+
|
7
|
+
:mod:`pcapkit.protocols.internet.ah` contains
|
8
|
+
:class:`~pcapkit.protocols.internet.AH` only,
|
9
|
+
which implements extractor for Authentication
|
10
|
+
Header (AH) [*]_, whose structure is described
|
11
|
+
as below:
|
12
|
+
|
13
|
+
======= ========= ======================= ===================================
|
14
|
+
Octets Bits Name Description
|
15
|
+
======= ========= ======================= ===================================
|
16
|
+
0 0 ``ah.next`` Next Header
|
17
|
+
1 8 ``ah.length`` Payload Length
|
18
|
+
2 16 Reserved (must be zero)
|
19
|
+
4 32 ``sah.spi`` Security Parameters Index (SPI)
|
20
|
+
8 64 ``sah.seq`` Sequence Number Field
|
21
|
+
12 96 ``sah.icv`` Integrity Check Value (ICV)
|
22
|
+
======= ========= ======================= ===================================
|
23
|
+
|
24
|
+
.. [*] https://en.wikipedia.org/wiki/IPsec
|
25
|
+
|
26
|
+
"""
|
27
|
+
from typing import TYPE_CHECKING, overload
|
28
|
+
|
29
|
+
from pcapkit.const.reg.transtype import TransType as Enum_TransType
|
30
|
+
from pcapkit.protocols.data.internet.ah import AH as Data_AH
|
31
|
+
from pcapkit.protocols.internet.ipsec import IPsec
|
32
|
+
from pcapkit.protocols.schema.internet.ah import AH as Schema_AH
|
33
|
+
from pcapkit.utilities.exceptions import UnsupportedCall
|
34
|
+
|
35
|
+
if TYPE_CHECKING:
|
36
|
+
from enum import IntEnum as StdlibEnum
|
37
|
+
from typing import IO, Any, NoReturn, Optional, Type
|
38
|
+
|
39
|
+
from aenum import IntEnum as AenumEnum
|
40
|
+
from typing_extensions import Literal
|
41
|
+
|
42
|
+
from pcapkit.corekit.protochain import ProtoChain
|
43
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
44
|
+
from pcapkit.protocols.schema.schema import Schema
|
45
|
+
|
46
|
+
__all__ = ['AH']
|
47
|
+
|
48
|
+
|
49
|
+
class AH(IPsec[Data_AH, Schema_AH],
|
50
|
+
schema=Schema_AH, data=Data_AH):
|
51
|
+
"""This class implements Authentication Header."""
|
52
|
+
|
53
|
+
##########################################################################
|
54
|
+
# Properties.
|
55
|
+
##########################################################################
|
56
|
+
|
57
|
+
@property
|
58
|
+
def name(self) -> 'Literal["Authentication Header"]':
|
59
|
+
"""Name of corresponding protocol."""
|
60
|
+
return 'Authentication Header'
|
61
|
+
|
62
|
+
@property
|
63
|
+
def length(self) -> 'int':
|
64
|
+
"""Header length of current protocol."""
|
65
|
+
return self._info.length
|
66
|
+
|
67
|
+
@property
|
68
|
+
def payload(self) -> 'Protocol | NoReturn':
|
69
|
+
"""Payload of current instance.
|
70
|
+
|
71
|
+
Raises:
|
72
|
+
UnsupportedCall: if the protocol is used as an IPv6 extension header
|
73
|
+
|
74
|
+
"""
|
75
|
+
if self._extf:
|
76
|
+
raise UnsupportedCall(f"'{self.__class__.__name__}' object has no attribute 'payload'")
|
77
|
+
return super().payload
|
78
|
+
|
79
|
+
@property
|
80
|
+
def protocol(self) -> 'Optional[str] | NoReturn':
|
81
|
+
"""Name of next layer protocol (if any).
|
82
|
+
|
83
|
+
Raises:
|
84
|
+
UnsupportedCall: if the protocol is used as an IPv6 extension header
|
85
|
+
|
86
|
+
"""
|
87
|
+
if self._extf:
|
88
|
+
raise UnsupportedCall(f"'{self.__class__.__name__}' object has no attribute 'protocol'")
|
89
|
+
return super().protocol
|
90
|
+
|
91
|
+
@property
|
92
|
+
def protochain(self) -> 'ProtoChain | NoReturn':
|
93
|
+
"""Protocol chain of current instance.
|
94
|
+
|
95
|
+
Raises:
|
96
|
+
UnsupportedCall: if the protocol is used as an IPv6 extension header
|
97
|
+
|
98
|
+
"""
|
99
|
+
if self._extf:
|
100
|
+
raise UnsupportedCall(f"'{self.__class__.__name__}' object has no attribute 'protochain'")
|
101
|
+
return super().protochain
|
102
|
+
|
103
|
+
##########################################################################
|
104
|
+
# Methods.
|
105
|
+
##########################################################################
|
106
|
+
|
107
|
+
def read(self, length: 'Optional[int]' = None, *, version: 'Literal[4, 6]' = 4, # pylint: disable=arguments-differ
|
108
|
+
extension: bool = False, **kwargs: 'Any') -> 'Data_AH': # pylint: disable=unused-argument
|
109
|
+
"""Read Authentication Header.
|
110
|
+
|
111
|
+
Structure of AH header [:rfc:`4302`]:
|
112
|
+
|
113
|
+
.. code-block:: text
|
114
|
+
|
115
|
+
0 1 2 3
|
116
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
117
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
118
|
+
| Next Header | Payload Len | RESERVED |
|
119
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
120
|
+
| Security Parameters Index (SPI) |
|
121
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
122
|
+
| Sequence Number Field |
|
123
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
124
|
+
| |
|
125
|
+
+ Integrity Check Value-ICV (variable) |
|
126
|
+
| |
|
127
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
128
|
+
|
129
|
+
Args:
|
130
|
+
length: Length of packet data.
|
131
|
+
version: IP protocol version.
|
132
|
+
extension: If the protocol is used as an IPv6 extension header.
|
133
|
+
**kwargs: Arbitrary keyword arguments.
|
134
|
+
|
135
|
+
Returns:
|
136
|
+
Parsed packet data.
|
137
|
+
|
138
|
+
"""
|
139
|
+
if length is None:
|
140
|
+
length = len(self)
|
141
|
+
schema = self.__header__
|
142
|
+
|
143
|
+
ah = Data_AH(
|
144
|
+
next=schema.next,
|
145
|
+
length=(schema.len + 2) * 4,
|
146
|
+
spi=schema.spi,
|
147
|
+
seq=schema.seq,
|
148
|
+
icv=schema.icv,
|
149
|
+
)
|
150
|
+
|
151
|
+
if extension:
|
152
|
+
return ah
|
153
|
+
return self._decode_next_layer(ah, schema.next, length - ah.length)
|
154
|
+
|
155
|
+
def make(self,
|
156
|
+
next: 'Enum_TransType | StdlibEnum | AenumEnum | str | int' = Enum_TransType.UDP,
|
157
|
+
next_default: 'Optional[int]' = None,
|
158
|
+
next_namespace: 'Optional[dict[str, int] | dict[int, str] | Type[StdlibEnum] | Type[AenumEnum]]' = None, # pylint: disable=line-too-long
|
159
|
+
next_reversed: 'bool' = False,
|
160
|
+
spi: 'int' = 0,
|
161
|
+
seq: 'int' = 0,
|
162
|
+
icv: 'bytes' = b'',
|
163
|
+
payload: 'bytes | Protocol | Schema' = b'',
|
164
|
+
**kwargs: 'Any') -> 'Schema_AH':
|
165
|
+
"""Make (construct) packet data.
|
166
|
+
|
167
|
+
Args:
|
168
|
+
next: Next header type.
|
169
|
+
next_default: Default value of next header type.
|
170
|
+
next_namespace: Namespace of next header type.
|
171
|
+
next_reversed: If the namespace is reversed.
|
172
|
+
spi: Security Parameters Index.
|
173
|
+
seq: Sequence Number Field.
|
174
|
+
icv: Integrity Check Value-ICV.
|
175
|
+
payload: Payload of current instance.
|
176
|
+
**kwargs: Arbitrary keyword arguments.
|
177
|
+
|
178
|
+
Returns:
|
179
|
+
Constructed packet data.
|
180
|
+
|
181
|
+
"""
|
182
|
+
next_value = self._make_index(next, next_default, namespace=next_namespace,
|
183
|
+
reversed=next_reversed, pack=False)
|
184
|
+
length = (len(icv) + 12) // 4 - 2
|
185
|
+
|
186
|
+
return Schema_AH(
|
187
|
+
next=next_value, # type: ignore[arg-type]
|
188
|
+
len=length,
|
189
|
+
spi=spi,
|
190
|
+
seq=seq,
|
191
|
+
icv=icv,
|
192
|
+
payload=payload,
|
193
|
+
)
|
194
|
+
|
195
|
+
@classmethod
|
196
|
+
def id(cls) -> 'tuple[Literal["AH"]]': # type: ignore[override]
|
197
|
+
"""Index ID of the protocol.
|
198
|
+
|
199
|
+
Returns:
|
200
|
+
Index ID of the protocol.
|
201
|
+
|
202
|
+
"""
|
203
|
+
return ('AH',)
|
204
|
+
|
205
|
+
##########################################################################
|
206
|
+
# Data models.
|
207
|
+
##########################################################################
|
208
|
+
|
209
|
+
@overload
|
210
|
+
def __post_init__(self, file: 'IO[bytes] | bytes', length: 'Optional[int]' = ..., *, # pylint: disable=arguments-differ
|
211
|
+
version: 'Literal[4, 6]' = ..., extension: 'bool' = ...,
|
212
|
+
**kwargs: 'Any') -> 'None': ...
|
213
|
+
@overload
|
214
|
+
def __post_init__(self, **kwargs: 'Any') -> 'None': ... # pylint: disable=arguments-differ
|
215
|
+
|
216
|
+
def __post_init__(self, file: 'Optional[IO[bytes] | bytes]' = None, length: 'Optional[int]' = None, *, # pylint: disable=arguments-differ
|
217
|
+
version: 'Literal[4, 6]' = 4, extension: 'bool' = False,
|
218
|
+
**kwargs: 'Any') -> 'None':
|
219
|
+
"""Post initialisation hook.
|
220
|
+
|
221
|
+
Args:
|
222
|
+
file: Source packet stream.
|
223
|
+
length: Length of packet data.
|
224
|
+
version: IP protocol version.
|
225
|
+
extension: If the protocol is used as an IPv6 extension header.
|
226
|
+
**kwargs: Arbitrary keyword arguments.
|
227
|
+
|
228
|
+
See Also:
|
229
|
+
For construction argument, please refer to :meth:`self.make <AH.make>`.
|
230
|
+
|
231
|
+
"""
|
232
|
+
#: bool: If the protocol is used as an IPv6 extension header.
|
233
|
+
self._extf = extension
|
234
|
+
|
235
|
+
# call super __post_init__
|
236
|
+
super().__post_init__(file, length, version=version, extension=extension, **kwargs) # type: ignore[arg-type]
|
237
|
+
|
238
|
+
def __length_hint__(self) -> 'Literal[20]':
|
239
|
+
"""Return an estimated length for the object."""
|
240
|
+
return 20
|
241
|
+
|
242
|
+
@classmethod
|
243
|
+
def __index__(cls) -> 'Enum_TransType': # pylint: disable=invalid-index-returned
|
244
|
+
"""Numeral registry index of the protocol.
|
245
|
+
|
246
|
+
Returns:
|
247
|
+
Numeral registry index of the protocol in `IANA`_.
|
248
|
+
|
249
|
+
.. _IANA: https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
|
250
|
+
|
251
|
+
"""
|
252
|
+
return Enum_TransType.AH # type: ignore[return-value]
|
253
|
+
|
254
|
+
##########################################################################
|
255
|
+
# Utilities.
|
256
|
+
##########################################################################
|
257
|
+
|
258
|
+
@classmethod
|
259
|
+
def _make_data(cls, data: 'Data_AH') -> 'dict[str, Any]': # type: ignore[override]
|
260
|
+
"""Create key-value pairs from ``data`` for protocol construction.
|
261
|
+
|
262
|
+
Args:
|
263
|
+
data: protocol data
|
264
|
+
|
265
|
+
Returns:
|
266
|
+
Key-value pairs for protocol construction.
|
267
|
+
|
268
|
+
"""
|
269
|
+
return {
|
270
|
+
'next': data.next,
|
271
|
+
'spi': data.spi,
|
272
|
+
'seq': data.seq,
|
273
|
+
'icv': data.icv,
|
274
|
+
'payload': cls._make_payload(data),
|
275
|
+
}
|