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,365 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""User Defined Exceptions
|
3
|
+
=============================
|
4
|
+
|
5
|
+
.. module:: pcapkit.utilities.exceptions
|
6
|
+
|
7
|
+
:mod:`pcapkit.exceptions` refined built-in exceptions.
|
8
|
+
Make it possible to show only user error stack infomation [*]_,
|
9
|
+
when exception raised on user's operation.
|
10
|
+
|
11
|
+
.. [*] See |tbtrim|_ project for Pythonic implementation.
|
12
|
+
|
13
|
+
.. |tbtrim| replace:: ``tbtrim``
|
14
|
+
.. _tbtrim: https://github.com/gousaiyang/tbtrim
|
15
|
+
|
16
|
+
"""
|
17
|
+
import io
|
18
|
+
import os
|
19
|
+
import struct
|
20
|
+
import sys
|
21
|
+
import traceback
|
22
|
+
from typing import TYPE_CHECKING
|
23
|
+
|
24
|
+
from pcapkit.utilities.compat import ModuleNotFoundError # pylint: disable=redefined-builtin
|
25
|
+
from pcapkit.utilities.logging import DEVMODE, VERBOSE, logger
|
26
|
+
|
27
|
+
if TYPE_CHECKING:
|
28
|
+
from typing import Any
|
29
|
+
|
30
|
+
__all__ = [
|
31
|
+
'stacklevel',
|
32
|
+
|
33
|
+
'BaseError', # Exception
|
34
|
+
'DigitError', 'IntError', 'RealError', 'ComplexError', # TypeError
|
35
|
+
'BoolError', 'BytesError', 'StringError', 'BytearrayError', # TypeError
|
36
|
+
'DictError', 'ListError', 'TupleError', 'IterableError', # TypeError
|
37
|
+
'IOObjError', 'ProtocolUnbound', 'CallableError', # TypeError
|
38
|
+
'InfoError', 'IPError', 'EnumError', 'ComparisonError', # TypeError
|
39
|
+
'RegistryError', 'FieldError', # TypeError
|
40
|
+
'FormatError', 'UnsupportedCall', # AttributeError
|
41
|
+
'FileError', 'UnsupportedOperation', # IOError
|
42
|
+
'FileExists', # FileExistsError
|
43
|
+
'FileNotFound', # FileNotFoundError
|
44
|
+
'ProtocolNotFound', # IndexError
|
45
|
+
'VersionError', 'IndexNotFound', 'ProtocolError', # ValueError
|
46
|
+
'EndianError', 'KeyExists', 'NoDefaultValue', # ValueError
|
47
|
+
'FieldValueError', 'SchemaError', 'SeekError', 'TruncateError', # ValueError
|
48
|
+
'ProtocolNotImplemented', 'VendorNotImplemented', # NotImplementedError
|
49
|
+
'StructError', # struct.error
|
50
|
+
'MissingKeyError', 'FragmentError', 'PacketError', # KeyError
|
51
|
+
'ModuleNotFound', # ModuleNotFoundError
|
52
|
+
]
|
53
|
+
|
54
|
+
|
55
|
+
def stacklevel() -> 'int':
|
56
|
+
"""Fetch current stack level.
|
57
|
+
|
58
|
+
The function will walk through the straceback stack (:func:`traceback.extract_stack`),
|
59
|
+
and fetch the stack level where the path contains ``/pcapkit/``. So that it won't
|
60
|
+
display any disturbing internal traceback information when raising errors.
|
61
|
+
|
62
|
+
Returns:
|
63
|
+
Stack level until internal stacks, i.e. contains ``/pcapkit/``.
|
64
|
+
|
65
|
+
"""
|
66
|
+
pcapkit = f'{os.path.sep}pcapkit{os.path.sep}'
|
67
|
+
tb = traceback.extract_stack()
|
68
|
+
for index, tbitem in enumerate(tb):
|
69
|
+
if pcapkit in tbitem[0]:
|
70
|
+
break
|
71
|
+
else:
|
72
|
+
index = len(tb)
|
73
|
+
return index-1
|
74
|
+
|
75
|
+
|
76
|
+
##############################################################################
|
77
|
+
# BaseError (abc of exceptions) session.
|
78
|
+
##############################################################################
|
79
|
+
|
80
|
+
|
81
|
+
class BaseError(Exception):
|
82
|
+
"""Base error class of all kinds.
|
83
|
+
|
84
|
+
Important:
|
85
|
+
|
86
|
+
* Turn off system-default traceback function by set :data:`sys.tracebacklimit` to ``0``.
|
87
|
+
* But bugs appear in Python 3.6, so we have to set :data:`sys.tracebacklimit` to ``None``.
|
88
|
+
|
89
|
+
.. note::
|
90
|
+
|
91
|
+
This note is deprecated since Python fixed the problem above.
|
92
|
+
|
93
|
+
* In Python 2.7, :func:`trace.print_stack(limit)` dose not support negative limit.
|
94
|
+
|
95
|
+
See Also:
|
96
|
+
:func:`pcapkit.utilities.exceptions.stacklevel`
|
97
|
+
|
98
|
+
"""
|
99
|
+
|
100
|
+
def __init__(self, *args: 'Any', quiet: 'bool' = False, **kwargs: 'Any') -> 'None':
|
101
|
+
# log error
|
102
|
+
if not quiet:
|
103
|
+
if DEVMODE:
|
104
|
+
logger.critical('%s: %s', type(self).__name__, str(self),
|
105
|
+
exc_info=self if VERBOSE else False,
|
106
|
+
stack_info=VERBOSE, stacklevel=-stacklevel())
|
107
|
+
else:
|
108
|
+
logger.critical("%s: %s", type(self).__name__, str(self))
|
109
|
+
|
110
|
+
# logger.error('%s: %s', type(self).__name__, str(self), exc_info=self,
|
111
|
+
# stack_info=True, stacklevel=-stacklevel())
|
112
|
+
else:
|
113
|
+
logger.error('%s: %s', type(self).__name__, str(self))
|
114
|
+
|
115
|
+
if not DEVMODE:
|
116
|
+
sys.tracebacklimit = 0
|
117
|
+
super().__init__(*args, **kwargs)
|
118
|
+
|
119
|
+
|
120
|
+
##############################################################################
|
121
|
+
# TypeError session.
|
122
|
+
##############################################################################
|
123
|
+
|
124
|
+
|
125
|
+
class DigitError(BaseError, TypeError):
|
126
|
+
"""The argument(s) must be (a) number(s)."""
|
127
|
+
|
128
|
+
|
129
|
+
class IntError(BaseError, TypeError):
|
130
|
+
"""The argument(s) must be integral."""
|
131
|
+
|
132
|
+
|
133
|
+
class RealError(BaseError, TypeError):
|
134
|
+
"""The function is not defined for real number."""
|
135
|
+
|
136
|
+
|
137
|
+
class ComplexError(BaseError, TypeError):
|
138
|
+
"""The function is not defined for complex instance."""
|
139
|
+
|
140
|
+
|
141
|
+
class BytesError(BaseError, TypeError):
|
142
|
+
"""The argument(s) must be :obj:`bytes` type."""
|
143
|
+
|
144
|
+
|
145
|
+
class BytearrayError(BaseError, TypeError):
|
146
|
+
"""The argument(s) must be :obj:`bytearray` type."""
|
147
|
+
|
148
|
+
|
149
|
+
class BoolError(BaseError, TypeError):
|
150
|
+
"""The argument(s) must be :obj:`bool` type."""
|
151
|
+
|
152
|
+
|
153
|
+
class StringError(BaseError, TypeError):
|
154
|
+
"""The argument(s) must be :obj:`str` type."""
|
155
|
+
|
156
|
+
|
157
|
+
class DictError(BaseError, TypeError):
|
158
|
+
"""The argument(s) must be :obj:`dict` type."""
|
159
|
+
|
160
|
+
|
161
|
+
class ListError(BaseError, TypeError):
|
162
|
+
"""The argument(s) must be :obj:`list` type."""
|
163
|
+
|
164
|
+
|
165
|
+
class TupleError(BaseError, TypeError):
|
166
|
+
"""The argument(s) must be :obj:`tuple` type."""
|
167
|
+
|
168
|
+
|
169
|
+
class IterableError(BaseError, TypeError):
|
170
|
+
"""The argument(s) must be *iterable*."""
|
171
|
+
|
172
|
+
|
173
|
+
class CallableError(BaseError, TypeError):
|
174
|
+
"""The argument(s) must be *callable*."""
|
175
|
+
|
176
|
+
|
177
|
+
class ProtocolUnbound(BaseError, TypeError):
|
178
|
+
"""Protocol slice unbound."""
|
179
|
+
|
180
|
+
|
181
|
+
class IOObjError(BaseError, TypeError):
|
182
|
+
"""The argument(s) must be *file-like object*."""
|
183
|
+
|
184
|
+
|
185
|
+
class InfoError(BaseError, TypeError):
|
186
|
+
"""The argument(s) must be :class:`~pcapkit.corekit.infoclass.Info` instance."""
|
187
|
+
|
188
|
+
|
189
|
+
class IPError(BaseError, TypeError):
|
190
|
+
"""The argument(s) must be *IP address*."""
|
191
|
+
|
192
|
+
|
193
|
+
class EnumError(BaseError, TypeError):
|
194
|
+
"""The argument(s) must be *enumeration protocol* type."""
|
195
|
+
|
196
|
+
|
197
|
+
class ComparisonError(BaseError, TypeError):
|
198
|
+
"""Rich comparison not supported between instances."""
|
199
|
+
|
200
|
+
|
201
|
+
class RegistryError(BaseError, TypeError):
|
202
|
+
"""The argument(s) must be *registry* type."""
|
203
|
+
|
204
|
+
|
205
|
+
class FieldError(BaseError, TypeError):
|
206
|
+
"""The argument(s) must be *field* type."""
|
207
|
+
|
208
|
+
|
209
|
+
##############################################################################
|
210
|
+
# AttributeError session.
|
211
|
+
##############################################################################
|
212
|
+
|
213
|
+
|
214
|
+
class FormatError(BaseError, AttributeError):
|
215
|
+
"""Unknown format(s)."""
|
216
|
+
|
217
|
+
|
218
|
+
class UnsupportedCall(BaseError, AttributeError):
|
219
|
+
"""Unsupported function or property call."""
|
220
|
+
|
221
|
+
|
222
|
+
##############################################################################
|
223
|
+
# IOError session.
|
224
|
+
##############################################################################
|
225
|
+
|
226
|
+
|
227
|
+
class FileError(BaseError, IOError):
|
228
|
+
"""[Errno 5] Wrong file format."""
|
229
|
+
# args: errno, strerror, filename, winerror, filename2
|
230
|
+
|
231
|
+
|
232
|
+
##############################################################################
|
233
|
+
# FileExistsError session.
|
234
|
+
##############################################################################
|
235
|
+
|
236
|
+
|
237
|
+
class FileExists(BaseError, FileExistsError):
|
238
|
+
"""[Errno 17] File already exists."""
|
239
|
+
# args: errno, strerror, filename, winerror, filename2
|
240
|
+
|
241
|
+
|
242
|
+
##############################################################################
|
243
|
+
# FileNotFoundError session.
|
244
|
+
##############################################################################
|
245
|
+
|
246
|
+
|
247
|
+
class FileNotFound(BaseError, FileNotFoundError):
|
248
|
+
"""[Errno 2] File not found."""
|
249
|
+
# args: errno, strerror, filename, winerror, filename2
|
250
|
+
|
251
|
+
|
252
|
+
##############################################################################
|
253
|
+
# IndexError session.
|
254
|
+
##############################################################################
|
255
|
+
|
256
|
+
|
257
|
+
class ProtocolNotFound(BaseError, IndexError):
|
258
|
+
"""Protocol not found in ProtoChain."""
|
259
|
+
|
260
|
+
|
261
|
+
##############################################################################
|
262
|
+
# ValueError session.
|
263
|
+
##############################################################################
|
264
|
+
|
265
|
+
|
266
|
+
class VersionError(BaseError, ValueError):
|
267
|
+
"""Unknown IP version."""
|
268
|
+
|
269
|
+
|
270
|
+
class IndexNotFound(BaseError, ValueError):
|
271
|
+
"""Protocol not in ProtoChain."""
|
272
|
+
|
273
|
+
|
274
|
+
class ProtocolError(BaseError, ValueError):
|
275
|
+
"""Invalid protocol format."""
|
276
|
+
|
277
|
+
|
278
|
+
class EndianError(BaseError, ValueError):
|
279
|
+
"""Invalid endian (byte order)."""
|
280
|
+
|
281
|
+
|
282
|
+
class KeyExists(BaseError, ValueError):
|
283
|
+
"""Key already exists."""
|
284
|
+
|
285
|
+
|
286
|
+
class NoDefaultValue(BaseError, ValueError):
|
287
|
+
"""No default value."""
|
288
|
+
|
289
|
+
|
290
|
+
class FieldValueError(BaseError, ValueError):
|
291
|
+
"""Invalid field value."""
|
292
|
+
|
293
|
+
|
294
|
+
class SchemaError(BaseError, ValueError):
|
295
|
+
"""Invalid schema."""
|
296
|
+
|
297
|
+
|
298
|
+
class SeekError(BaseError, ValueError):
|
299
|
+
"""Invalid seek position."""
|
300
|
+
|
301
|
+
|
302
|
+
class TruncateError(BaseError, ValueError):
|
303
|
+
"""Invalid truncate size."""
|
304
|
+
|
305
|
+
|
306
|
+
##############################################################################
|
307
|
+
# NotImplementedError session.
|
308
|
+
##############################################################################
|
309
|
+
|
310
|
+
|
311
|
+
class ProtocolNotImplemented(BaseError, NotImplementedError):
|
312
|
+
"""Protocol not implemented."""
|
313
|
+
|
314
|
+
|
315
|
+
class VendorNotImplemented(BaseError, NotImplementedError):
|
316
|
+
"""Vendor not implemented."""
|
317
|
+
|
318
|
+
|
319
|
+
##############################################################################
|
320
|
+
# struct.error session.
|
321
|
+
##############################################################################
|
322
|
+
|
323
|
+
|
324
|
+
class StructError(BaseError, struct.error):
|
325
|
+
"""Unpack failed."""
|
326
|
+
|
327
|
+
def __init__(self, *args: 'Any', eof: 'bool' = False, **kwargs: 'Any') -> 'None':
|
328
|
+
self.eof = eof
|
329
|
+
super().__init__(*args, **kwargs)
|
330
|
+
|
331
|
+
|
332
|
+
##############################################################################
|
333
|
+
# KeyError session.
|
334
|
+
##############################################################################
|
335
|
+
|
336
|
+
|
337
|
+
class MissingKeyError(BaseError, KeyError):
|
338
|
+
"""Key not found."""
|
339
|
+
|
340
|
+
|
341
|
+
class FragmentError(BaseError, KeyError):
|
342
|
+
"""Invalid fragment dict."""
|
343
|
+
|
344
|
+
|
345
|
+
class PacketError(BaseError, KeyError):
|
346
|
+
"""Invalid packet dict."""
|
347
|
+
|
348
|
+
|
349
|
+
##############################################################################
|
350
|
+
# ModuleNotFoundError session.
|
351
|
+
##############################################################################
|
352
|
+
|
353
|
+
|
354
|
+
class ModuleNotFound(BaseError, ModuleNotFoundError):
|
355
|
+
"""Module not found."""
|
356
|
+
# kwargs: name, path
|
357
|
+
|
358
|
+
|
359
|
+
##############################################################################
|
360
|
+
# io.UnsupportedOperation session.
|
361
|
+
##############################################################################
|
362
|
+
|
363
|
+
|
364
|
+
class UnsupportedOperation(BaseError, io.UnsupportedOperation):
|
365
|
+
"""Unsupported operation."""
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""Logging System
|
3
|
+
====================
|
4
|
+
|
5
|
+
.. module:: pcapkit.utilities.logging
|
6
|
+
|
7
|
+
:mod:`pcapkit.utilities.logging` contains naïve integration
|
8
|
+
of the Python logging system, i.e. a :class:`logging.Logger`
|
9
|
+
instance as :data:`~pcapkit.utilities.logging.logger`.
|
10
|
+
|
11
|
+
"""
|
12
|
+
import logging
|
13
|
+
import os
|
14
|
+
import sys
|
15
|
+
|
16
|
+
__all__ = ['logger']
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
# Dev Mode
|
20
|
+
###############################################################################
|
21
|
+
|
22
|
+
# boolean mappings
|
23
|
+
BOOLEAN_STATES = {'1': True, '0': False,
|
24
|
+
'yes': True, 'no': False,
|
25
|
+
'true': True, 'false': False,
|
26
|
+
'on': True, 'off': False}
|
27
|
+
|
28
|
+
#: bool: Development mode flag.
|
29
|
+
DEVMODE = BOOLEAN_STATES.get(os.environ.get('PCAPKIT_DEVMODE', 'false').casefold(), False)
|
30
|
+
#: bool: Verbose output flag.
|
31
|
+
VERBOSE = BOOLEAN_STATES.get(os.environ.get('PCAPKIT_VERBOSE', 'false').casefold(), False)
|
32
|
+
|
33
|
+
###############################################################################
|
34
|
+
# Sphinx Mode
|
35
|
+
###############################################################################
|
36
|
+
|
37
|
+
#: bool: This is a workaround for :data:`typing.TYPE_CHECKING` in Sphinx.
|
38
|
+
SPHINX_TYPE_CHECKING = BOOLEAN_STATES.get(os.environ.get('PCAPKIT_SPHINX', 'false').casefold(), False)
|
39
|
+
|
40
|
+
###############################################################################
|
41
|
+
# Logger Setup
|
42
|
+
###############################################################################
|
43
|
+
|
44
|
+
#: logging.Logger: :class:`~logging.Logger` instance named after ``pcapkit``.
|
45
|
+
logger = logging.getLogger('pcapkit')
|
46
|
+
|
47
|
+
formatter = logging.Formatter(fmt='[%(levelname)s] %(asctime)s - %(message)s',
|
48
|
+
datefmt='%m/%d/%Y %I:%M:%S %p')
|
49
|
+
handler = logging.StreamHandler(sys.stderr)
|
50
|
+
if DEVMODE:
|
51
|
+
logger.setLevel(logging.DEBUG)
|
52
|
+
else:
|
53
|
+
logger.setLevel(logging.INFO)
|
54
|
+
handler.setFormatter(formatter)
|
55
|
+
logger.addHandler(handler)
|
@@ -0,0 +1,185 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""User Defined Warnings
|
3
|
+
===========================
|
4
|
+
|
5
|
+
.. module:: pcapkit.utilities.warnings
|
6
|
+
|
7
|
+
:mod:`pcapkit.warnings` refined built-in warnings.
|
8
|
+
|
9
|
+
"""
|
10
|
+
import warnings
|
11
|
+
from typing import TYPE_CHECKING
|
12
|
+
|
13
|
+
from pcapkit.utilities.exceptions import stacklevel as stacklevel_calculator
|
14
|
+
from pcapkit.utilities.logging import DEVMODE, VERBOSE, logger
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from typing import Any, Optional, Type, Union
|
18
|
+
|
19
|
+
__all__ = [
|
20
|
+
'warn',
|
21
|
+
|
22
|
+
# UserWarning
|
23
|
+
'BaseWarning',
|
24
|
+
# ImportWarning
|
25
|
+
'FormatWarning', 'EngineWarning', 'InvalidVendorWarning',
|
26
|
+
# RuntimeWarning
|
27
|
+
'FileWarning', 'LayerWarning', 'ProtocolWarning', 'AttributeWarning',
|
28
|
+
'DevModeWarning', 'VendorRequestWarning', 'VendorRuntimeWarning',
|
29
|
+
'UnknownFieldWarning', 'RegistryWarning', 'SchemaWarning', 'InfoWarning',
|
30
|
+
'SeekWarning', 'ExtractionWarning',
|
31
|
+
# ResourceWarning
|
32
|
+
'DPKTWarning', 'ScapyWarning', 'PySharkWarning', 'EmojiWarning',
|
33
|
+
'VendorWarning',
|
34
|
+
# DeprecationWarning
|
35
|
+
'DeprecatedFormatWarning',
|
36
|
+
]
|
37
|
+
|
38
|
+
|
39
|
+
def warn(message: 'Union[str, Warning]', category: 'Type[Warning]',
|
40
|
+
stacklevel: 'Optional[int]' = None) -> 'None':
|
41
|
+
"""Wrapper function of :func:`warnings.warn`.
|
42
|
+
|
43
|
+
Args:
|
44
|
+
message: Warning message.
|
45
|
+
category: Warning category.
|
46
|
+
stacklevel: Warning stack level.
|
47
|
+
|
48
|
+
"""
|
49
|
+
if stacklevel is None:
|
50
|
+
stacklevel = stacklevel_calculator()
|
51
|
+
|
52
|
+
logger.warning(message, exc_info=VERBOSE, stack_info=VERBOSE,
|
53
|
+
stacklevel=stacklevel)
|
54
|
+
warnings.warn(message, category, stacklevel)
|
55
|
+
|
56
|
+
|
57
|
+
##############################################################################
|
58
|
+
# BaseWarning (abc of warnings) session.
|
59
|
+
##############################################################################
|
60
|
+
|
61
|
+
|
62
|
+
class BaseWarning(UserWarning):
|
63
|
+
"""Base warning class of all kinds."""
|
64
|
+
|
65
|
+
def __init__(self, *args: 'Any', **kwargs: 'Any') -> 'None': # pylint: disable=useless-super-delegation
|
66
|
+
# log warning
|
67
|
+
if DEVMODE:
|
68
|
+
if VERBOSE:
|
69
|
+
logger.warning(str(self), exc_info=self, stack_info=True,
|
70
|
+
stacklevel=stacklevel_calculator())
|
71
|
+
else:
|
72
|
+
logger.warning(str(self))
|
73
|
+
else:
|
74
|
+
warnings.simplefilter('ignore', type(self))
|
75
|
+
|
76
|
+
# warnings.simplefilter('default')
|
77
|
+
super().__init__(*args, **kwargs)
|
78
|
+
|
79
|
+
|
80
|
+
##############################################################################
|
81
|
+
# ImportWarning session.
|
82
|
+
##############################################################################
|
83
|
+
|
84
|
+
|
85
|
+
class FormatWarning(BaseWarning, ImportWarning):
|
86
|
+
"""Warning on unknown format(s)."""
|
87
|
+
|
88
|
+
|
89
|
+
class EngineWarning(BaseWarning, ImportWarning):
|
90
|
+
"""Unsupported extraction engine."""
|
91
|
+
|
92
|
+
|
93
|
+
class InvalidVendorWarning(BaseWarning, ImportWarning):
|
94
|
+
"""Vendor CLI invalid updater."""
|
95
|
+
|
96
|
+
|
97
|
+
##############################################################################
|
98
|
+
# RuntimeWarning session.
|
99
|
+
##############################################################################
|
100
|
+
|
101
|
+
|
102
|
+
class FileWarning(BaseWarning, RuntimeWarning):
|
103
|
+
"""Warning on file(s)."""
|
104
|
+
|
105
|
+
|
106
|
+
class LayerWarning(BaseWarning, RuntimeWarning):
|
107
|
+
"""Unrecognised layer."""
|
108
|
+
|
109
|
+
|
110
|
+
class ProtocolWarning(BaseWarning, RuntimeWarning):
|
111
|
+
"""Unrecognised protocol."""
|
112
|
+
|
113
|
+
|
114
|
+
class AttributeWarning(BaseWarning, RuntimeWarning):
|
115
|
+
"""Unsupported attribute."""
|
116
|
+
|
117
|
+
|
118
|
+
class DevModeWarning(BaseWarning, RuntimeWarning):
|
119
|
+
"""Run in development mode."""
|
120
|
+
|
121
|
+
|
122
|
+
class VendorRequestWarning(BaseWarning, RuntimeWarning):
|
123
|
+
"""Vendor request connection failed."""
|
124
|
+
|
125
|
+
|
126
|
+
class VendorRuntimeWarning(BaseWarning, RuntimeWarning):
|
127
|
+
"""Vendor failed during runtime."""
|
128
|
+
|
129
|
+
|
130
|
+
class UnknownFieldWarning(BaseWarning, RuntimeWarning):
|
131
|
+
"""Unknown field."""
|
132
|
+
|
133
|
+
|
134
|
+
class RegistryWarning(BaseWarning, RuntimeWarning):
|
135
|
+
"""Registry warning."""
|
136
|
+
|
137
|
+
|
138
|
+
class SchemaWarning(BaseWarning, RuntimeWarning):
|
139
|
+
"""Schema warning."""
|
140
|
+
|
141
|
+
|
142
|
+
class InfoWarning(BaseWarning, RuntimeWarning):
|
143
|
+
"""Info class warning."""
|
144
|
+
|
145
|
+
|
146
|
+
class SeekWarning(BaseWarning, RuntimeWarning):
|
147
|
+
"""Seek operation warning."""
|
148
|
+
|
149
|
+
|
150
|
+
class ExtractionWarning(BaseWarning, RuntimeWarning):
|
151
|
+
"""Extraction warning."""
|
152
|
+
|
153
|
+
|
154
|
+
##############################################################################
|
155
|
+
# ResourceWarning session.
|
156
|
+
##############################################################################
|
157
|
+
|
158
|
+
|
159
|
+
class DPKTWarning(BaseWarning, ResourceWarning):
|
160
|
+
"""Warnings on DPKT usage."""
|
161
|
+
|
162
|
+
|
163
|
+
class ScapyWarning(BaseWarning, ResourceWarning):
|
164
|
+
"""Warnings on Scapy usage."""
|
165
|
+
|
166
|
+
|
167
|
+
class PySharkWarning(BaseWarning, ResourceWarning):
|
168
|
+
"""Warnings on PyShark usage."""
|
169
|
+
|
170
|
+
|
171
|
+
class EmojiWarning(BaseWarning, ResourceWarning):
|
172
|
+
"""Warnings on Emoji usage."""
|
173
|
+
|
174
|
+
|
175
|
+
class VendorWarning(BaseWarning, ResourceWarning):
|
176
|
+
"""Warnings on vendor usage."""
|
177
|
+
|
178
|
+
|
179
|
+
##############################################################################
|
180
|
+
# DeprecationWarning session.
|
181
|
+
##############################################################################
|
182
|
+
|
183
|
+
|
184
|
+
class DeprecatedFormatWarning(BaseWarning, DeprecationWarning):
|
185
|
+
"""Warning on deprecated formats."""
|