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,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# pylint: disable=unused-import
|
3
|
+
"""Trace Flows
|
4
|
+
=================
|
5
|
+
|
6
|
+
.. module:: pcapkit.foundation.traceflow
|
7
|
+
|
8
|
+
:mod:`pcapkit.traceflow` implements flow tracing functions for
|
9
|
+
:mod:`pcapkit` package.
|
10
|
+
|
11
|
+
.. note::
|
12
|
+
|
13
|
+
This was implemented as the demand of my mate
|
14
|
+
`@gousaiyang <https://github.com/gousaiyang>`__.
|
15
|
+
|
16
|
+
"""
|
17
|
+
# Base Class for TraceFlow
|
18
|
+
from pcapkit.foundation.traceflow.traceflow import TraceFlow
|
19
|
+
|
20
|
+
# TCP Flow Tracing
|
21
|
+
from pcapkit.foundation.traceflow.tcp import TCP as TCP_TraceFlow
|
22
|
+
|
23
|
+
__all__ = [
|
24
|
+
'TCP_TraceFlow',
|
25
|
+
]
|
26
|
+
|
27
|
+
|
28
|
+
from typing import TYPE_CHECKING
|
29
|
+
|
30
|
+
from pcapkit.corekit.infoclass import Info, info_final
|
31
|
+
|
32
|
+
if TYPE_CHECKING:
|
33
|
+
from typing import Optional
|
34
|
+
|
35
|
+
|
36
|
+
@info_final
|
37
|
+
class TraceFlowManager(Info):
|
38
|
+
"""TraceFlow Manager."""
|
39
|
+
|
40
|
+
#: TCP reassembly.
|
41
|
+
tcp: 'TCP_TraceFlow'
|
42
|
+
|
43
|
+
if TYPE_CHECKING:
|
44
|
+
def __init__(self, tcp: 'Optional[TCP_TraceFlow]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""data models for flow tracing"""
|
3
|
+
|
4
|
+
# TCP flow tracing
|
5
|
+
from pcapkit.foundation.traceflow.data.tcp import Buffer as TCP_Buffer
|
6
|
+
from pcapkit.foundation.traceflow.data.tcp import BufferID as TCP_BufferID
|
7
|
+
from pcapkit.foundation.traceflow.data.tcp import Index as TCP_Index
|
8
|
+
from pcapkit.foundation.traceflow.data.tcp import Packet as TCP_Packet
|
9
|
+
|
10
|
+
__all__ = [
|
11
|
+
'TCP_Buffer', 'TCP_BufferID', 'TCP_Index', 'TCP_Packet',
|
12
|
+
]
|
13
|
+
|
14
|
+
from typing import TYPE_CHECKING
|
15
|
+
|
16
|
+
from pcapkit.corekit.infoclass import Info, info_final
|
17
|
+
|
18
|
+
if TYPE_CHECKING:
|
19
|
+
from typing import Optional
|
20
|
+
|
21
|
+
|
22
|
+
@info_final
|
23
|
+
class TraceFlowData(Info):
|
24
|
+
"""Data storage for flow tracing."""
|
25
|
+
|
26
|
+
#: TCP traced flows.
|
27
|
+
tcp: 'tuple[TCP_Index, ...]'
|
28
|
+
|
29
|
+
if TYPE_CHECKING:
|
30
|
+
def __init__(self, tcp: 'Optional[tuple[TCP_Index, ...]]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""data models for TCP flow tracing"""
|
3
|
+
|
4
|
+
from typing import TYPE_CHECKING, Generic, TypeVar
|
5
|
+
|
6
|
+
from pcapkit.corekit.infoclass import Info, info_final
|
7
|
+
from pcapkit.utilities.compat import Tuple
|
8
|
+
|
9
|
+
__all__ = ['BufferID', 'Packet', 'Buffer', 'Index']
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
from ipaddress import IPv4Address, IPv6Address
|
13
|
+
from typing import Any, Optional
|
14
|
+
|
15
|
+
from dictdumper.dumper import Dumper
|
16
|
+
from typing_extensions import TypeAlias
|
17
|
+
|
18
|
+
from pcapkit.const.reg.linktype import LinkType as Enum_LinkType
|
19
|
+
from pcapkit.protocols.data.misc.pcap.frame import Frame as Data_Frame
|
20
|
+
|
21
|
+
_AT = TypeVar('_AT', 'IPv4Address', 'IPv6Address')
|
22
|
+
|
23
|
+
#: Buffer ID.
|
24
|
+
BufferID: 'TypeAlias' = Tuple[_AT, int, _AT, int]
|
25
|
+
|
26
|
+
|
27
|
+
@info_final
|
28
|
+
class Packet(Info, Generic[_AT]):
|
29
|
+
"""Data structure for **TCP flow tracing**.
|
30
|
+
|
31
|
+
See Also:
|
32
|
+
* :meth:`pcapkit.foundation.traceflow.TraceFlow.dump`
|
33
|
+
* :term:`trace.tcp.packet`
|
34
|
+
|
35
|
+
"""
|
36
|
+
|
37
|
+
#: Data link type from global header.
|
38
|
+
protocol: 'Enum_LinkType'
|
39
|
+
#: Frame number.
|
40
|
+
index: 'int'
|
41
|
+
#: Extracted frame info.
|
42
|
+
frame: 'Data_Frame | dict[str, Any]'
|
43
|
+
#: TCP synchronise (SYN) flag.
|
44
|
+
syn: 'bool'
|
45
|
+
#: TCP finish (FIN) flag.
|
46
|
+
fin: 'bool'
|
47
|
+
#: Source IP.
|
48
|
+
src: '_AT'
|
49
|
+
#: Destination IP.
|
50
|
+
dst: '_AT'
|
51
|
+
#: TCP source port.
|
52
|
+
srcport: 'int'
|
53
|
+
#: TCP destination port.
|
54
|
+
dstport: 'int'
|
55
|
+
#: Frame timestamp.
|
56
|
+
timestamp: 'float'
|
57
|
+
|
58
|
+
if TYPE_CHECKING:
|
59
|
+
def __init__(self, protocol: 'Enum_LinkType', index: 'int', frame: 'Data_Frame | dict[str, Any]', syn: 'bool', fin: 'bool', src: '_AT', dst: '_AT',
|
60
|
+
srcport: 'int', dstport: 'int', timestamp: 'float') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long
|
61
|
+
|
62
|
+
|
63
|
+
@info_final
|
64
|
+
class Buffer(Info):
|
65
|
+
"""Data structure for **TCP flow tracing**.
|
66
|
+
|
67
|
+
See Also:
|
68
|
+
* :attr:`pcapkit.foundation.traceflow.TraceFlow.index`
|
69
|
+
* :term:`trace.tcp.buffer`
|
70
|
+
|
71
|
+
"""
|
72
|
+
|
73
|
+
#: Output dumper object.
|
74
|
+
fpout: 'Dumper'
|
75
|
+
#: List of frame index.
|
76
|
+
index: 'list[int]'
|
77
|
+
#: Flow label generated from ``BUFID``.
|
78
|
+
label: 'str'
|
79
|
+
|
80
|
+
if TYPE_CHECKING:
|
81
|
+
def __init__(self, fpout: 'Dumper',
|
82
|
+
index: 'list[int]', label: 'str') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements
|
83
|
+
|
84
|
+
|
85
|
+
@info_final
|
86
|
+
class Index(Info):
|
87
|
+
"""Data structure for **TCP flow tracing**.
|
88
|
+
|
89
|
+
See Also:
|
90
|
+
* element from :attr:`pcapkit.foundation.traceflow.TraceFlow.index`
|
91
|
+
*tuple*
|
92
|
+
* :term:`trace.tcp.index`
|
93
|
+
|
94
|
+
"""
|
95
|
+
|
96
|
+
#: Output filename if exists.
|
97
|
+
fpout: 'Optional[str]'
|
98
|
+
#: Tuple of frame index.
|
99
|
+
index: 'tuple[int, ...]'
|
100
|
+
#: Flow label generated from ``BUFID``.
|
101
|
+
label: 'str'
|
102
|
+
|
103
|
+
if TYPE_CHECKING:
|
104
|
+
def __init__(self, fpout: 'Optional[str]', index: 'tuple[int, ...]',
|
105
|
+
label: 'str') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements
|
@@ -0,0 +1,159 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# pylint: disable=import-outside-toplevel
|
3
|
+
"""Follow TCP Streams
|
4
|
+
========================
|
5
|
+
|
6
|
+
.. module:: pcapkit.foundation.traceflow.tcp
|
7
|
+
|
8
|
+
:mod:`pcapkit.foundation.traceflow.tcp` is the interface to trace
|
9
|
+
TCP flows from a series of packets and connections.
|
10
|
+
|
11
|
+
"""
|
12
|
+
from typing import TYPE_CHECKING, Generic, overload
|
13
|
+
|
14
|
+
from pcapkit.foundation.traceflow.data.tcp import _AT, Buffer, BufferID, Index, Packet
|
15
|
+
from pcapkit.foundation.traceflow.traceflow import TraceFlowBase as TraceFlow
|
16
|
+
from pcapkit.protocols.transport.tcp import TCP as TCP_Protocol
|
17
|
+
|
18
|
+
__all__ = ['TCP']
|
19
|
+
|
20
|
+
if TYPE_CHECKING:
|
21
|
+
from dictdumper.dumper import Dumper
|
22
|
+
from typing_extensions import Literal
|
23
|
+
|
24
|
+
|
25
|
+
class TCP(TraceFlow[BufferID, Buffer, Index, Packet[_AT]], Generic[_AT]):
|
26
|
+
"""Trace TCP flows.
|
27
|
+
|
28
|
+
Args:
|
29
|
+
fout: output path
|
30
|
+
format: output format
|
31
|
+
byteorder: output file byte order
|
32
|
+
nanosecond: output nanosecond-resolution file flag
|
33
|
+
*args: Arbitrary positional arguments.
|
34
|
+
**kwargs: Arbitrary keyword arguments.
|
35
|
+
|
36
|
+
"""
|
37
|
+
|
38
|
+
##########################################################################
|
39
|
+
# Defaults.
|
40
|
+
##########################################################################
|
41
|
+
|
42
|
+
#: Protocol name of current reassembly object.
|
43
|
+
__protocol_name__ = 'TCP'
|
44
|
+
#: Protocol of current reassembly object.
|
45
|
+
__protocol_type__ = TCP_Protocol
|
46
|
+
|
47
|
+
##########################################################################
|
48
|
+
# Methods.
|
49
|
+
##########################################################################
|
50
|
+
|
51
|
+
def dump(self, packet: 'Packet[_AT]') -> 'None':
|
52
|
+
"""Dump frame to output files.
|
53
|
+
|
54
|
+
Arguments:
|
55
|
+
packet: a flow packet (:term:`trace.tcp.packet`)
|
56
|
+
|
57
|
+
"""
|
58
|
+
# fetch flow label
|
59
|
+
output = self.trace(packet, output=True)
|
60
|
+
|
61
|
+
# dump files
|
62
|
+
output(packet.frame, name=f'Frame {packet.index}') # pylint: disable=not-callable
|
63
|
+
|
64
|
+
@overload
|
65
|
+
def trace(self, packet: 'Packet[_AT]', *, output: 'Literal[True]' = ...) -> 'Dumper': ...
|
66
|
+
@overload
|
67
|
+
def trace(self, packet: 'Packet[_AT]', *, output: 'Literal[False]' = ...) -> 'str': ...
|
68
|
+
|
69
|
+
def trace(self, packet: 'Packet[_AT]', *, output: 'bool' = False) -> 'Dumper | str':
|
70
|
+
"""Trace packets.
|
71
|
+
|
72
|
+
Arguments:
|
73
|
+
packet: a flow packet (:term:`trace.tcp.packet`)
|
74
|
+
output: flag if has formatted dumper
|
75
|
+
|
76
|
+
Returns:
|
77
|
+
If ``output`` is :data:`True`, returns the initiated
|
78
|
+
:class:`~dictdumper.dumper.Dumper` object, which will dump data to
|
79
|
+
the output file named after the flow label; otherwise, returns the
|
80
|
+
flow label itself.
|
81
|
+
|
82
|
+
Notes:
|
83
|
+
The flow label is formatted as following:
|
84
|
+
|
85
|
+
.. code-block:: python
|
86
|
+
|
87
|
+
f'{packet.src}_{packet.srcport}-{packet.dst}_{info.dstport}-{packet.timestamp}'
|
88
|
+
|
89
|
+
"""
|
90
|
+
# clear cache
|
91
|
+
self.__cached__['submit'] = None
|
92
|
+
|
93
|
+
# Buffer Identifier
|
94
|
+
BUFID = (packet.src, packet.srcport, packet.dst, packet.dstport) # type: BufferID
|
95
|
+
# SYN = packet.syn # Synchronise Flag (Establishment)
|
96
|
+
FIN = packet.fin # Finish Flag (Termination)
|
97
|
+
|
98
|
+
# # when SYN is set, reset buffer of this seesion
|
99
|
+
# if SYN and BUFID in self._buffer:
|
100
|
+
# temp = self._buffer.pop(BUFID)
|
101
|
+
# temp['fpout'] = (self._fproot, self._fdpext)
|
102
|
+
# temp['index'] = tuple(temp['index'])
|
103
|
+
# self._stream.append(Info(temp))
|
104
|
+
|
105
|
+
# initialise buffer with BUFID
|
106
|
+
if BUFID not in self._buffer:
|
107
|
+
if packet.src.version == 4:
|
108
|
+
label = f'{packet.src}_{packet.srcport}-{packet.dst}_{packet.dstport}-{packet.timestamp}'
|
109
|
+
else:
|
110
|
+
label = f'{packet.src}_{packet.srcport}-{packet.dst}_{packet.dstport}-{packet.timestamp}'.replace(':', '.')
|
111
|
+
self._buffer[BUFID] = Buffer(
|
112
|
+
fpout=self._foutio(fname=f'{self._fproot}/{label}{self._fdpext or ""}', protocol=packet.protocol,
|
113
|
+
byteorder=self._endian, nanosecond=self._nnsecd),
|
114
|
+
index=[],
|
115
|
+
label=label,
|
116
|
+
)
|
117
|
+
|
118
|
+
# trace frame record
|
119
|
+
self._buffer[BUFID].index.append(packet.index)
|
120
|
+
fpout = self._buffer[BUFID].fpout
|
121
|
+
label = self._buffer[BUFID].label
|
122
|
+
|
123
|
+
# when FIN is set, submit buffer of this session
|
124
|
+
if FIN:
|
125
|
+
buf = self._buffer.pop(BUFID)
|
126
|
+
# fpout, label = buf['fpout'], buf['label']
|
127
|
+
|
128
|
+
index = Index(
|
129
|
+
fpout=f'{self._fproot}/{label}{self._fdpext}' if self._fdpext is not None else None,
|
130
|
+
index=tuple(buf.index),
|
131
|
+
label=label,
|
132
|
+
)
|
133
|
+
for callback in self.__callback_fn__:
|
134
|
+
callback(index)
|
135
|
+
self._stream.append(index)
|
136
|
+
|
137
|
+
# return label or output object
|
138
|
+
return fpout if output else label
|
139
|
+
|
140
|
+
def submit(self) -> 'tuple[Index, ...]':
|
141
|
+
"""Submit traced TCP flows.
|
142
|
+
|
143
|
+
Returns:
|
144
|
+
Traced TCP flow (:term:`trace.tcp.index`).
|
145
|
+
|
146
|
+
"""
|
147
|
+
if (cached := self.__cached__.get('submit')) is not None:
|
148
|
+
return cached
|
149
|
+
|
150
|
+
ret = [] # type: list[Index]
|
151
|
+
for buf in self._buffer.values():
|
152
|
+
ret.append(Index(fpout=f"{self._fproot}/{buf.label}{self._fdpext}" if self._fdpext else None,
|
153
|
+
index=tuple(buf.index),
|
154
|
+
label=buf.label,))
|
155
|
+
ret.extend(self._stream)
|
156
|
+
ret_submit = tuple(ret)
|
157
|
+
|
158
|
+
self.__cached__['submit'] = ret_submit
|
159
|
+
return ret_submit
|