pypcapkit 1.5.0__cp315-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 +132 -0
- pcapkit/__main__.py +166 -0
- pcapkit/all.py +148 -0
- pcapkit/const/__init__.py +90 -0
- pcapkit/const/arp/__init__.py +25 -0
- pcapkit/const/arp/hardware.py +195 -0
- pcapkit/const/arp/operation.py +145 -0
- pcapkit/const/esp/__init__.py +39 -0
- pcapkit/const/esp/cipher.py +265 -0
- pcapkit/const/esp/integrity.py +154 -0
- pcapkit/const/ftp/__init__.py +25 -0
- pcapkit/const/ftp/command.py +668 -0
- pcapkit/const/ftp/return_code.py +409 -0
- pcapkit/const/hip/__init__.py +94 -0
- pcapkit/const/hip/certificate.py +91 -0
- pcapkit/const/hip/cipher.py +79 -0
- pcapkit/const/hip/di.py +73 -0
- pcapkit/const/hip/ecdsa_curve.py +73 -0
- pcapkit/const/hip/ecdsa_low_curve.py +70 -0
- pcapkit/const/hip/eddsa_curve.py +79 -0
- pcapkit/const/hip/esp_transform_suite.py +112 -0
- pcapkit/const/hip/group.py +100 -0
- pcapkit/const/hip/hi_algorithm.py +100 -0
- pcapkit/const/hip/hit_suite.py +82 -0
- pcapkit/const/hip/nat_traversal.py +76 -0
- pcapkit/const/hip/notify_message.py +214 -0
- pcapkit/const/hip/packet.py +103 -0
- pcapkit/const/hip/parameter.py +391 -0
- pcapkit/const/hip/registration.py +82 -0
- pcapkit/const/hip/registration_failure.py +98 -0
- pcapkit/const/hip/suite.py +85 -0
- pcapkit/const/hip/transport.py +73 -0
- pcapkit/const/http/__init__.py +39 -0
- pcapkit/const/http/error_code.py +108 -0
- pcapkit/const/http/frame.py +109 -0
- pcapkit/const/http/method.py +336 -0
- pcapkit/const/http/setting.py +110 -0
- pcapkit/const/http/status_code.py +347 -0
- pcapkit/const/ipv4/__init__.py +57 -0
- pcapkit/const/ipv4/classification_level.py +77 -0
- pcapkit/const/ipv4/option_class.py +69 -0
- pcapkit/const/ipv4/option_number.py +151 -0
- pcapkit/const/ipv4/protection_authority.py +77 -0
- pcapkit/const/ipv4/qs_function.py +65 -0
- pcapkit/const/ipv4/router_alert.py +268 -0
- pcapkit/const/ipv4/tos_del.py +65 -0
- pcapkit/const/ipv4/tos_ecn.py +69 -0
- pcapkit/const/ipv4/tos_pre.py +77 -0
- pcapkit/const/ipv4/tos_rel.py +65 -0
- pcapkit/const/ipv4/tos_thr.py +65 -0
- pcapkit/const/ipv4/ts_flag.py +67 -0
- pcapkit/const/ipv6/__init__.py +53 -0
- pcapkit/const/ipv6/extension_header.py +86 -0
- pcapkit/const/ipv6/option.py +151 -0
- pcapkit/const/ipv6/option_action.py +69 -0
- pcapkit/const/ipv6/qs_function.py +65 -0
- pcapkit/const/ipv6/router_alert.py +280 -0
- pcapkit/const/ipv6/routing.py +94 -0
- pcapkit/const/ipv6/seed_id.py +69 -0
- pcapkit/const/ipv6/smf_dpd_mode.py +65 -0
- pcapkit/const/ipv6/tagger_id.py +76 -0
- pcapkit/const/ipx/__init__.py +27 -0
- pcapkit/const/ipx/packet.py +86 -0
- pcapkit/const/ipx/socket.py +121 -0
- pcapkit/const/l2tp/__init__.py +21 -0
- pcapkit/const/l2tp/type.py +65 -0
- pcapkit/const/mh/__init__.py +206 -0
- pcapkit/const/mh/access_type.py +106 -0
- pcapkit/const/mh/ack_status_code.py +85 -0
- pcapkit/const/mh/ani_suboption.py +88 -0
- pcapkit/const/mh/auth_subtype.py +67 -0
- pcapkit/const/mh/binding_ack_flag.py +82 -0
- pcapkit/const/mh/binding_error.py +65 -0
- pcapkit/const/mh/binding_revocation.py +73 -0
- pcapkit/const/mh/binding_update_flag.py +97 -0
- pcapkit/const/mh/cga_extension.py +80 -0
- pcapkit/const/mh/cga_sec.py +71 -0
- pcapkit/const/mh/cga_type.py +82 -0
- pcapkit/const/mh/dhcp_support_mode.py +67 -0
- pcapkit/const/mh/dns_status_code.py +79 -0
- pcapkit/const/mh/dsmip6_tls_packet.py +76 -0
- pcapkit/const/mh/dsmipv6_home_address.py +88 -0
- pcapkit/const/mh/enumerating_algorithm.py +70 -0
- pcapkit/const/mh/fb_ack_status.py +76 -0
- pcapkit/const/mh/fb_action.py +85 -0
- pcapkit/const/mh/fb_indication_trigger.py +79 -0
- pcapkit/const/mh/fb_type.py +73 -0
- pcapkit/const/mh/flow_id_status.py +91 -0
- pcapkit/const/mh/flow_id_suboption.py +85 -0
- pcapkit/const/mh/handoff_type.py +85 -0
- pcapkit/const/mh/handover_ack_flag.py +70 -0
- pcapkit/const/mh/handover_ack_status.py +106 -0
- pcapkit/const/mh/handover_initiate_flag.py +73 -0
- pcapkit/const/mh/handover_initiate_status.py +76 -0
- pcapkit/const/mh/home_address_reply.py +85 -0
- pcapkit/const/mh/lla_code.py +77 -0
- pcapkit/const/mh/lma_mag_suboption.py +73 -0
- pcapkit/const/mh/mn_group_id.py +73 -0
- pcapkit/const/mh/mn_id_subtype.py +91 -0
- pcapkit/const/mh/operator_id.py +77 -0
- pcapkit/const/mh/option.py +274 -0
- pcapkit/const/mh/packet.py +133 -0
- pcapkit/const/mh/qos_attribute.py +103 -0
- pcapkit/const/mh/revocation_status_code.py +97 -0
- pcapkit/const/mh/revocation_trigger.py +100 -0
- pcapkit/const/mh/status_code.py +246 -0
- pcapkit/const/mh/traffic_selector.py +76 -0
- pcapkit/const/mh/upa_status.py +85 -0
- pcapkit/const/mh/upn_reason.py +94 -0
- pcapkit/const/ngap/__init__.py +34 -0
- pcapkit/const/ngap/procedure_code.py +223 -0
- pcapkit/const/ngap/protocol_ie.py +937 -0
- pcapkit/const/ospf/__init__.py +27 -0
- pcapkit/const/ospf/authentication.py +79 -0
- pcapkit/const/ospf/packet.py +85 -0
- pcapkit/const/pcapng/__init__.py +55 -0
- pcapkit/const/pcapng/block_type.py +166 -0
- pcapkit/const/pcapng/filter_type.py +62 -0
- pcapkit/const/pcapng/hash_algorithm.py +73 -0
- pcapkit/const/pcapng/option_type.py +435 -0
- pcapkit/const/pcapng/record_type.py +70 -0
- pcapkit/const/pcapng/secrets_type.py +69 -0
- pcapkit/const/pcapng/tls_key_label.py +89 -0
- pcapkit/const/pcapng/verdict_type.py +67 -0
- pcapkit/const/reg/__init__.py +42 -0
- pcapkit/const/reg/apptype/__init__.py +194 -0
- pcapkit/const/reg/apptype/apptype.py +5319 -0
- pcapkit/const/reg/apptype/dccp.py +112 -0
- pcapkit/const/reg/apptype/sctp.py +432 -0
- pcapkit/const/reg/apptype/tcp.py +25148 -0
- pcapkit/const/reg/apptype/udp.py +24556 -0
- pcapkit/const/reg/ethertype.py +740 -0
- pcapkit/const/reg/linktype.py +806 -0
- pcapkit/const/reg/transtype.py +552 -0
- pcapkit/const/sctp/__init__.py +37 -0
- pcapkit/const/sctp/cause_code.py +146 -0
- pcapkit/const/sctp/chunk.py +164 -0
- pcapkit/const/sctp/parameter.py +170 -0
- pcapkit/const/sctp/payload_protocol_identifier.py +325 -0
- pcapkit/const/tcp/__init__.py +35 -0
- pcapkit/const/tcp/checksum.py +69 -0
- pcapkit/const/tcp/flags.py +96 -0
- pcapkit/const/tcp/mp_tcp_option.py +95 -0
- pcapkit/const/tcp/option.py +210 -0
- pcapkit/const/vlan/__init__.py +23 -0
- pcapkit/const/vlan/priority_level.py +85 -0
- pcapkit/corekit/__init__.py +63 -0
- pcapkit/corekit/context.py +250 -0
- pcapkit/corekit/decorators.py +355 -0
- pcapkit/corekit/enum.py +806 -0
- pcapkit/corekit/fields/__init__.py +45 -0
- pcapkit/corekit/fields/byteorder.py +80 -0
- pcapkit/corekit/fields/collections.py +563 -0
- pcapkit/corekit/fields/field.py +599 -0
- pcapkit/corekit/fields/ipaddress.py +755 -0
- pcapkit/corekit/fields/misc.py +877 -0
- pcapkit/corekit/fields/numbers.py +1200 -0
- pcapkit/corekit/fields/strings.py +409 -0
- pcapkit/corekit/infoclass.py +1313 -0
- pcapkit/corekit/io.py +1013 -0
- pcapkit/corekit/module.py +121 -0
- pcapkit/corekit/multidict.py +679 -0
- pcapkit/corekit/packet.py +185 -0
- pcapkit/corekit/protochain.py +266 -0
- pcapkit/corekit/sentinels.py +579 -0
- pcapkit/corekit/version.py +40 -0
- pcapkit/dumpkit/__init__.py +15 -0
- pcapkit/dumpkit/common.py +832 -0
- pcapkit/dumpkit/null.py +77 -0
- pcapkit/dumpkit/pcap.py +309 -0
- pcapkit/foundation/__init__.py +51 -0
- pcapkit/foundation/engines/__init__.py +35 -0
- pcapkit/foundation/engines/_pcap_backend.py +361 -0
- pcapkit/foundation/engines/dpkt.py +679 -0
- pcapkit/foundation/engines/engine.py +340 -0
- pcapkit/foundation/engines/pcap.py +247 -0
- pcapkit/foundation/engines/pcap_ct.py +484 -0
- pcapkit/foundation/engines/pcapng.py +503 -0
- pcapkit/foundation/engines/pypcap.py +392 -0
- pcapkit/foundation/engines/pypcapfile.py +470 -0
- pcapkit/foundation/engines/pyshark.py +335 -0
- pcapkit/foundation/engines/scapy.py +474 -0
- pcapkit/foundation/extraction.py +1891 -0
- pcapkit/foundation/reassembly/__init__.py +50 -0
- pcapkit/foundation/reassembly/data/__init__.py +31 -0
- pcapkit/foundation/reassembly/data/data.py +365 -0
- pcapkit/foundation/reassembly/data/ip.py +195 -0
- pcapkit/foundation/reassembly/data/tcp.py +297 -0
- pcapkit/foundation/reassembly/ip.py +553 -0
- pcapkit/foundation/reassembly/ipv4.py +80 -0
- pcapkit/foundation/reassembly/ipv6.py +188 -0
- pcapkit/foundation/reassembly/reassembly.py +614 -0
- pcapkit/foundation/reassembly/tcp.py +872 -0
- pcapkit/foundation/registry/__init__.py +48 -0
- pcapkit/foundation/registry/foundation.py +362 -0
- pcapkit/foundation/registry/protocols.py +1730 -0
- pcapkit/foundation/traceflow/__init__.py +45 -0
- pcapkit/foundation/traceflow/data/__init__.py +17 -0
- pcapkit/foundation/traceflow/data/data.py +139 -0
- pcapkit/foundation/traceflow/data/tcp.py +200 -0
- pcapkit/foundation/traceflow/tcp.py +588 -0
- pcapkit/foundation/traceflow/traceflow.py +598 -0
- pcapkit/interface/__init__.py +24 -0
- pcapkit/interface/core.py +264 -0
- pcapkit/interface/misc.py +216 -0
- pcapkit/interface/registry.py +116 -0
- pcapkit/protocols/__init__.py +87 -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 +45 -0
- pcapkit/protocols/application/application.py +184 -0
- pcapkit/protocols/application/ftp.py +385 -0
- pcapkit/protocols/application/ftp_data.py +64 -0
- pcapkit/protocols/application/http.py +642 -0
- pcapkit/protocols/application/httpv1.py +622 -0
- pcapkit/protocols/application/httpv2.py +1575 -0
- pcapkit/protocols/application/ngap.py +566 -0
- pcapkit/protocols/application/ospf.py +489 -0
- pcapkit/protocols/application/rarp.py +127 -0
- pcapkit/protocols/data/__init__.py +272 -0
- pcapkit/protocols/data/application/__init__.py +77 -0
- pcapkit/protocols/data/application/ftp.py +72 -0
- pcapkit/protocols/data/application/httpv1.py +91 -0
- pcapkit/protocols/data/application/httpv2.py +340 -0
- pcapkit/protocols/data/application/ngap.py +125 -0
- pcapkit/protocols/data/application/ospf.py +76 -0
- pcapkit/protocols/data/data.py +50 -0
- pcapkit/protocols/data/internet/__init__.py +504 -0
- pcapkit/protocols/data/internet/ah.py +39 -0
- pcapkit/protocols/data/internet/esp.py +71 -0
- pcapkit/protocols/data/internet/hip.py +1112 -0
- pcapkit/protocols/data/internet/hopopt.py +446 -0
- pcapkit/protocols/data/internet/ipv4.py +467 -0
- pcapkit/protocols/data/internet/ipv6.py +85 -0
- pcapkit/protocols/data/internet/ipv6_ext.py +53 -0
- pcapkit/protocols/data/internet/ipv6_frag.py +41 -0
- pcapkit/protocols/data/internet/ipv6_opts.py +463 -0
- pcapkit/protocols/data/internet/ipv6_route.py +113 -0
- pcapkit/protocols/data/internet/ipx.py +60 -0
- pcapkit/protocols/data/internet/mh.py +2434 -0
- pcapkit/protocols/data/link/__init__.py +38 -0
- pcapkit/protocols/data/link/arp.py +74 -0
- pcapkit/protocols/data/link/ethernet.py +28 -0
- pcapkit/protocols/data/link/l2tp.py +73 -0
- pcapkit/protocols/data/link/loopback.py +25 -0
- pcapkit/protocols/data/link/vlan.py +48 -0
- pcapkit/protocols/data/misc/__init__.py +112 -0
- pcapkit/protocols/data/misc/null.py +19 -0
- pcapkit/protocols/data/misc/pcap/__init__.py +18 -0
- pcapkit/protocols/data/misc/pcap/frame.py +63 -0
- pcapkit/protocols/data/misc/pcap/header.py +53 -0
- pcapkit/protocols/data/misc/pcapng.py +1034 -0
- pcapkit/protocols/data/misc/raw.py +35 -0
- pcapkit/protocols/data/protocol.py +32 -0
- pcapkit/protocols/data/transport/__init__.py +158 -0
- pcapkit/protocols/data/transport/sctp.py +634 -0
- pcapkit/protocols/data/transport/tcp.py +633 -0
- pcapkit/protocols/data/transport/udp.py +33 -0
- pcapkit/protocols/internet/NotImplemented/ecn.py +0 -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 +45 -0
- pcapkit/protocols/internet/ah.py +326 -0
- pcapkit/protocols/internet/esp.py +1512 -0
- pcapkit/protocols/internet/hip.py +5806 -0
- pcapkit/protocols/internet/hopopt.py +2271 -0
- pcapkit/protocols/internet/internet.py +511 -0
- pcapkit/protocols/internet/ip.py +52 -0
- pcapkit/protocols/internet/ipsec.py +48 -0
- pcapkit/protocols/internet/ipv4.py +2165 -0
- pcapkit/protocols/internet/ipv6.py +752 -0
- pcapkit/protocols/internet/ipv6_ext.py +693 -0
- pcapkit/protocols/internet/ipv6_frag.py +293 -0
- pcapkit/protocols/internet/ipv6_opts.py +2259 -0
- pcapkit/protocols/internet/ipv6_route.py +945 -0
- pcapkit/protocols/internet/ipx.py +322 -0
- pcapkit/protocols/internet/mh.py +11312 -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 +40 -0
- pcapkit/protocols/link/arp.py +538 -0
- pcapkit/protocols/link/c_tag.py +109 -0
- pcapkit/protocols/link/ethernet.py +251 -0
- pcapkit/protocols/link/l2tp.py +184 -0
- pcapkit/protocols/link/l2tpv2.py +451 -0
- pcapkit/protocols/link/link.py +228 -0
- pcapkit/protocols/link/loopback.py +293 -0
- pcapkit/protocols/link/s_tag.py +104 -0
- pcapkit/protocols/link/vlan.py +274 -0
- pcapkit/protocols/misc/__init__.py +37 -0
- pcapkit/protocols/misc/null.py +153 -0
- pcapkit/protocols/misc/pcap/__init__.py +17 -0
- pcapkit/protocols/misc/pcap/frame.py +712 -0
- pcapkit/protocols/misc/pcap/header.py +380 -0
- pcapkit/protocols/misc/pcapng.py +6941 -0
- pcapkit/protocols/misc/raw.py +190 -0
- pcapkit/protocols/protocol.py +2564 -0
- pcapkit/protocols/schema/__init__.py +215 -0
- pcapkit/protocols/schema/application/__init__.py +54 -0
- pcapkit/protocols/schema/application/ftp.py +21 -0
- pcapkit/protocols/schema/application/httpv1.py +21 -0
- pcapkit/protocols/schema/application/httpv2.py +456 -0
- pcapkit/protocols/schema/application/ngap.py +29 -0
- pcapkit/protocols/schema/application/ospf.py +109 -0
- pcapkit/protocols/schema/internet/__init__.py +509 -0
- pcapkit/protocols/schema/internet/ah.py +57 -0
- pcapkit/protocols/schema/internet/esp.py +46 -0
- pcapkit/protocols/schema/internet/hip.py +1635 -0
- pcapkit/protocols/schema/internet/hopopt.py +688 -0
- pcapkit/protocols/schema/internet/ipv4.py +771 -0
- pcapkit/protocols/schema/internet/ipv6.py +204 -0
- pcapkit/protocols/schema/internet/ipv6_ext.py +42 -0
- pcapkit/protocols/schema/internet/ipv6_frag.py +51 -0
- pcapkit/protocols/schema/internet/ipv6_option.py +306 -0
- pcapkit/protocols/schema/internet/ipv6_opts.py +700 -0
- pcapkit/protocols/schema/internet/ipv6_route.py +346 -0
- pcapkit/protocols/schema/internet/ipx.py +53 -0
- pcapkit/protocols/schema/internet/mh.py +3268 -0
- pcapkit/protocols/schema/link/__init__.py +17 -0
- pcapkit/protocols/schema/link/arp.py +49 -0
- pcapkit/protocols/schema/link/ethernet.py +71 -0
- pcapkit/protocols/schema/link/l2tp.py +122 -0
- pcapkit/protocols/schema/link/loopback.py +33 -0
- pcapkit/protocols/schema/link/vlan.py +77 -0
- pcapkit/protocols/schema/misc/__init__.py +112 -0
- pcapkit/protocols/schema/misc/null.py +19 -0
- pcapkit/protocols/schema/misc/pcap/__init__.py +10 -0
- pcapkit/protocols/schema/misc/pcap/frame.py +47 -0
- pcapkit/protocols/schema/misc/pcap/header.py +103 -0
- pcapkit/protocols/schema/misc/pcapng.py +2820 -0
- pcapkit/protocols/schema/misc/raw.py +24 -0
- pcapkit/protocols/schema/schema.py +1557 -0
- pcapkit/protocols/schema/transport/__init__.py +154 -0
- pcapkit/protocols/schema/transport/sctp.py +969 -0
- pcapkit/protocols/schema/transport/tcp.py +1168 -0
- pcapkit/protocols/schema/transport/udp.py +44 -0
- pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
- pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
- pcapkit/protocols/transport/__init__.py +28 -0
- pcapkit/protocols/transport/sctp.py +3897 -0
- pcapkit/protocols/transport/tcp.py +3507 -0
- pcapkit/protocols/transport/transport.py +339 -0
- pcapkit/protocols/transport/udp.py +307 -0
- pcapkit/py.typed +0 -0
- pcapkit/toolkit/__init__.py +85 -0
- pcapkit/toolkit/dpkt.py +923 -0
- pcapkit/toolkit/pcap.py +423 -0
- pcapkit/toolkit/pcap_ct.py +165 -0
- pcapkit/toolkit/pcapng.py +270 -0
- pcapkit/toolkit/pypcap.py +164 -0
- pcapkit/toolkit/pypcapfile.py +893 -0
- pcapkit/toolkit/pyshark.py +656 -0
- pcapkit/toolkit/scapy.py +801 -0
- pcapkit/utilities/__init__.py +29 -0
- pcapkit/utilities/chardet.py +64 -0
- pcapkit/utilities/compat.py +218 -0
- pcapkit/utilities/config.py +382 -0
- pcapkit/utilities/datetime.py +134 -0
- pcapkit/utilities/exceptions.py +840 -0
- pcapkit/utilities/logging.py +406 -0
- pcapkit/utilities/warnings.py +527 -0
- pcapkit/vendor/__init__.py +186 -0
- pcapkit/vendor/__main__.py +263 -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 +840 -0
- pcapkit/vendor/esp/__init__.py +32 -0
- pcapkit/vendor/esp/cipher.py +114 -0
- pcapkit/vendor/esp/integrity.py +111 -0
- pcapkit/vendor/ftp/__init__.py +27 -0
- pcapkit/vendor/ftp/command.py +594 -0
- pcapkit/vendor/ftp/return_code.py +369 -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 +94 -0
- pcapkit/vendor/http/frame.py +91 -0
- pcapkit/vendor/http/method.py +316 -0
- pcapkit/vendor/http/setting.py +93 -0
- pcapkit/vendor/http/status_code.py +233 -0
- pcapkit/vendor/ipv4/__init__.py +59 -0
- pcapkit/vendor/ipv4/classification_level.py +90 -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 +96 -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 +78 -0
- pcapkit/vendor/ipv4/ts_flag.py +79 -0
- pcapkit/vendor/ipv6/__init__.py +53 -0
- pcapkit/vendor/ipv6/extension_header.py +220 -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 +40 -0
- pcapkit/vendor/ipx/packet.py +205 -0
- pcapkit/vendor/ipx/socket.py +333 -0
- pcapkit/vendor/l2tp/__init__.py +21 -0
- pcapkit/vendor/l2tp/type.py +79 -0
- pcapkit/vendor/mh/__init__.py +206 -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 +164 -0
- pcapkit/vendor/mh/binding_error.py +78 -0
- pcapkit/vendor/mh/binding_revocation.py +87 -0
- pcapkit/vendor/mh/binding_update_flag.py +163 -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 +159 -0
- pcapkit/vendor/mh/handover_ack_status.py +87 -0
- pcapkit/vendor/mh/handover_initiate_flag.py +159 -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/ngap/__init__.py +31 -0
- pcapkit/vendor/ngap/procedure_code.py +233 -0
- pcapkit/vendor/ngap/protocol_ie.py +201 -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 +55 -0
- pcapkit/vendor/pcapng/block_type.py +136 -0
- pcapkit/vendor/pcapng/filter_type.py +77 -0
- pcapkit/vendor/pcapng/hash_algorithm.py +82 -0
- pcapkit/vendor/pcapng/option_type.py +490 -0
- pcapkit/vendor/pcapng/record_type.py +81 -0
- pcapkit/vendor/pcapng/secrets_type.py +80 -0
- pcapkit/vendor/pcapng/tls_key_label.py +194 -0
- pcapkit/vendor/pcapng/verdict_type.py +79 -0
- pcapkit/vendor/reg/__init__.py +47 -0
- pcapkit/vendor/reg/apptype/__init__.py +36 -0
- pcapkit/vendor/reg/apptype/apptype.py +1435 -0
- pcapkit/vendor/reg/apptype/dccp.py +27 -0
- pcapkit/vendor/reg/apptype/sctp.py +27 -0
- pcapkit/vendor/reg/apptype/tcp.py +27 -0
- pcapkit/vendor/reg/apptype/udp.py +27 -0
- pcapkit/vendor/reg/ethertype.py +175 -0
- pcapkit/vendor/reg/linktype.py +210 -0
- pcapkit/vendor/reg/transtype.py +116 -0
- pcapkit/vendor/sctp/__init__.py +37 -0
- pcapkit/vendor/sctp/cause_code.py +29 -0
- pcapkit/vendor/sctp/chunk.py +29 -0
- pcapkit/vendor/sctp/parameter.py +29 -0
- pcapkit/vendor/sctp/payload_protocol_identifier.py +34 -0
- pcapkit/vendor/tcp/__init__.py +35 -0
- pcapkit/vendor/tcp/checksum.py +80 -0
- pcapkit/vendor/tcp/flags.py +181 -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.5.0.dist-info/METADATA +204 -0
- pypcapkit-1.5.0.dist-info/RECORD +536 -0
- pypcapkit-1.5.0.dist-info/WHEEL +5 -0
- pypcapkit-1.5.0.dist-info/entry_points.txt +3 -0
- pypcapkit-1.5.0.dist-info/licenses/LICENSE +29 -0
- pypcapkit-1.5.0.dist-info/top_level.txt +1 -0
pcapkit/__init__.py
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# pylint: disable=wrong-import-position,unused-import,unused-wildcard-import
|
|
3
|
+
"""Stream PCAP File Extractor
|
|
4
|
+
================================
|
|
5
|
+
|
|
6
|
+
.. module:: pcapkit
|
|
7
|
+
|
|
8
|
+
:mod:`pcapkit` is an independent open source library, using only
|
|
9
|
+
`DictDumper`_ as its formatted output dumper.
|
|
10
|
+
|
|
11
|
+
Unlike popular PCAP file extractors, such as `Scapy`_,
|
|
12
|
+
`DPKT`_ and `PyShark`_, :mod:`pcapkit` uses streaming
|
|
13
|
+
strategy to read input files. That is to read frame by
|
|
14
|
+
frame, decrease occupation on memory, as well as enhance
|
|
15
|
+
efficiency in some way.
|
|
16
|
+
|
|
17
|
+
In :mod:`pcapkit`, all files can be described as the following
|
|
18
|
+
components.
|
|
19
|
+
|
|
20
|
+
- Interface (:mod:`pcapkit.interface`)
|
|
21
|
+
|
|
22
|
+
User interface for the :mod:`pcapkit` library, which
|
|
23
|
+
standardises and simplifies the usage of this library.
|
|
24
|
+
|
|
25
|
+
- Foundation (:mod:`pcapkit.foundation`)
|
|
26
|
+
|
|
27
|
+
Synthesises file I/O and protocol analysis, coordinates
|
|
28
|
+
information exchange in all network layers, as well as
|
|
29
|
+
provides the fundamental functions for :mod:`pcapkit`.
|
|
30
|
+
|
|
31
|
+
- Protocols (:mod:`pcapkit.protocols`)
|
|
32
|
+
|
|
33
|
+
Collection of all protocol families, with detailed
|
|
34
|
+
implementation and methods.
|
|
35
|
+
|
|
36
|
+
- Utilities (:mod:`pcapkit.utilities`)
|
|
37
|
+
|
|
38
|
+
Auxiliary functions and tools for :mod:`pcapkit`.
|
|
39
|
+
|
|
40
|
+
- CoreKit (:mod:`pcapkit.corekit`)
|
|
41
|
+
|
|
42
|
+
Core utilities for :mod:`pcapkit` implementation, mainly
|
|
43
|
+
for internal data structure and processing.
|
|
44
|
+
|
|
45
|
+
- ToolKit (:mod:`pcapkit.toolkit`)
|
|
46
|
+
|
|
47
|
+
Auxiliary tools for :mod:`pcapkit` to support the multiple
|
|
48
|
+
extraction engines with a unified interface.
|
|
49
|
+
|
|
50
|
+
- DumpKit (:mod:`pcapkit.dumpkit`)
|
|
51
|
+
|
|
52
|
+
File output formatters for :mod:`pcapkit`.
|
|
53
|
+
|
|
54
|
+
- Constants (:mod:`pcapkit.const`)
|
|
55
|
+
|
|
56
|
+
Constant enumerations used in :mod:`pcapkit` for protocol
|
|
57
|
+
family extraction and representation.
|
|
58
|
+
|
|
59
|
+
- Vendor Crawlers (:mod:`pcapkit.vendor`)
|
|
60
|
+
|
|
61
|
+
Web crawlers that generate the constant enumerations in
|
|
62
|
+
:mod:`pcapkit.const`.
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
###############################################################################
|
|
66
|
+
# conda ``_extern`` module support
|
|
67
|
+
|
|
68
|
+
import os
|
|
69
|
+
import sys
|
|
70
|
+
|
|
71
|
+
_extern = os.path.join(os.path.dirname(os.path.realpath(__file__)), '_extern')
|
|
72
|
+
if os.path.exists(_extern):
|
|
73
|
+
sys.path.append(_extern)
|
|
74
|
+
|
|
75
|
+
###############################################################################
|
|
76
|
+
|
|
77
|
+
import warnings
|
|
78
|
+
|
|
79
|
+
import tbtrim
|
|
80
|
+
|
|
81
|
+
from pcapkit.utilities.exceptions import BaseError
|
|
82
|
+
from pcapkit.utilities.logging import DEVMODE
|
|
83
|
+
from pcapkit.utilities.warnings import DevModeWarning
|
|
84
|
+
|
|
85
|
+
# set up sys.excepthook
|
|
86
|
+
if DEVMODE:
|
|
87
|
+
warnings.showwarning('development mode enabled', DevModeWarning,
|
|
88
|
+
filename=__file__, lineno=0,
|
|
89
|
+
line=f"PCAPKIT_DEVMODE={os.environ.get('PCAPKIT_DEVMODE', '1')}")
|
|
90
|
+
else:
|
|
91
|
+
ROOT = os.path.dirname(os.path.realpath(__file__))
|
|
92
|
+
tbtrim.set_trim_rule(lambda filename: ROOT in os.path.realpath(filename),
|
|
93
|
+
exception=BaseError, strict=False)
|
|
94
|
+
|
|
95
|
+
from pcapkit.interface import *
|
|
96
|
+
from pcapkit.protocols import *
|
|
97
|
+
|
|
98
|
+
__all__ = [
|
|
99
|
+
'extract', 'reassemble', 'trace', # Interface Functions
|
|
100
|
+
|
|
101
|
+
'TREE', 'JSON', 'PLIST', 'PCAP', # Format Macros
|
|
102
|
+
'LINK', 'INET', 'TRANS', 'APP', 'RAW', # Layer Macros
|
|
103
|
+
'DPKT', 'Scapy', 'PyShark', 'PCAPKit', # Engine Macros
|
|
104
|
+
'PyPCAP', 'PCAP_CT', 'PyPCAPFile', # Engine Macros
|
|
105
|
+
|
|
106
|
+
'LINKTYPE', 'ETHERTYPE', 'TRANSTYPE', 'APPTYPE', # Protocol Numbers
|
|
107
|
+
|
|
108
|
+
'Header', 'Frame', # PCAP Headers
|
|
109
|
+
'PCAPNG', # PCAPNG Format
|
|
110
|
+
|
|
111
|
+
'NoPayload', # No Payload
|
|
112
|
+
'Raw', # Raw Packet
|
|
113
|
+
|
|
114
|
+
'ARP', 'C_Tag', 'Ethernet', 'InARP', 'L2TP', # Link Layer
|
|
115
|
+
'L2TPv2', 'Loopback', 'S_Tag', 'VLAN',
|
|
116
|
+
|
|
117
|
+
'AH', 'ESP', 'IP', 'IPsec', 'IPv4', 'IPv6', 'IPX', # Internet Layer
|
|
118
|
+
'HIP', 'HOPOPT', 'IPv6_Frag', 'IPv6_Ext', 'IPv6_Opts', 'IPv6_Route', 'MH',
|
|
119
|
+
# IPv6 Extension Header
|
|
120
|
+
|
|
121
|
+
'TCP', 'UDP', 'SCTP', # Transport Layer
|
|
122
|
+
|
|
123
|
+
'FTP', 'FTP_DATA', # Application Layer
|
|
124
|
+
'HTTP', 'HTTPv1', 'HTTPv2', 'NGAP', 'OSPF',
|
|
125
|
+
'RARP', 'DRARP',
|
|
126
|
+
|
|
127
|
+
'Data', # Protocol Data
|
|
128
|
+
'Schema', # Protocol Schema
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
#: version number
|
|
132
|
+
__version__ = '1.5.0'
|
pcapkit/__main__.py
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Command Line Tool
|
|
3
|
+
=======================
|
|
4
|
+
|
|
5
|
+
.. module:: pcapkit.__main__
|
|
6
|
+
|
|
7
|
+
.. important::
|
|
8
|
+
|
|
9
|
+
The |emoji|_ package is optional. Without it, importing this module
|
|
10
|
+
warns :class:`~pcapkit.utilities.warnings.EmojiWarning` and the verbose
|
|
11
|
+
messages print as plain text.
|
|
12
|
+
|
|
13
|
+
:mod:`pcapkit.__main__` was originally the module file of
|
|
14
|
+
|jspcapy|_, which is deprecated and merged with :mod:`pcapkit`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
import argparse
|
|
18
|
+
import sys
|
|
19
|
+
from typing import TYPE_CHECKING
|
|
20
|
+
|
|
21
|
+
from pcapkit import __version__
|
|
22
|
+
from pcapkit.foundation.extraction import Extractor
|
|
23
|
+
from pcapkit.interface import JSON, PLIST, TREE
|
|
24
|
+
from pcapkit.utilities.compat import ModuleNotFoundError # pylint: disable=redefined-builtin
|
|
25
|
+
from pcapkit.utilities.exceptions import stacklevel
|
|
26
|
+
from pcapkit.utilities.warnings import EmojiWarning, warn
|
|
27
|
+
|
|
28
|
+
try:
|
|
29
|
+
import emoji
|
|
30
|
+
except ModuleNotFoundError:
|
|
31
|
+
warn("dependency package 'emoji' not found",
|
|
32
|
+
EmojiWarning, stacklevel=stacklevel())
|
|
33
|
+
|
|
34
|
+
__all__ = ['main']
|
|
35
|
+
|
|
36
|
+
if TYPE_CHECKING:
|
|
37
|
+
from argparse import ArgumentParser
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def get_parser() -> 'ArgumentParser':
|
|
41
|
+
"""CLI argument parser."""
|
|
42
|
+
parser = argparse.ArgumentParser(prog='pcapkit-cli',
|
|
43
|
+
description='PCAP file extractor and formatted dumper')
|
|
44
|
+
parser.add_argument('-V', '--version', action='version', version=__version__)
|
|
45
|
+
parser.add_argument('fin', metavar='input-file-name',
|
|
46
|
+
help=('The name of the input PCAP or PCAP-NG file. With '
|
|
47
|
+
'`--auto-extension`, ".pcap" is appended unless its '
|
|
48
|
+
'extension is already ".pcap", ".cap" or ".pcapng". '
|
|
49
|
+
'Use "-" to read from standard input.'))
|
|
50
|
+
parser.add_argument('-o', '--output', action='store', metavar='file-name', dest='fout',
|
|
51
|
+
help=('The name of the output report file. If it is omitted, '
|
|
52
|
+
'"out" is used. With `--auto-extension`, the extension '
|
|
53
|
+
'of the output format (e.g. ".json") is appended if '
|
|
54
|
+
'absent. With `--files`, the directory each frame\'s '
|
|
55
|
+
'report is written to.'))
|
|
56
|
+
parser.add_argument('-f', '--format', action='store', metavar='format', dest='format',
|
|
57
|
+
help=('The format of the report: "json", "plist" (or "xml"), '
|
|
58
|
+
'"tree" (or "text", "txt") or "pcap" (or "cap"). Takes '
|
|
59
|
+
'precedence over `--json`, `--plist` and `--tree`. With '
|
|
60
|
+
'no format option, "tree" is used.'))
|
|
61
|
+
parser.add_argument('-j', '--json', action='store_true', default=False,
|
|
62
|
+
help=('Write the report as JSON, as `--format json` does. '
|
|
63
|
+
'Ignored if `--format` is given.'))
|
|
64
|
+
parser.add_argument('-p', '--plist', action='store_true', default=False,
|
|
65
|
+
help=('Write the report as a macOS property list, as '
|
|
66
|
+
'`--format plist` does. Ignored if `--format` or '
|
|
67
|
+
'`--json` is given.'))
|
|
68
|
+
parser.add_argument('-t', '--tree', action='store_true', default=False,
|
|
69
|
+
help=('Write the report as tree view text, as `--format tree` '
|
|
70
|
+
'does; this is the default. Ignored if `--format`, '
|
|
71
|
+
'`--json` or `--plist` is given.'))
|
|
72
|
+
parser.add_argument('-a', '--auto-extension', action='store_true', default=False,
|
|
73
|
+
help=('Append missing file extensions: ".pcap" to the input '
|
|
74
|
+
'file name, and the extension of the output format '
|
|
75
|
+
'(e.g. ".json") to the output file name unless `--files` '
|
|
76
|
+
'is set.'))
|
|
77
|
+
parser.add_argument('-v', '--verbose', action='store_true', default=False,
|
|
78
|
+
help=('Print the input name, the protocol chain of each '
|
|
79
|
+
'frame, and where the report is stored.'))
|
|
80
|
+
parser.add_argument('-F', '--files', action='store_true', default=False,
|
|
81
|
+
help=('Write a report file per frame, in the directory named '
|
|
82
|
+
'by `--output`.'))
|
|
83
|
+
parser.add_argument('-E', '--engine', action='store', dest='engine', default='default', metavar='PKG',
|
|
84
|
+
help=('The extraction engine, case-insensitive: "default" (or '
|
|
85
|
+
'"pcapkit"), or a third-party one such as "dpkt" or '
|
|
86
|
+
'"scapy", which needs its package installed. An unknown '
|
|
87
|
+
'or unavailable engine falls back to "default".'))
|
|
88
|
+
parser.add_argument('-P', '--protocol', action='store', dest='protocol', default=None, metavar='PROTOCOL',
|
|
89
|
+
help=('Stop dissecting each frame after this protocol, e.g. '
|
|
90
|
+
'"IPv4" (case-insensitive); the rest of the frame is '
|
|
91
|
+
'kept as raw data. Third-party engines ignore it.'))
|
|
92
|
+
# NOTE: ``choices`` rather than a free-form string, because the layer names
|
|
93
|
+
# are a closed set (``pcapkit.foundation.extraction.Layers``) and a name
|
|
94
|
+
# outside it is not rejected anywhere downstream -- it simply never matches a
|
|
95
|
+
# protocol's ``__layer__`` and the parse silently runs to the top of the
|
|
96
|
+
# stack, which is the failure mode GH-356 was about. ``type=str.lower`` keeps
|
|
97
|
+
# ``-L Internet`` accepted, matching ``Extractor.__init__``, which lowercases
|
|
98
|
+
# the value anyway.
|
|
99
|
+
#
|
|
100
|
+
# The defaults are :data:`None` and not the ``'None'``/``'null'`` strings:
|
|
101
|
+
# ``Extractor.__init__`` substitutes its own sentinels for an
|
|
102
|
+
# omitted value, so passing the strings would only work because it happens to
|
|
103
|
+
# lowercase ``'None'`` into the sentinel it wants.
|
|
104
|
+
parser.add_argument('-L', '--layer', action='store', dest='layer', default=None, metavar='LAYER',
|
|
105
|
+
type=str.lower, choices=['link', 'internet', 'transport', 'application', 'none'],
|
|
106
|
+
help=('Stop dissecting each frame after its protocol in this '
|
|
107
|
+
'layer: "link", "internet", "transport" or "application" '
|
|
108
|
+
'(case-insensitive); "none", the default, sets no limit. '
|
|
109
|
+
'Third-party engines ignore it.'))
|
|
110
|
+
parser.add_argument('-B', '--buffer-save', action='store_true', default=False,
|
|
111
|
+
help=('Save a copy of the input to a file as it is read. Only '
|
|
112
|
+
'an input that is not seekable, such as a pipe on '
|
|
113
|
+
'standard input, is saved.'))
|
|
114
|
+
parser.add_argument('-O', '--buffer-path', action='store', metavar='file-name', dest='buffer_path',
|
|
115
|
+
help=('The name of the file `--buffer-save` writes. If it is '
|
|
116
|
+
'omitted, a temporary file is used and then deleted.'))
|
|
117
|
+
return parser
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def main() -> 'int':
|
|
121
|
+
"""Entrypoint."""
|
|
122
|
+
parser = get_parser()
|
|
123
|
+
args = parser.parse_args()
|
|
124
|
+
|
|
125
|
+
if args.format:
|
|
126
|
+
fmt = args.format
|
|
127
|
+
elif args.json:
|
|
128
|
+
fmt = JSON
|
|
129
|
+
elif args.plist:
|
|
130
|
+
fmt = PLIST
|
|
131
|
+
elif args.tree:
|
|
132
|
+
fmt = TREE
|
|
133
|
+
else:
|
|
134
|
+
fmt = None
|
|
135
|
+
|
|
136
|
+
no_eof = args.fin == '-'
|
|
137
|
+
if args.fin == '-':
|
|
138
|
+
args.fin = sys.stdin.buffer
|
|
139
|
+
|
|
140
|
+
extractor = Extractor(store=False, auto=not args.verbose,
|
|
141
|
+
fin=args.fin, fout=args.fout,
|
|
142
|
+
files=args.files, format=fmt,
|
|
143
|
+
layer=args.layer, protocol=args.protocol,
|
|
144
|
+
engine=args.engine, extension=args.auto_extension,
|
|
145
|
+
verbose=args.verbose, buffer_save=args.buffer_save,
|
|
146
|
+
no_eof=no_eof, buffer_path=args.buffer_path) # type: ignore[var-annotated]
|
|
147
|
+
|
|
148
|
+
if args.verbose:
|
|
149
|
+
try:
|
|
150
|
+
print(emoji.emojize(f":police_car_light: Loading file {extractor.input!r}"))
|
|
151
|
+
except (UnicodeEncodeError, NameError): # may trigger if emoji not installed
|
|
152
|
+
print(f"[*] Loading file {extractor.input!r}")
|
|
153
|
+
|
|
154
|
+
for _ in extractor:
|
|
155
|
+
pass
|
|
156
|
+
|
|
157
|
+
try:
|
|
158
|
+
print(emoji.emojize(f":beer_mug: Report file{'s' if args.files else ''} stored in {extractor.output!r}"))
|
|
159
|
+
except (UnicodeEncodeError, NameError): # may trigger if emoji not installed
|
|
160
|
+
print(f"[*] Report file{'s' if args.files else ''} stored in {extractor.output!r}")
|
|
161
|
+
|
|
162
|
+
return 0
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if __name__ == '__main__':
|
|
166
|
+
sys.exit(main())
|
pcapkit/all.py
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# pylint: disable=unused-import,unused-wildcard-import,wildcard-import
|
|
3
|
+
"""Library Index
|
|
4
|
+
===================
|
|
5
|
+
|
|
6
|
+
.. module:: pcapkit.all
|
|
7
|
+
|
|
8
|
+
:mod:`pcapkit` has defined various and numerous functions
|
|
9
|
+
and classes, which have different features and purposes.
|
|
10
|
+
To make a simple index for this library, :mod:`pcapkit.all`
|
|
11
|
+
contains all things from :mod:`pcapkit`.
|
|
12
|
+
|
|
13
|
+
"""
|
|
14
|
+
from pcapkit import const
|
|
15
|
+
from pcapkit.corekit import *
|
|
16
|
+
from pcapkit.dumpkit import *
|
|
17
|
+
from pcapkit.foundation import *
|
|
18
|
+
from pcapkit.interface import *
|
|
19
|
+
from pcapkit.protocols import *
|
|
20
|
+
from pcapkit.toolkit import *
|
|
21
|
+
from pcapkit.utilities import * # pylint: disable=redefined-builtin
|
|
22
|
+
|
|
23
|
+
#from pcapkit import vendor
|
|
24
|
+
|
|
25
|
+
# tools for Scapy engine
|
|
26
|
+
from pcapkit.toolkit.scapy import packet2chain as scapy_packet2chain # isort: skip
|
|
27
|
+
from pcapkit.toolkit.scapy import packet2dict as scapy_packet2dict # isort: skip
|
|
28
|
+
from pcapkit.toolkit.scapy import ipv4_reassembly as scapy_ipv4_reassembly # isort: skip
|
|
29
|
+
from pcapkit.toolkit.scapy import ipv6_reassembly as scapy_ipv6_reassembly # isort: skip
|
|
30
|
+
from pcapkit.toolkit.scapy import tcp_reassembly as scapy_tcp_reassembly # isort: skip
|
|
31
|
+
from pcapkit.toolkit.scapy import tcp_traceflow as scapy_tcp_traceflow # isort: skip
|
|
32
|
+
|
|
33
|
+
# tools for DPKT engine
|
|
34
|
+
from pcapkit.toolkit.dpkt import ipv6_hdr_len as dpkt_ipv6_hdr_len # isort: skip
|
|
35
|
+
from pcapkit.toolkit.dpkt import packet2chain as dpkt_packet2chain # isort: skip
|
|
36
|
+
from pcapkit.toolkit.dpkt import packet2dict as dpkt_packet2dict # isort: skip
|
|
37
|
+
from pcapkit.toolkit.dpkt import ipv4_reassembly as dpkt_ipv4_reassembly # isort: skip
|
|
38
|
+
from pcapkit.toolkit.dpkt import ipv6_reassembly as dpkt_ipv6_reassembly # isort: skip
|
|
39
|
+
from pcapkit.toolkit.dpkt import tcp_reassembly as dpkt_tcp_reassembly # isort: skip
|
|
40
|
+
from pcapkit.toolkit.dpkt import tcp_traceflow as dpkt_tcp_traceflow # isort: skip
|
|
41
|
+
|
|
42
|
+
# tools for PyShark engine
|
|
43
|
+
from pcapkit.toolkit.pyshark import packet2dict as pyshark_packet2dict # isort: skip
|
|
44
|
+
from pcapkit.toolkit.pyshark import tcp_traceflow as pyshark_tcp_traceflow # isort: skip
|
|
45
|
+
|
|
46
|
+
__all__ = [
|
|
47
|
+
# pcapkit.const
|
|
48
|
+
'const',
|
|
49
|
+
|
|
50
|
+
# # pcapkit.vendor
|
|
51
|
+
# 'vendor',
|
|
52
|
+
|
|
53
|
+
# pcapkit.corekit
|
|
54
|
+
'EnumRegistry', # Enum Registry
|
|
55
|
+
'Info', 'info_final', # Info Class
|
|
56
|
+
'MultiInfo', 'OrderedMultiInfo',
|
|
57
|
+
'ProtoChain', # ProtoChain
|
|
58
|
+
'VersionInfo', # Version
|
|
59
|
+
'NumberField', 'Int32Field', 'UInt32Field', # numeric protocol fields
|
|
60
|
+
'Int16Field', 'UInt16Field', 'Int64Field', 'UInt64Field',
|
|
61
|
+
'Int8Field', 'UInt8Field', 'EnumField', 'PortEnumField',
|
|
62
|
+
'BytesField', 'StringField', 'BitField', # text protocol fields
|
|
63
|
+
'PaddingField',
|
|
64
|
+
'ConditionalField', 'PayloadField', 'SchemaField', # misc protocol fields
|
|
65
|
+
'SwitchField', 'ForwardMatchField', 'NoValueField',
|
|
66
|
+
'IPv4AddressField', 'IPv6AddressField', # IP address protocol fields
|
|
67
|
+
'IPv4InterfaceField', 'IPv6InterfaceField',
|
|
68
|
+
'ListField', 'OptionField', # container protocol fields
|
|
69
|
+
'SeekableReader', # Seekable Reader
|
|
70
|
+
'MultiDict', 'OrderedMultiDict', # Multi Dict
|
|
71
|
+
'ModuleDescriptor', # Module Descriptor
|
|
72
|
+
|
|
73
|
+
# pcapkit.dumpkit
|
|
74
|
+
'PCAPIO', # PCAP Dumper
|
|
75
|
+
'NotImplementedIO', # Simulated I/O
|
|
76
|
+
|
|
77
|
+
# pcapkit.foundation
|
|
78
|
+
'Extractor', # Extraction
|
|
79
|
+
'TraceFlowManager', 'TCP_TraceFlow', # Trace Flow
|
|
80
|
+
|
|
81
|
+
# pcapkit.foundation.reassembly
|
|
82
|
+
'ReassemblyManager', # Reassembly Manager
|
|
83
|
+
'IPv4_Reassembly', 'IPv6_Reassembly', # IP Reassembly
|
|
84
|
+
'TCP_Reassembly', # TCP Reassembly
|
|
85
|
+
|
|
86
|
+
# pcapkit.foundation.registry
|
|
87
|
+
'register_protocol',
|
|
88
|
+
'register_protocol_code',
|
|
89
|
+
'register_linktype',
|
|
90
|
+
'register_pcap', 'register_pcapng',
|
|
91
|
+
'register_ethertype',
|
|
92
|
+
'register_transtype',
|
|
93
|
+
'register_ipv4_option', 'register_hip_parameter', 'register_hopopt_option',
|
|
94
|
+
'register_ipv6_opts_option', 'register_ipv6_route_routing',
|
|
95
|
+
'register_mh_message', 'register_mh_option', 'register_mh_extension',
|
|
96
|
+
'register_apptype',
|
|
97
|
+
'register_tcp', 'register_udp', 'register_sctp',
|
|
98
|
+
'register_tcp_option', 'register_tcp_mp_option',
|
|
99
|
+
'register_http_frame',
|
|
100
|
+
'register_pcapng_block', 'register_pcapng_option', 'register_pcapng_secrets',
|
|
101
|
+
'register_pcapng_record',
|
|
102
|
+
'register_extractor_engine',
|
|
103
|
+
'register_dumper',
|
|
104
|
+
'register_extractor_dumper', 'register_traceflow_dumper',
|
|
105
|
+
'register_extractor_reassembly', 'register_extractor_traceflow',
|
|
106
|
+
'register_reassembly_ipv4_callback', 'register_reassembly_ipv6_callback',
|
|
107
|
+
'register_reassembly_tcp_callback', 'register_traceflow_tcp_callback',
|
|
108
|
+
|
|
109
|
+
# pcapkit.interface
|
|
110
|
+
'extract', 'reassemble', 'trace', # Interface Functions
|
|
111
|
+
'TREE', 'JSON', 'PLIST', 'PCAP', # Format Macros
|
|
112
|
+
'LINK', 'INET', 'TRANS', 'APP', 'RAW', # Layer Macros
|
|
113
|
+
'DPKT', 'Scapy', 'PyShark', 'PCAPKit', # Engine Macros
|
|
114
|
+
'PyPCAP', 'PCAP_CT', 'PyPCAPFile', # Engine Macros
|
|
115
|
+
|
|
116
|
+
# pcapkit.protocols
|
|
117
|
+
'LINKTYPE', 'ETHERTYPE', 'TRANSTYPE', 'APPTYPE', # Protocol Numbers
|
|
118
|
+
'Header', 'Frame', # PCAP Headers
|
|
119
|
+
'PCAPNG', # PCAPNG Format
|
|
120
|
+
'NoPayload', # No Payload
|
|
121
|
+
'Raw', # Raw Packet
|
|
122
|
+
'ARP', 'C_Tag', 'Ethernet', 'InARP', 'L2TP', 'L2TPv2',
|
|
123
|
+
'Loopback', 'S_Tag', 'VLAN', # Link Layer
|
|
124
|
+
'AH', 'ESP', 'IP', 'IPsec', 'IPv4', 'IPv6', 'IPX', # Internet Layer
|
|
125
|
+
'HIP', 'HOPOPT', 'IPv6_Ext', 'IPv6_Frag', 'IPv6_Opts', 'IPv6_Route', 'MH',
|
|
126
|
+
# IPv6 Extension Header
|
|
127
|
+
'TCP', 'UDP', 'SCTP', # Transport Layer
|
|
128
|
+
'FTP', 'FTP_DATA', # Application Layer
|
|
129
|
+
'HTTP', 'HTTPv1', 'HTTPv2', 'NGAP', 'OSPF', 'RARP', 'DRARP',
|
|
130
|
+
'Schema', 'schema', # Protocol Schema
|
|
131
|
+
'Data', 'data', # Protocol Data
|
|
132
|
+
|
|
133
|
+
# pcapkit.toolkit
|
|
134
|
+
'ipv4_reassembly', 'ipv6_reassembly', 'tcp_reassembly', 'tcp_traceflow',
|
|
135
|
+
'pcapng_ipv4_reassembly', 'pcapng_ipv6_reassembly', 'pcapng_tcp_reassembly', 'pcapng_tcp_traceflow',
|
|
136
|
+
'pcapng_block2frame', # default engine
|
|
137
|
+
'dpkt_ipv6_hdr_len', 'dpkt_packet2chain', 'dpkt_packet2dict',
|
|
138
|
+
'dpkt_ipv4_reassembly', 'dpkt_ipv6_reassembly', 'dpkt_tcp_reassembly', 'dpkt_tcp_traceflow',
|
|
139
|
+
# DPKT engine
|
|
140
|
+
'pyshark_packet2dict', 'pyshark_tcp_traceflow', # PyShark engine
|
|
141
|
+
'scapy_packet2chain', 'scapy_packet2dict',
|
|
142
|
+
'scapy_ipv4_reassembly', 'scapy_ipv6_reassembly', 'scapy_tcp_reassembly', 'scapy_tcp_traceflow',
|
|
143
|
+
# Scapy engine
|
|
144
|
+
|
|
145
|
+
# pcapkit.utilities -- unlisted: its names stay reachable as attributes, but
|
|
146
|
+
# ``import *`` leaves out generic helpers such as ``warn``, ``reset``,
|
|
147
|
+
# ``configure`` and ``detect``
|
|
148
|
+
]
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# pylint: disable=unused-import, unused-wildcard-import
|
|
3
|
+
"""Constant Enumerations
|
|
4
|
+
===========================
|
|
5
|
+
|
|
6
|
+
This module contains all constant enumerations of :mod:`pcapkit`, which are
|
|
7
|
+
automatically generated from the :mod:`pcapkit.vendor` module.
|
|
8
|
+
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
# IANA registration
|
|
12
|
+
from pcapkit.const.reg import *
|
|
13
|
+
|
|
14
|
+
# Miscellaneous
|
|
15
|
+
from pcapkit.const.pcapng import *
|
|
16
|
+
|
|
17
|
+
# per protocol
|
|
18
|
+
from pcapkit.const.arp import *
|
|
19
|
+
from pcapkit.const.esp import *
|
|
20
|
+
from pcapkit.const.ftp import *
|
|
21
|
+
from pcapkit.const.hip import *
|
|
22
|
+
from pcapkit.const.http import *
|
|
23
|
+
from pcapkit.const.ipv4 import *
|
|
24
|
+
from pcapkit.const.ipv6 import *
|
|
25
|
+
from pcapkit.const.ipx import *
|
|
26
|
+
from pcapkit.const.l2tp import *
|
|
27
|
+
from pcapkit.const.mh import *
|
|
28
|
+
from pcapkit.const.ngap import *
|
|
29
|
+
from pcapkit.const.ospf import *
|
|
30
|
+
from pcapkit.const.sctp import *
|
|
31
|
+
from pcapkit.const.tcp import *
|
|
32
|
+
from pcapkit.const.vlan import *
|
|
33
|
+
|
|
34
|
+
__all__ = [
|
|
35
|
+
# Protocol Registration
|
|
36
|
+
'ETHERTYPE', 'LINKTYPE', 'TRANSTYPE', 'APPTYPE',
|
|
37
|
+
# ARP
|
|
38
|
+
'ARP_Hardware', 'ARP_Operation',
|
|
39
|
+
# ESP
|
|
40
|
+
'ESP_Cipher', 'ESP_Integrity',
|
|
41
|
+
# FTP
|
|
42
|
+
'FTP_Command', 'FTP_ReturnCode',
|
|
43
|
+
# HIP
|
|
44
|
+
'HIP_Certificate', 'HIP_Cipher', 'HIP_DITypes', 'HIP_ECDSACurve', 'HIP_ECDSALowCurve',
|
|
45
|
+
'HIP_ESPTransformSuite', 'HIP_Group', 'HIP_HIAlgorithm', 'HIP_HITSuite', 'HIP_NATTraversal',
|
|
46
|
+
'HIP_NotifyMessage', 'HIP_Packet', 'HIP_Parameter', 'HIP_Registration', 'HIP_RegistrationFailure',
|
|
47
|
+
'HIP_Suite', 'HIP_Transport', 'HIP_EdDSACurve',
|
|
48
|
+
# HTTP
|
|
49
|
+
'HTTP_ErrorCode', 'HTTP_Frame', 'HTTP_Method', 'HTTP_Setting', 'HTTP_Status',
|
|
50
|
+
# IPv4
|
|
51
|
+
'IPv4_ClassificationLevel', 'IPv4_OptionClass', 'IPv4_OptionNumber', 'IPv4_ProtectionAuthority',
|
|
52
|
+
'IPv4_QSFunction', 'IPv4_RouterAlert', 'IPv4_ToSDelay', 'IPv4_ToSECN', 'IPv4_ToSPrecedence',
|
|
53
|
+
'IPv4_ToSReliability', 'IPv4_ToSThroughput', 'IPv4_TSFlag',
|
|
54
|
+
# IPv6
|
|
55
|
+
'IPv6_ExtensionHeader', 'IPv6_Option', 'IPv6_QSFunction', 'IPv6_RouterAlert', 'IPv6_Routing',
|
|
56
|
+
'IPv6_SeedID', 'IPv6_SMFDPDMode', 'IPv6_TaggerID', 'IPv6_OptionAction',
|
|
57
|
+
# IPX
|
|
58
|
+
'IPX_Packet', 'IPX_Socket',
|
|
59
|
+
# L2TP
|
|
60
|
+
'L2TP_Type',
|
|
61
|
+
# MH
|
|
62
|
+
'MH_Packet', 'MH_Option', 'MH_DNSStatusCode', 'MH_ACKStatusCode',
|
|
63
|
+
'MH_MNIDSubtype', 'MH_StatusCode', 'MH_EnumeratingAlgorithm',
|
|
64
|
+
'MH_AuthSubtype', 'MH_HandoffType', 'MH_AccessType',
|
|
65
|
+
'MH_BindingUpdateFlag', 'MH_BindingACKFlag', 'MH_DSMIPv6HomeAddress',
|
|
66
|
+
'MH_BindingRevocation', 'MH_RevocationTrigger', 'MH_RevocationStatusCode',
|
|
67
|
+
'MH_HomeAddressReply', 'MH_DHCPSupportMode', 'MH_HandoverInitiateFlag',
|
|
68
|
+
'MH_HandoverACKFlag', 'MH_HandoverInitiateStatus', 'MH_HandoverACKStatus',
|
|
69
|
+
'MH_FlowIDStatus', 'MH_FlowIDSuboption', 'MH_TrafficSelector',
|
|
70
|
+
'MH_MNGroupID', 'MH_DSMIP6TLSPacket', 'MH_ANISuboption', 'MH_OperatorID',
|
|
71
|
+
'MH_UpdateNotificationReason', 'MH_UpdateNotificationACKStatus',
|
|
72
|
+
'MH_FlowBindingType', 'MH_FlowBindingIndicationTrigger',
|
|
73
|
+
'MH_FlowBindingACKStatus', 'MH_FlowBindingAction', 'MH_QoSAttribute',
|
|
74
|
+
'MH_LMAControlledMAGSuboption', 'MH_LLACode', 'MH_CGAType',
|
|
75
|
+
'MH_CGAExtension', 'MH_CGASec', 'MH_BindingError',
|
|
76
|
+
# NGAP
|
|
77
|
+
'NGAP_ProcedureCode', 'NGAP_ProtocolIE',
|
|
78
|
+
# OSPF
|
|
79
|
+
'OSPF_Authentication', 'OSPF_Packet',
|
|
80
|
+
# SCTP
|
|
81
|
+
'SCTP_Chunk', 'SCTP_Parameter', 'SCTP_CauseCode', 'SCTP_PayloadProtocolIdentifier',
|
|
82
|
+
# TCP
|
|
83
|
+
'TCP_Checksum', 'TCP_Option', 'TCP_MPTCPOption', 'TCP_Flags',
|
|
84
|
+
# VLAN
|
|
85
|
+
'VLAN_PriorityLevel',
|
|
86
|
+
# PCAPNG
|
|
87
|
+
'PCAPNG_BlockType', 'PCAPNG_OptionType', 'PCAPNG_HashAlgorithm',
|
|
88
|
+
'PCAPNG_VerdictType', 'PCAPNG_RecordType', 'PCAPNG_SecretsType',
|
|
89
|
+
'PCAPNG_FilterType', 'PCAPNG_TLSKeyLabel',
|
|
90
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# pylint: disable=unused-import
|
|
3
|
+
""":class:`~pcapkit.protocols.link.arp.ARP` Constant Enumerations
|
|
4
|
+
=====================================================================
|
|
5
|
+
|
|
6
|
+
This module contains all constant enumerations of :class:`~pcapkit.protocols.link.arp.ARP`
|
|
7
|
+
and :class:`~pcapkit.protocols.application.rarp.RARP` implementations. Available
|
|
8
|
+
enumerations include:
|
|
9
|
+
|
|
10
|
+
.. list-table::
|
|
11
|
+
|
|
12
|
+
* - :class:`ARP_Hardware <pcapkit.const.arp.hardware.Hardware>`
|
|
13
|
+
- ARP Hardware Types [*]_
|
|
14
|
+
* - :class:`ARP_Operation <pcapkit.const.arp.operation.Operation>`
|
|
15
|
+
- Operation Codes [*]_
|
|
16
|
+
|
|
17
|
+
.. [*] https://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml#arp-parameters-2
|
|
18
|
+
.. [*] https://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml#arp-parameters-1
|
|
19
|
+
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from pcapkit.const.arp.hardware import Hardware as ARP_Hardware
|
|
23
|
+
from pcapkit.const.arp.operation import Operation as ARP_Operation
|
|
24
|
+
|
|
25
|
+
__all__ = ['ARP_Hardware', 'ARP_Operation']
|