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,19 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""header schema for data link layer protocols"""
|
3
|
+
|
4
|
+
from pcapkit.protocols.schema.link.arp import ARP
|
5
|
+
from pcapkit.protocols.schema.link.ethernet import Ethernet
|
6
|
+
from pcapkit.protocols.schema.link.l2tp import L2TP
|
7
|
+
from pcapkit.protocols.schema.link.ospf import OSPF
|
8
|
+
from pcapkit.protocols.schema.link.ospf import \
|
9
|
+
CrytographicAuthentication as OSPF_CrytographicAuthentication
|
10
|
+
from pcapkit.protocols.schema.link.vlan import TCI as VLAN_TCI
|
11
|
+
from pcapkit.protocols.schema.link.vlan import VLAN
|
12
|
+
|
13
|
+
__all__ = [
|
14
|
+
'ARP',
|
15
|
+
'Ethernet',
|
16
|
+
'L2TP',
|
17
|
+
'OSPF', 'OSPF_CrytographicAuthentication',
|
18
|
+
'VLAN', 'VLAN_TCI',
|
19
|
+
]
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for (inverse) address resolution protocol family"""
|
4
|
+
|
5
|
+
from typing import TYPE_CHECKING
|
6
|
+
|
7
|
+
from pcapkit.const.arp.hardware import Hardware as Enum_Hardware
|
8
|
+
from pcapkit.const.arp.operation import Operation as Enum_Operation
|
9
|
+
from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
|
10
|
+
from pcapkit.corekit.fields.misc import PayloadField
|
11
|
+
from pcapkit.corekit.fields.numbers import EnumField, UInt8Field
|
12
|
+
from pcapkit.corekit.fields.strings import BytesField
|
13
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
14
|
+
|
15
|
+
__all__ = ['ARP']
|
16
|
+
|
17
|
+
if TYPE_CHECKING:
|
18
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
19
|
+
|
20
|
+
|
21
|
+
@schema_final
|
22
|
+
class ARP(Schema):
|
23
|
+
"""Header schema for ARP packet."""
|
24
|
+
|
25
|
+
htype: 'Enum_Hardware' = EnumField(length=2, namespace=Enum_Hardware)
|
26
|
+
ptype: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType)
|
27
|
+
hlen: 'int' = UInt8Field()
|
28
|
+
plen: 'int' = UInt8Field()
|
29
|
+
oper: 'Enum_Operation' = EnumField(length=2, namespace=Enum_Operation)
|
30
|
+
sha: 'bytes' = BytesField(length=lambda pkt: pkt['hlen'])
|
31
|
+
spa: 'bytes' = BytesField(length=lambda pkt: pkt['plen'])
|
32
|
+
tha: 'bytes' = BytesField(length=lambda pkt: pkt['hlen'])
|
33
|
+
tpa: 'bytes' = BytesField(length=lambda pkt: pkt['plen'])
|
34
|
+
payload: 'bytes' = PayloadField()
|
35
|
+
|
36
|
+
if TYPE_CHECKING:
|
37
|
+
def __init__(self, htype: 'int', ptype: 'int', hlen: 'int', plen: 'int',
|
38
|
+
oper: 'int', sha: 'bytes', spa: 'bytes', tha: 'bytes',
|
39
|
+
tpa: 'bytes', payload: 'bytes | Protocol | Schema') -> 'None': ...
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for ethernet protocol"""
|
4
|
+
|
5
|
+
from typing import TYPE_CHECKING
|
6
|
+
|
7
|
+
from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
|
8
|
+
from pcapkit.corekit.fields.misc import PayloadField
|
9
|
+
from pcapkit.corekit.fields.numbers import EnumField
|
10
|
+
from pcapkit.corekit.fields.strings import BytesField
|
11
|
+
from pcapkit.corekit.module import ModuleDescriptor
|
12
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
13
|
+
|
14
|
+
__all__ = ['Ethernet']
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from typing import Any
|
18
|
+
|
19
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
20
|
+
|
21
|
+
|
22
|
+
def callback_payload(self: 'PayloadField', packet: 'dict[str, Any]') -> 'None':
|
23
|
+
"""Callback function for :attr:`Ethernet.payload`."""
|
24
|
+
from pcapkit.protocols.link.ethernet import Ethernet # pylint: disable=import-outside-toplevel
|
25
|
+
|
26
|
+
type_ = packet['type']
|
27
|
+
protocol = Ethernet.__proto__[type_]
|
28
|
+
if isinstance(protocol, ModuleDescriptor):
|
29
|
+
protocol = protocol.klass
|
30
|
+
self.protocol = protocol
|
31
|
+
|
32
|
+
|
33
|
+
@schema_final
|
34
|
+
class Ethernet(Schema):
|
35
|
+
"""Header schema for ethernet packet."""
|
36
|
+
|
37
|
+
#: Destination MAC address.
|
38
|
+
dst: 'bytes' = BytesField(length=6)
|
39
|
+
#: Source MAC address.
|
40
|
+
src: 'bytes' = BytesField(length=6)
|
41
|
+
#: Protocol (internet layer).
|
42
|
+
type: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType)
|
43
|
+
#: Payload.
|
44
|
+
payload: 'bytes' = PayloadField(
|
45
|
+
length=lambda pkt: pkt['__length__'],
|
46
|
+
callback=callback_payload,
|
47
|
+
)
|
48
|
+
|
49
|
+
if TYPE_CHECKING:
|
50
|
+
def __init__(self, dst: 'bytes', src: 'bytes', type: 'Enum_EtherType',
|
51
|
+
payload: 'bytes | Protocol | Schema') -> 'None': ...
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for L2TP protocol"""
|
4
|
+
|
5
|
+
from typing import TYPE_CHECKING
|
6
|
+
|
7
|
+
from pcapkit.corekit.fields.misc import ConditionalField, PayloadField
|
8
|
+
from pcapkit.corekit.fields.numbers import UInt16Field
|
9
|
+
from pcapkit.corekit.fields.strings import BitField, PaddingField
|
10
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
11
|
+
from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING
|
12
|
+
|
13
|
+
__all__ = ['L2TP']
|
14
|
+
|
15
|
+
if TYPE_CHECKING:
|
16
|
+
from typing import Optional
|
17
|
+
|
18
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
19
|
+
|
20
|
+
if SPHINX_TYPE_CHECKING:
|
21
|
+
from typing_extensions import Literal, TypedDict
|
22
|
+
|
23
|
+
class FlagsType(TypedDict):
|
24
|
+
"""Flags of L2TP packet."""
|
25
|
+
|
26
|
+
#: Type of L2TP packet.
|
27
|
+
type: int
|
28
|
+
#: Length of L2TP packet.
|
29
|
+
len: int
|
30
|
+
#: Sequence number of L2TP packet.
|
31
|
+
seq: int
|
32
|
+
#: Offset size of L2TP packet.
|
33
|
+
offset: int
|
34
|
+
#: Priority of L2TP packet.
|
35
|
+
prio: int
|
36
|
+
#: Version of L2TP packet.
|
37
|
+
version: Literal[2]
|
38
|
+
|
39
|
+
|
40
|
+
@schema_final
|
41
|
+
class L2TP(Schema):
|
42
|
+
"""Header schema for L2TP packet."""
|
43
|
+
|
44
|
+
#: Flags and version of L2TP packet.
|
45
|
+
flags: 'FlagsType' = BitField(length=2, namespace={
|
46
|
+
'type': (0, 1),
|
47
|
+
'len': (1, 1),
|
48
|
+
'seq': (4, 1),
|
49
|
+
'offset': (6, 1),
|
50
|
+
'prio': (7, 1),
|
51
|
+
'version': (12, 4),
|
52
|
+
})
|
53
|
+
#: Length of L2TP packet.
|
54
|
+
length: 'int' = ConditionalField(
|
55
|
+
UInt16Field(),
|
56
|
+
lambda packet: packet['flags']['len'],
|
57
|
+
)
|
58
|
+
#: Tunnel ID of L2TP packet.
|
59
|
+
tunnel_id: 'int' = UInt16Field()
|
60
|
+
#: Session ID of L2TP packet.
|
61
|
+
session_id: 'int' = UInt16Field()
|
62
|
+
#: Sequence number of L2TP packet.
|
63
|
+
ns: 'int' = ConditionalField(
|
64
|
+
UInt16Field(),
|
65
|
+
lambda packet: packet['flags']['seq'],
|
66
|
+
)
|
67
|
+
#: Next sequence number of L2TP packet.
|
68
|
+
nr: 'int' = ConditionalField(
|
69
|
+
UInt16Field(),
|
70
|
+
lambda packet: packet['flags']['seq'],
|
71
|
+
)
|
72
|
+
#: Offset size of L2TP packet.
|
73
|
+
offset: 'int' = ConditionalField(
|
74
|
+
UInt16Field(),
|
75
|
+
lambda packet: packet['flags']['offset'],
|
76
|
+
)
|
77
|
+
#: Padding of L2TP packet.
|
78
|
+
padding: 'bytes' = ConditionalField(
|
79
|
+
PaddingField(length=lambda pkt: pkt['offset']),
|
80
|
+
lambda packet: packet['flags']['offset'],
|
81
|
+
)
|
82
|
+
#: Payload of L2TP packet.
|
83
|
+
payload: 'bytes' = PayloadField()
|
84
|
+
|
85
|
+
if TYPE_CHECKING:
|
86
|
+
def __init__(self, flags: 'FlagsType', length: 'Optional[int]', tunnel_id: 'int',
|
87
|
+
session_id: 'int', ns: 'Optional[int]', nr: 'Optional[int]',
|
88
|
+
offset: 'Optional[int]', payload: 'bytes | Protocol | Schema') -> 'None': ...
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for OSPF protocol"""
|
4
|
+
|
5
|
+
from typing import TYPE_CHECKING
|
6
|
+
|
7
|
+
from pcapkit.const.ospf.authentication import Authentication as Enum_Authentication
|
8
|
+
from pcapkit.const.ospf.packet import Packet as Enum_Packet
|
9
|
+
from pcapkit.corekit.fields.ipaddress import IPv4AddressField
|
10
|
+
from pcapkit.corekit.fields.misc import PayloadField, SchemaField, SwitchField
|
11
|
+
from pcapkit.corekit.fields.numbers import EnumField, UInt8Field, UInt16Field, UInt32Field
|
12
|
+
from pcapkit.corekit.fields.strings import BytesField, PaddingField
|
13
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
14
|
+
|
15
|
+
__all__ = ['OSPF', 'CrytographicAuthentication']
|
16
|
+
|
17
|
+
if TYPE_CHECKING:
|
18
|
+
from ipaddress import IPv4Address
|
19
|
+
from typing import Any
|
20
|
+
|
21
|
+
from pcapkit.corekit.fields.field import FieldBase as Field
|
22
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
23
|
+
|
24
|
+
|
25
|
+
def ospf_auth_data_selector(pkt: 'dict[str, Any]') -> 'Field':
|
26
|
+
"""Selector function for :attr:`OSPF.auth_data` field.
|
27
|
+
|
28
|
+
Args:
|
29
|
+
pkt: Packet data.
|
30
|
+
|
31
|
+
Returns:
|
32
|
+
* If :attr:`OSPF.auth_type` is 2, a :class:`~pcapkit.corekit.fields.misc.SchemaField`
|
33
|
+
wrapped :class:`~pcapkit.protocols.schema.link.ospf.CrytographicAuthentication` instance.
|
34
|
+
* Otherwise, a :class:`~pcapkit.corekit.fields.strings.BytesField` instance.
|
35
|
+
|
36
|
+
"""
|
37
|
+
if pkt['auth_type'] == Enum_Authentication.Cryptographic_authentication:
|
38
|
+
return SchemaField(length=8, schema=CrytographicAuthentication)
|
39
|
+
return BytesField(length=8)
|
40
|
+
|
41
|
+
|
42
|
+
@schema_final
|
43
|
+
class CrytographicAuthentication(Schema):
|
44
|
+
"""Header schema for OSPF cryptographic authentication."""
|
45
|
+
|
46
|
+
#: Reserved bytes.
|
47
|
+
reserved: 'bytes' = PaddingField(length=2)
|
48
|
+
#: Key ID.
|
49
|
+
key_id: 'int' = UInt8Field()
|
50
|
+
#: Length.
|
51
|
+
len: 'int' = UInt8Field()
|
52
|
+
#: Sequence number.
|
53
|
+
seq: 'int' = UInt32Field()
|
54
|
+
|
55
|
+
if TYPE_CHECKING:
|
56
|
+
def __init__(self, key_id: 'int', len: 'int', seq: 'int') -> 'None': ...
|
57
|
+
|
58
|
+
|
59
|
+
@schema_final
|
60
|
+
class OSPF(Schema):
|
61
|
+
"""Header schema for OSPF packet."""
|
62
|
+
|
63
|
+
#: Version.
|
64
|
+
version: 'int' = UInt8Field()
|
65
|
+
#: Type.
|
66
|
+
type: 'Enum_Packet' = EnumField(length=1, namespace=Enum_Packet)
|
67
|
+
#: Length.
|
68
|
+
length: 'int' = UInt16Field()
|
69
|
+
#: Router ID.
|
70
|
+
router_id: 'IPv4Address' = IPv4AddressField()
|
71
|
+
#: Area ID.
|
72
|
+
area_id: 'IPv4Address' = IPv4AddressField()
|
73
|
+
#: Checksum.
|
74
|
+
checksum: 'bytes' = BytesField(length=2)
|
75
|
+
#: Authentication type.
|
76
|
+
auth_type: 'Enum_Authentication' = EnumField(length=2, namespace=Enum_Authentication)
|
77
|
+
#: Authentication data.
|
78
|
+
auth_data: 'bytes | CrytographicAuthentication' = SwitchField(
|
79
|
+
selector=ospf_auth_data_selector,
|
80
|
+
)
|
81
|
+
#: Payload.
|
82
|
+
payload: 'bytes' = PayloadField()
|
83
|
+
|
84
|
+
if TYPE_CHECKING:
|
85
|
+
def __init__(self, version: 'int', type: 'Enum_Packet', length: 'int',
|
86
|
+
router_id: 'IPv4Address | bytes | str | int',
|
87
|
+
area_id: 'IPv4Address | bytes | str | int',
|
88
|
+
checksum: 'bytes', auth_type: 'Enum_Authentication',
|
89
|
+
auth_data: 'bytes | CrytographicAuthentication',
|
90
|
+
payload: 'bytes | Protocol | Schema') -> 'None': ...
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for 802.1Q Customer VLAN Tag Type protocol"""
|
4
|
+
|
5
|
+
from typing import TYPE_CHECKING
|
6
|
+
|
7
|
+
from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
|
8
|
+
from pcapkit.const.vlan.priority_level import PriorityLevel as Enum_PriorityLevel
|
9
|
+
from pcapkit.corekit.fields.misc import PayloadField
|
10
|
+
from pcapkit.corekit.fields.numbers import EnumField, UInt8Field, UInt16Field
|
11
|
+
from pcapkit.corekit.fields.strings import BitField
|
12
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
13
|
+
from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING
|
14
|
+
|
15
|
+
__all__ = ['VLAN', 'TCI']
|
16
|
+
|
17
|
+
if TYPE_CHECKING:
|
18
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
19
|
+
|
20
|
+
if SPHINX_TYPE_CHECKING:
|
21
|
+
from typing_extensions import TypedDict
|
22
|
+
|
23
|
+
class TCIType(TypedDict):
|
24
|
+
"""Type of 802.1Q Customer VLAN Tag Type tag control information."""
|
25
|
+
|
26
|
+
#: Priority code point.
|
27
|
+
pcp: int
|
28
|
+
#: Drop eligible indicator.
|
29
|
+
dei: int
|
30
|
+
#: VLAN identifier.
|
31
|
+
vid: int
|
32
|
+
|
33
|
+
|
34
|
+
@schema_final
|
35
|
+
class TCI(Schema):
|
36
|
+
"""Header schema for 802.1Q Customer VLAN Tag Type tag control information."""
|
37
|
+
|
38
|
+
#: Priority code point.
|
39
|
+
pcp: 'Enum_PriorityLevel' = EnumField(length=1, bit_length=3, namespace=Enum_PriorityLevel)
|
40
|
+
#: Drop eligible indicator.
|
41
|
+
dei: 'int' = UInt8Field(bit_length=1)
|
42
|
+
#: VLAN identifier.
|
43
|
+
vid: 'int' = UInt16Field(bit_length=12)
|
44
|
+
|
45
|
+
if TYPE_CHECKING:
|
46
|
+
def __init__(self, pcp: 'Enum_PriorityLevel', dei: 'int', vid: 'int') -> 'None': ...
|
47
|
+
|
48
|
+
|
49
|
+
@schema_final
|
50
|
+
class VLAN(Schema):
|
51
|
+
"""Header schema for 802.1Q Customer VLAN Tag Type packet."""
|
52
|
+
|
53
|
+
#: Tag control information.
|
54
|
+
tci: 'TCIType' = BitField(
|
55
|
+
length=2,
|
56
|
+
namespace={
|
57
|
+
'pcp': (0, 3),
|
58
|
+
'dei': (3, 1),
|
59
|
+
'vid': (4, 12),
|
60
|
+
},
|
61
|
+
)
|
62
|
+
#: EtherType.
|
63
|
+
type: 'Enum_EtherType' = EnumField(length=2, namespace=Enum_EtherType)
|
64
|
+
#: Payload.
|
65
|
+
payload: 'bytes' = PayloadField()
|
66
|
+
|
67
|
+
if TYPE_CHECKING:
|
68
|
+
def __init__(self, tci: 'TCIType', type: 'Enum_EtherType',
|
69
|
+
payload: 'bytes | Protocol | Schema') -> 'None': ...
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""header schema for utility protocols"""
|
3
|
+
|
4
|
+
# PCAP file format
|
5
|
+
from pcapkit.protocols.schema.misc.pcap import *
|
6
|
+
|
7
|
+
# PCAP-NG file format
|
8
|
+
from pcapkit.protocols.schema.misc.pcapng import UnknownSecrets as PCAPNG_UnknownSecrets
|
9
|
+
from pcapkit.protocols.schema.misc.pcapng import BlockType as PCAPNG_BlockType
|
10
|
+
from pcapkit.protocols.schema.misc.pcapng import PCAPNG
|
11
|
+
from pcapkit.protocols.schema.misc.pcapng import CommentOption as PCAPNG_CommentOption
|
12
|
+
from pcapkit.protocols.schema.misc.pcapng import CustomBlock as PCAPNG_CustomBlock
|
13
|
+
from pcapkit.protocols.schema.misc.pcapng import CustomOption as PCAPNG_CustomOption
|
14
|
+
from pcapkit.protocols.schema.misc.pcapng import \
|
15
|
+
DecryptionSecretsBlock as PCAPNG_DecryptionSecretsBlock
|
16
|
+
from pcapkit.protocols.schema.misc.pcapng import DSBSecrets as PCAPNG_DSBSecrets
|
17
|
+
from pcapkit.protocols.schema.misc.pcapng import EndOfOption as PCAPNG_EndOfOption
|
18
|
+
from pcapkit.protocols.schema.misc.pcapng import EndRecord as PCAPNG_EndRecord
|
19
|
+
from pcapkit.protocols.schema.misc.pcapng import EnhancedPacketBlock as PCAPNG_EnhancedPacketBlock
|
20
|
+
from pcapkit.protocols.schema.misc.pcapng import EPB_DropCountOption as PCAPNG_EPB_DropCountOption
|
21
|
+
from pcapkit.protocols.schema.misc.pcapng import EPB_FlagsOption as PCAPNG_EPB_FlagsOption
|
22
|
+
from pcapkit.protocols.schema.misc.pcapng import EPB_HashOption as PCAPNG_EPB_HashOption
|
23
|
+
from pcapkit.protocols.schema.misc.pcapng import EPB_PacketIDOption as PCAPNG_EPB_PacketIDOption
|
24
|
+
from pcapkit.protocols.schema.misc.pcapng import EPB_QueueOption as PCAPNG_EPB_QueueOption
|
25
|
+
from pcapkit.protocols.schema.misc.pcapng import EPB_VerdictOption as PCAPNG_EPB_VerdictOption
|
26
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_DescriptionOption as PCAPNG_IF_DescriptionOption
|
27
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_EUIAddrOption as PCAPNG_IF_EUIAddrOption
|
28
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_FCSLenOption as PCAPNG_IF_FCSLenOption
|
29
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_FilterOption as PCAPNG_IF_FilterOption
|
30
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_HardwareOption as PCAPNG_IF_HardwareOption
|
31
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_IPv4AddrOption as PCAPNG_IF_IPv4AddrOption
|
32
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_IPv6AddrOption as PCAPNG_IF_IPv6AddrOption
|
33
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_MACAddrOption as PCAPNG_IF_MACAddrOption
|
34
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_NameOption as PCAPNG_IF_NameOption
|
35
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_OSOption as PCAPNG_IF_OSOption
|
36
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_RxSpeedOption as PCAPNG_IF_RxSpeedOption
|
37
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_SpeedOption as PCAPNG_IF_SpeedOption
|
38
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_TSOffsetOption as PCAPNG_IF_TSOffsetOption
|
39
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_TSResolOption as PCAPNG_IF_TSResolOption
|
40
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_TxSpeedOption as PCAPNG_IF_TxSpeedOption
|
41
|
+
from pcapkit.protocols.schema.misc.pcapng import IF_TZoneOption as PCAPNG_IF_TZoneOption
|
42
|
+
from pcapkit.protocols.schema.misc.pcapng import \
|
43
|
+
InterfaceDescriptionBlock as PCAPNG_InterfaceDescriptionBlock
|
44
|
+
from pcapkit.protocols.schema.misc.pcapng import \
|
45
|
+
InterfaceStatisticsBlock as PCAPNG_InterfaceStatisticsBlock
|
46
|
+
from pcapkit.protocols.schema.misc.pcapng import IPv4Record as PCAPNG_IPv4Record
|
47
|
+
from pcapkit.protocols.schema.misc.pcapng import IPv6Record as PCAPNG_IPv6Record
|
48
|
+
from pcapkit.protocols.schema.misc.pcapng import ISB_EndTimeOption as PCAPNG_ISB_EndTimeOption
|
49
|
+
from pcapkit.protocols.schema.misc.pcapng import \
|
50
|
+
ISB_FilterAcceptOption as PCAPNG_ISB_FilterAcceptOption
|
51
|
+
from pcapkit.protocols.schema.misc.pcapng import ISB_IFDropOption as PCAPNG_ISB_IFDropOption
|
52
|
+
from pcapkit.protocols.schema.misc.pcapng import ISB_IFRecvOption as PCAPNG_ISB_IFRecvOption
|
53
|
+
from pcapkit.protocols.schema.misc.pcapng import ISB_OSDropOption as PCAPNG_ISB_OSDropOption
|
54
|
+
from pcapkit.protocols.schema.misc.pcapng import ISB_StartTimeOption as PCAPNG_ISB_StartTimeOption
|
55
|
+
from pcapkit.protocols.schema.misc.pcapng import ISB_UsrDelivOption as PCAPNG_ISB_UsrDelivOption
|
56
|
+
from pcapkit.protocols.schema.misc.pcapng import NameResolutionBlock as PCAPNG_NameResolutionBlock
|
57
|
+
from pcapkit.protocols.schema.misc.pcapng import NameResolutionRecord as PCAPNG_NameResolutionRecord
|
58
|
+
from pcapkit.protocols.schema.misc.pcapng import NS_DNSIP4AddrOption as PCAPNG_NS_DNSIP4AddrOption
|
59
|
+
from pcapkit.protocols.schema.misc.pcapng import NS_DNSIP6AddrOption as PCAPNG_NS_DNSIP6AddrOption
|
60
|
+
from pcapkit.protocols.schema.misc.pcapng import NS_DNSNameOption as PCAPNG_NS_DNSNameOption
|
61
|
+
from pcapkit.protocols.schema.misc.pcapng import Option as PCAPNG_Option
|
62
|
+
from pcapkit.protocols.schema.misc.pcapng import SectionHeaderBlock as PCAPNG_SectionHeaderBlock
|
63
|
+
from pcapkit.protocols.schema.misc.pcapng import SimplePacketBlock as PCAPNG_SimplePacketBlock
|
64
|
+
from pcapkit.protocols.schema.misc.pcapng import \
|
65
|
+
SystemdJournalExportBlock as PCAPNG_SystemdJournalExportBlock
|
66
|
+
from pcapkit.protocols.schema.misc.pcapng import TLSKeyLog as PCAPNG_TLSKeyLog
|
67
|
+
from pcapkit.protocols.schema.misc.pcapng import UnknownBlock as PCAPNG_UnknownBlock
|
68
|
+
from pcapkit.protocols.schema.misc.pcapng import UnknownOption as PCAPNG_UnknownOption
|
69
|
+
from pcapkit.protocols.schema.misc.pcapng import UnknownRecord as PCAPNG_UnknownRecord
|
70
|
+
from pcapkit.protocols.schema.misc.pcapng import WireGuardKeyLog as PCAPNG_WireGuardKeyLog
|
71
|
+
from pcapkit.protocols.schema.misc.pcapng import ZigBeeAPSKey as PCAPNG_ZigBeeAPSKey
|
72
|
+
from pcapkit.protocols.schema.misc.pcapng import ZigBeeNWKKey as PCAPNG_ZigBeeNWKKey
|
73
|
+
|
74
|
+
# misc protocols
|
75
|
+
from pcapkit.protocols.schema.misc.raw import Raw
|
76
|
+
from pcapkit.protocols.schema.misc.null import NoPayload
|
77
|
+
|
78
|
+
__all__ = [
|
79
|
+
# PCAP file format
|
80
|
+
'Header',
|
81
|
+
'Frame',
|
82
|
+
|
83
|
+
# PCAP-NG file format
|
84
|
+
'PCAPNG',
|
85
|
+
'PCAPNG_Option', 'PCAPNG_UnknownOption',
|
86
|
+
'PCAPNG_EndOfOption', 'PCAPNG_CommentOption', 'PCAPNG_CustomOption',
|
87
|
+
'PCAPNG_IF_NameOption', 'PCAPNG_IF_DescriptionOption', 'PCAPNG_IF_IPv4AddrOption', 'PCAPNG_IF_IPv6AddrOption',
|
88
|
+
'PCAPNG_IF_MACAddrOption', 'PCAPNG_IF_EUIAddrOption', 'PCAPNG_IF_SpeedOption', 'PCAPNG_IF_TSResolOption',
|
89
|
+
'PCAPNG_IF_TZoneOption', 'PCAPNG_IF_FilterOption', 'PCAPNG_IF_OSOption', 'PCAPNG_IF_FCSLenOption',
|
90
|
+
'PCAPNG_IF_TSOffsetOption', 'PCAPNG_IF_HardwareOption', 'PCAPNG_IF_TxSpeedOption', 'PCAPNG_IF_RxSpeedOption',
|
91
|
+
'PCAPNG_EPB_FlagsOption', 'PCAPNG_EPB_HashOption', 'PCAPNG_EPB_DropCountOption', 'PCAPNG_EPB_PacketIDOption',
|
92
|
+
'PCAPNG_EPB_QueueOption', 'PCAPNG_EPB_VerdictOption',
|
93
|
+
'PCAPNG_NS_DNSNameOption', 'PCAPNG_NS_DNSIP4AddrOption', 'PCAPNG_NS_DNSIP6AddrOption',
|
94
|
+
'PCAPNG_ISB_StartTimeOption', 'PCAPNG_ISB_EndTimeOption', 'PCAPNG_ISB_IFRecvOption', 'PCAPNG_ISB_IFDropOption',
|
95
|
+
'PCAPNG_ISB_FilterAcceptOption', 'PCAPNG_ISB_OSDropOption', 'PCAPNG_ISB_UsrDelivOption',
|
96
|
+
'PCAPNG_NameResolutionRecord', 'PCAPNG_UnknownRecord', 'PCAPNG_EndRecord', 'PCAPNG_IPv4Record', 'PCAPNG_IPv6Record',
|
97
|
+
'PCAPNG_DSBSecrets', 'PCAPNG_UnknownSecrets', 'PCAPNG_TLSKeyLog', 'PCAPNG_WireGuardKeyLog', 'PCAPNG_ZigBeeNWKKey',
|
98
|
+
'PCAPNG_ZigBeeAPSKey',
|
99
|
+
'PCAPNG_BlockType',
|
100
|
+
'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock',
|
101
|
+
'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock',
|
102
|
+
'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock',
|
103
|
+
'PCAPNG_CustomBlock',
|
104
|
+
|
105
|
+
# misc protocols
|
106
|
+
'NoPayload',
|
107
|
+
'Raw',
|
108
|
+
]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for empty payload"""
|
4
|
+
|
5
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
6
|
+
|
7
|
+
__all__ = ['NoPayload']
|
8
|
+
|
9
|
+
|
10
|
+
@schema_final
|
11
|
+
class NoPayload(Schema):
|
12
|
+
"""Schema for empty payload."""
|
13
|
+
|
14
|
+
# NOTE: We add this method for both type annotation and to mark that this
|
15
|
+
# class accepts no arguments at runtime, since :class:`Schema` explicitly
|
16
|
+
# skipped those whose :attr:`__dict__` is empty :obj:`dict`.
|
17
|
+
def __init__(self) -> 'None': # pylint: disable=super-init-not-called
|
18
|
+
pass
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for frame header of PCAP file format"""
|
4
|
+
|
5
|
+
import sys
|
6
|
+
from typing import TYPE_CHECKING
|
7
|
+
|
8
|
+
from pcapkit.corekit.fields.misc import PayloadField
|
9
|
+
from pcapkit.corekit.fields.numbers import UInt32Field
|
10
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
11
|
+
|
12
|
+
__all__ = ['Frame']
|
13
|
+
|
14
|
+
if TYPE_CHECKING:
|
15
|
+
from typing import Any
|
16
|
+
|
17
|
+
from pcapkit.corekit.fields.numbers import NumberField as Field
|
18
|
+
from pcapkit.protocols.protocol import ProtocolBase as Protocol
|
19
|
+
|
20
|
+
|
21
|
+
def byteorder_callback(field: 'Field', packet: 'dict[str, Any]') -> 'None':
|
22
|
+
"""Update byte order of PCAP file.
|
23
|
+
|
24
|
+
Args:
|
25
|
+
field: Field instance.
|
26
|
+
packet: Packet data.
|
27
|
+
|
28
|
+
"""
|
29
|
+
field._byteorder = packet.get('byteorder', sys.byteorder)
|
30
|
+
|
31
|
+
|
32
|
+
@schema_final
|
33
|
+
class Frame(Schema):
|
34
|
+
"""Frame header of PCAP file format."""
|
35
|
+
|
36
|
+
__payload__ = 'packet'
|
37
|
+
|
38
|
+
#: Timestamp seconds.
|
39
|
+
ts_sec: 'int' = UInt32Field(callback=byteorder_callback)
|
40
|
+
#: Timestamp microseconds.
|
41
|
+
ts_usec: 'int' = UInt32Field(callback=byteorder_callback)
|
42
|
+
#: Number of octets of packet saved in file.
|
43
|
+
incl_len: 'int' = UInt32Field(callback=byteorder_callback)
|
44
|
+
#: Actual length of packet.
|
45
|
+
orig_len: 'int' = UInt32Field(callback=byteorder_callback)
|
46
|
+
#: Payload.
|
47
|
+
packet: 'bytes' = PayloadField(length=lambda pkt: pkt['incl_len'])
|
48
|
+
|
49
|
+
if TYPE_CHECKING:
|
50
|
+
def __init__(self, ts_sec: 'int', ts_usec: 'int', incl_len: 'int',
|
51
|
+
orig_len: 'int', packet: 'bytes | Protocol | Schema') -> 'None': ...
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# mypy: disable-error-code=assignment
|
3
|
+
"""header schema for global header of PCAP file format"""
|
4
|
+
|
5
|
+
from typing import TYPE_CHECKING
|
6
|
+
|
7
|
+
from pcapkit.const.reg.linktype import LinkType as Enum_LinkType
|
8
|
+
from pcapkit.corekit.fields.numbers import EnumField, Int32Field, UInt16Field, UInt32Field
|
9
|
+
from pcapkit.corekit.fields.strings import BytesField
|
10
|
+
from pcapkit.protocols.schema.schema import Schema, schema_final
|
11
|
+
from pcapkit.utilities.exceptions import ProtocolError
|
12
|
+
|
13
|
+
__all__ = ['Header']
|
14
|
+
|
15
|
+
if TYPE_CHECKING:
|
16
|
+
from typing import Any
|
17
|
+
|
18
|
+
from pcapkit.corekit.fields.numbers import NumberField
|
19
|
+
|
20
|
+
|
21
|
+
def magic_number_callback(field: 'NumberField', packet: 'dict[str, Any]') -> 'None':
|
22
|
+
"""Calculate byte order of PCAP file.
|
23
|
+
|
24
|
+
Args:
|
25
|
+
field: Field instance.
|
26
|
+
packet: Packet data.
|
27
|
+
|
28
|
+
"""
|
29
|
+
magic_number = packet['magic_number']
|
30
|
+
if magic_number == b'\xd4\xc3\xb2\xa1':
|
31
|
+
field._byteorder = 'little'
|
32
|
+
elif magic_number == b'\xa1\xb2\xc3\xd4':
|
33
|
+
field._byteorder = 'big'
|
34
|
+
elif magic_number == b'\x4d\x3c\xb2\xa1':
|
35
|
+
field._byteorder = 'little'
|
36
|
+
elif magic_number == b'\xa1\xb2\x3c\x4d':
|
37
|
+
field._byteorder = 'big'
|
38
|
+
else:
|
39
|
+
raise ProtocolError('invalid magic number')
|
40
|
+
|
41
|
+
|
42
|
+
@schema_final
|
43
|
+
class Header(Schema):
|
44
|
+
"""Global header of PCAP file."""
|
45
|
+
|
46
|
+
#: Magic number.
|
47
|
+
magic_number: 'bytes' = BytesField(length=4)
|
48
|
+
#: Version number major.
|
49
|
+
version_major: 'int' = UInt16Field(callback=magic_number_callback)
|
50
|
+
#: Version number minor.
|
51
|
+
version_minor: 'int' = UInt16Field(callback=magic_number_callback)
|
52
|
+
#: GMT to local correction.
|
53
|
+
thiszone: 'int' = Int32Field(callback=magic_number_callback)
|
54
|
+
#: Accuracy of timestamps.
|
55
|
+
sigfigs: 'int' = UInt32Field(callback=magic_number_callback)
|
56
|
+
#: Max length of captured packets, in octets.
|
57
|
+
snaplen: 'int' = UInt32Field(callback=magic_number_callback)
|
58
|
+
#: Data link type.
|
59
|
+
network: 'Enum_LinkType' = EnumField(length=4, namespace=Enum_LinkType, callback=magic_number_callback)
|
60
|
+
|
61
|
+
if TYPE_CHECKING:
|
62
|
+
def __init__(self, magic_number: 'bytes', version_major: 'int', version_minor: 'int', # pylint: disable=unused-argument,super-init-not-called,multiple-statements
|
63
|
+
thiszone: 'int', sigfigs: 'int', snaplen: 'int', network: 'int') -> 'None': ...
|