friTap 2.2.1__tar.gz → 2.2.2__tar.gz
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.
- {fritap-2.2.1/friTap.egg-info → fritap-2.2.2}/PKG-INFO +2 -2
- {fritap-2.2.1 → fritap-2.2.2}/README.md +1 -1
- {fritap-2.2.1 → fritap-2.2.2}/friTap/about.py +1 -1
- {fritap-2.2.1 → fritap-2.2.2}/friTap/config.py +28 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/constants.py +1 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/events.py +13 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/friTap.py +34 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/fritap_agent.js +998 -240
- {fritap-2.2.1 → fritap-2.2.2}/friTap/fritap_utility.py +30 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/legacy/ssl_logger_core.py +56 -1
- {fritap-2.2.1 → fritap-2.2.2}/friTap/message_router.py +28 -1
- {fritap-2.2.1 → fritap-2.2.2/friTap.egg-info}/PKG-INFO +2 -2
- {fritap-2.2.1 → fritap-2.2.2}/friTap.egg-info/SOURCES.txt +2 -0
- fritap-2.2.2/tests/unit/test_anti_tamper_loader_hook.py +118 -0
- fritap-2.2.2/tests/unit/test_find_ssl_log_secret_offset.py +94 -0
- {fritap-2.2.1 → fritap-2.2.2}/LICENSE +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/MANIFEST.in +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/adapters/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/adapters/gdb_adapter.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/adapters/lldb_adapter.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/definitions/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/definitions/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/definitions/ipsec_strongswan.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/definitions/ssh_openssh.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/memory.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/output.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/agent_debugger/runner.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/credentials.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/discovery.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/filtering.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/ioc.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/privacy.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/protobuf_analyzer.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/analysis/reporters.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/android.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/api.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/assets/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/assets/tcpdump_binaries/README.md +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/assets/tcpdump_binaries/tcpdump_arm32_android +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/assets/tcpdump_binaries/tcpdump_arm64_android +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/assets/tcpdump_binaries/tcpdump_x86_64_android +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/assets/tcpdump_binaries/tcpdump_x86_android +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/debugger_script.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/ebpf_backend.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/frida_backend.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/gdb_backend.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/backends/lldb_backend.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/commands/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/commands/analyze.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/commands/install_backend.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/connection_index.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/core.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/discovery_base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/error_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/ast_nodes.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/errors.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/evaluator.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/fields.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/lexer.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/parser.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/filter/pipeline_filter.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/collector.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/decryptors/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/decryptors/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/decryptors/registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/display.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/http_utils.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/layer_pipeline.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/layer_registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/layers.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/models.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/reparse.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/replay.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/stream_buffer.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/tap_format.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/tap_reader.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/flow/tap_writer.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/inspector.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/legacy/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/legacy/cleanup_compat.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/legacy/init_compat.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/legacy/message_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/legacy/session_manager.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/cli.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/discovery.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/content.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/crypto.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/decrypt.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/e2e/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/e2e/decrypt.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/e2e/keylog.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/e2e/records.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/keylog.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/reassembly.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/records.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/mtproto/transport.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/pcap_to_tap.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/offline/tshark.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/console_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/dedup.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/factory.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/formatters.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/json_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/jsonl_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/key_collector_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/keylog_format.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/keylog_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/keylog_paths.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/live_autodecrypt_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/live_pcapng_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/live_wireshark_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/pcap_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/pcapng_blocks.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/pcapng_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/output/scan_candidate_formatter.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/bhttp.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/body_processors.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/boundary_scan.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/decompress.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/hexdump.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/http1.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/http2.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/http2_dataframe.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/http3.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/protobuf/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/protobuf/grpc.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/protobuf/processor.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/protobuf/schema.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/protobuf/wire.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/trailing.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/varint.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/websocket.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/parsers/websocket_defray.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/patterns/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/patterns/default_patterns.json +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/patterns/loader.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/pcap.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/pcap_utility.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/pipeline.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/custom_protocol.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/README.md +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/custom_aes.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/module_logger_plugin.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/protobuf_plugin.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/srtp.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/stats_plugin.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/examples/wireguard.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/js_codegen.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/legacy_custom_script.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/loader.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/script_context.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/plugins/script_plugin.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/_ext/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/mtproto_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/mtproto_keylog_spec.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/registry.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/ssh_extractor.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/ssh_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/telegram_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/tls_extractor.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/protocols/tls_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/schemas/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/schemas/agent_messages.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/schemas/canonical.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/schemas/host_messages.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/android.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/factory.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/ios.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/linux.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/macos.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/server_manager/windows.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/session.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/console.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/json_sink.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/keylog.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/live_pcapng.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/live_wireshark.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/pcap.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/pcapng.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/sinks/tcp_state.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/ssl_logger.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/app.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/capture_controller.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/css/fritap.tcss +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/handlers.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/alert_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/backend_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/body_processing_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/capture_mode_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/capture_select_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/decrypt_confirm_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/device_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/encapsulated_protocol_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/explorer_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/filter_help_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/filter_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/findings_filter_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/help_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/open_pcap_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/pcap_to_tap_modals.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/process_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/protocol_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/quic_capture_mode_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/quit_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/save_tap_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/server_check_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/spawn_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/start_confirm_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/target_mode_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/modals/view_mode_modal.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/mode_controller.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/replay_controller.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/screens/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/screens/_parked_main_screen.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/screens/main_screen.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/themes.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/_parked_transcript.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/activity_log.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/analyzer_finding_detail.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/analyzer_panel.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/filter_bar.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/findings_filter_bar.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/findings_list.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/flow_detail.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/flow_list.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/menu_panel.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/ohttp_tab.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/widgets/status_bar.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap/tui/wizard.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap.egg-info/dependency_links.txt +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap.egg-info/entry_points.txt +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap.egg-info/requires.txt +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/friTap.egg-info/top_level.txt +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/integrations/wireshark/fritap-extcap +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/integrations/wireshark/install.sh +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/pyproject.toml +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/requirements-minimal.txt +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/requirements.txt +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/setup.cfg +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/setup.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/agent/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/agent/test_compilation.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/conftest.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/fixtures/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/fixtures/mock_objects.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/integration/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/integration/_mtproto_helpers.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/integration/test_mock_ssl_analysis.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/integration/test_offline_mtproto_e2e.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/integration/test_offline_telegram_e2e.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/integration/test_ssh_plaintext.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/_render_helpers.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/output/__init__.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/output/test_factory_keylog_routing.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/output/test_keylog_formatters.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/output/test_keylog_paths.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/output/test_scan_candidate_routing.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_activity_log_dedup.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_analysis_exposure.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_analyze_public_function.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_analyzer_discovery.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_android.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_api_flow_wiring.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_capture_controller_severity.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_codereview_fixes.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_collector_parser_containment.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_collector_tls_and_flush.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_credentials_improved.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_cronet_split_topology.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_discovery_base.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_finding_filter.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_finding_from_dict.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_flow_completion_lifecycle.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_flow_layers.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_flow_overview_api.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_frida_backend_spawn.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_fritap_dispatch.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_hook_breadcrumb.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_http2_dataframe.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_http2_hpack.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_http3_qpack.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_keylog_active_paths.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_layer_pipeline.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_layer_routing_and_synthetic.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_layers_model.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_layers_serialization.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_layers_view.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_lldb_dispatch.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_logging_setup.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_content.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_crypto.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_decrypt.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_dependency_message.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_keylog.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_layer.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_message_tab.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_parser_discovery.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_reassembly.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_mtproto_transport.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_offline_decryptor_discovery.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_offline_metadata.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_offline_pcap_to_tap.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_offline_quic_metadata.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_offline_tshark_calibration.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_parser_safe_adapter.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_pattern_fallback_gate.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_pattern_loader_schemas.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_patterns_handshake.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_pcap_dsb_defensive.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_pcap_server_port.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_pcap_to_tap_wizard.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_privacy_analyzer.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_protocol_visibility.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_public_api_exports.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_reporter_redaction.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_scrub_doc_markers.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_secret_chat_crypto.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_secret_chat_decrypt.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_secret_chat_keylog.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_session_metadata_stamping.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_ssl_logger.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tap_enrichment.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tap_findings_scan_gate.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tap_writer_rewrite.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_telegram_handler.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tui_analyzer_panel.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tui_decrypt_to_flow.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tui_finding_detail.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_tui_findings_view.py +0 -0
- {fritap-2.2.1 → fritap-2.2.2}/tests/unit/test_webviewchromium_support.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: friTap
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.2
|
|
4
4
|
Summary: Simplifies (SSL/TLS) traffic analysis and key extraction using Frida across major platforms.
|
|
5
5
|
Home-page: https://github.com/fkie-cad/friTap
|
|
6
6
|
Author: Daniel Baier, Julian Lengersdorff, Francois Egner, Max Ufer
|
|
@@ -66,7 +66,7 @@ Dynamic: summary
|
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
# friTap
|
|
69
|
-
 [](https://badge.fury.io/py/friTap) [](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml)
|
|
70
70
|
[](https://github.com/fkie-cad/friTap/actions/workflows/lint.yml)
|
|
71
71
|
[](https://github.com/fkie-cad/friTap/actions/workflows/publish.yml)
|
|
72
72
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
</div>
|
|
5
5
|
|
|
6
6
|
# friTap
|
|
7
|
-
 [](https://badge.fury.io/py/friTap) [](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml)
|
|
8
8
|
[](https://github.com/fkie-cad/friTap/actions/workflows/lint.yml)
|
|
9
9
|
[](https://github.com/fkie-cad/friTap/actions/workflows/publish.yml)
|
|
10
10
|
|
|
@@ -87,6 +87,28 @@ class HookingConfig:
|
|
|
87
87
|
# passes, no Java VM safepoint sync), which also helps fritap attach to a
|
|
88
88
|
# target that is already in the middle of active QUIC traffic.
|
|
89
89
|
quic_only: bool = False
|
|
90
|
+
# When True, the agent skips the inline android_dlopen_ext loader hook. This
|
|
91
|
+
# is the hook PairIP / anti-tamper runtimes detect and SIGSEGV on during a
|
|
92
|
+
# spawn-time integrity scan (fkie-cad/friTap#64). Only already-loaded /
|
|
93
|
+
# explicitly-selected TLS libraries are then hooked. The agent also auto-
|
|
94
|
+
# skips it in spawn mode when an anti-tamper library is detected.
|
|
95
|
+
no_loader_hook: bool = False
|
|
96
|
+
# EXPERIMENTAL (Android). Watch android_dlopen_ext via a hardware breakpoint
|
|
97
|
+
# (ARM64 debug registers, no linker code patch) instead of the inline
|
|
98
|
+
# trampoline, so late-loaded TLS libs can be hooked on PairIP-protected apps
|
|
99
|
+
# without tripping the anti-tamper scan. Unvalidated on-device; default OFF.
|
|
100
|
+
stealth_loader: bool = False
|
|
101
|
+
# --pairip-safe (Android; attach and spawn). Minimal, scan-free capture mode
|
|
102
|
+
# for PairIP-protected apps: hook only a curated TLS-library allowlist
|
|
103
|
+
# (libssl.so, libhttpengine.so, libjavacrypto.so, libconscrypt*,
|
|
104
|
+
# libcommerce_http_client.so, offset-based libwebviewchromium.so; libunity.so
|
|
105
|
+
# is opt-in via --offsets), resolved WITHOUT any Memory.scan (exports ->
|
|
106
|
+
# symbols -> offsets). Skips the loader hook, WebView/Cronet pattern scan,
|
|
107
|
+
# Java hooks, OHTTP and the library-scan pass — the broad footprint that trips
|
|
108
|
+
# PairIP's periodic integrity check (an in-process SIGSEGV). Keys persist via
|
|
109
|
+
# "blink" (hooks toggled so .text stays pristine between scans).
|
|
110
|
+
# (fkie-cad/friTap#64). Default OFF.
|
|
111
|
+
pairip_safe: bool = False
|
|
90
112
|
# Override which layer of the HTTP/3 egress-headers fallback chain the
|
|
91
113
|
# agent actually attaches to. "auto" (default) keeps the winner-takes-all
|
|
92
114
|
# logic: quiche-internal QuicSpdyStream::WriteHeaders preferred, then
|
|
@@ -221,6 +243,9 @@ class FriTapConfig:
|
|
|
221
243
|
force_scan_modules: Optional[List[str]] = None,
|
|
222
244
|
quic_capture_mode: str = "stream",
|
|
223
245
|
quic_only: bool = False,
|
|
246
|
+
no_loader_hook: bool = False,
|
|
247
|
+
stealth_loader: bool = False,
|
|
248
|
+
pairip_safe: bool = False,
|
|
224
249
|
quic_egress_headers_layer: str = "auto",
|
|
225
250
|
scan_keys_region: Optional[str] = None,
|
|
226
251
|
scan: Optional[str] = None,
|
|
@@ -280,6 +305,9 @@ class FriTapConfig:
|
|
|
280
305
|
force_scan_modules=list(force_scan_modules or []),
|
|
281
306
|
quic_capture_mode=quic_capture_mode,
|
|
282
307
|
quic_only=quic_only,
|
|
308
|
+
no_loader_hook=no_loader_hook,
|
|
309
|
+
stealth_loader=stealth_loader,
|
|
310
|
+
pairip_safe=pairip_safe,
|
|
283
311
|
quic_egress_headers_layer=quic_egress_headers_layer,
|
|
284
312
|
scan_keys_region=scan_keys_region,
|
|
285
313
|
),
|
|
@@ -97,6 +97,19 @@ class LibraryDetectedEvent(FriTapEvent):
|
|
|
97
97
|
path: str = ""
|
|
98
98
|
|
|
99
99
|
|
|
100
|
+
@dataclass
|
|
101
|
+
class AntiTamperDetectedEvent(FriTapEvent):
|
|
102
|
+
"""Emitted when a known anti-tamper / integrity-protection runtime (e.g.
|
|
103
|
+
Google PairIP, libpairipcore.so) is detected in the target process.
|
|
104
|
+
|
|
105
|
+
``skipped_loader_hook`` is True when friTap responded by skipping the inline
|
|
106
|
+
android_dlopen_ext loader hook to avoid a SIGSEGV (fkie-cad/friTap#64).
|
|
107
|
+
"""
|
|
108
|
+
library: str = ""
|
|
109
|
+
name: str = ""
|
|
110
|
+
skipped_loader_hook: bool = False
|
|
111
|
+
|
|
112
|
+
|
|
100
113
|
# Session lifecycle event type constants
|
|
101
114
|
SESSION_STARTED = "started"
|
|
102
115
|
SESSION_RESUMED = "resumed"
|
|
@@ -421,6 +421,37 @@ Offline (read / analyze .tap):
|
|
|
421
421
|
"Filter scope: Android = Google QUICHE (Cronet) only; "
|
|
422
422
|
"Linux = Cloudflare quiche, Google QUICHE (Cronet), Mozilla "
|
|
423
423
|
"Neqo (Firefox).")
|
|
424
|
+
args.add_argument("--no-loader-hook", "-nlh", required=False, action="store_const",
|
|
425
|
+
const=True, default=False, dest="no_loader_hook",
|
|
426
|
+
help="Android: do not install the android_dlopen_ext loader hook. "
|
|
427
|
+
"Avoids PairIP / anti-tamper SIGSEGV crashes (fkie-cad/friTap#64); "
|
|
428
|
+
"only already-loaded / explicitly-selected (--offsets) TLS libraries "
|
|
429
|
+
"are hooked. Recommended together with attach mode (no -s). friTap "
|
|
430
|
+
"also auto-skips this hook in spawn mode when it detects a known "
|
|
431
|
+
"anti-tamper library such as Google PairIP (libpairipcore.so).")
|
|
432
|
+
args.add_argument("--experimental-stealth-loader", required=False, action="store_const",
|
|
433
|
+
const=True, default=False, dest="stealth_loader",
|
|
434
|
+
help="EXPERIMENTAL (Android, arm64). Watch android_dlopen_ext via a "
|
|
435
|
+
"hardware breakpoint (CPU debug registers — no linker code patch) "
|
|
436
|
+
"instead of the inline trampoline, so late-loaded TLS libraries can "
|
|
437
|
+
"be hooked on PairIP-protected apps without tripping the anti-tamper "
|
|
438
|
+
"scan (fkie-cad/friTap#64). UNVALIDATED on-device; needs root "
|
|
439
|
+
"frida-server and may not catch loads on threads created after attach.")
|
|
440
|
+
args.add_argument("--pairip-safe", required=False, action="store_const",
|
|
441
|
+
const=True, default=False, dest="pairip_safe",
|
|
442
|
+
help="Android: minimal capture mode for Google PairIP-protected apps "
|
|
443
|
+
"(fkie-cad/friTap#64). Hooks ONLY a curated, scan-free TLS-library "
|
|
444
|
+
"allowlist (libssl.so, libhttpengine.so, libcommerce_http_client.so, "
|
|
445
|
+
"libjavacrypto.so, libconscrypt*, and offset-based libwebviewchromium.so; "
|
|
446
|
+
"libunity.so is opt-in via --offsets), resolved without any Memory.scan "
|
|
447
|
+
"(exports -> symbols -> offsets); skips the loader hook, the WebView/Cronet "
|
|
448
|
+
"pattern scan, Java hooks, OHTTP and library-scan — the broad footprint "
|
|
449
|
+
"that trips PairIP's periodic integrity check and SIGSEGVs the app. Keys "
|
|
450
|
+
"persist via 'blink' (hooks toggled so .text stays pristine between scans). "
|
|
451
|
+
"Works with BOTH attach and spawn (-s); spawn is best-effort (hooks are "
|
|
452
|
+
"deferred past PairIP's startup window, so the earliest handshakes may be "
|
|
453
|
+
"missed — attach is the proven path). Trigger fresh TLS handshakes after "
|
|
454
|
+
"attach (e.g. toggle wifi). See docs/advanced/pairip-safe.md.")
|
|
424
455
|
args.add_argument("--library-scan", "-ls", required=False, action="store_const",
|
|
425
456
|
const=True, default=False,
|
|
426
457
|
help="Pre-scan for TLS libraries using tlsLibHunter before hooking. "
|
|
@@ -712,6 +743,9 @@ Offline (read / analyze .tap):
|
|
|
712
743
|
force_scan_modules=getattr(parsed, 'force_scan_modules', None),
|
|
713
744
|
quic_capture_mode=getattr(parsed, 'quic_capture_mode', 'stream'),
|
|
714
745
|
quic_only=getattr(parsed, 'quic_only', False),
|
|
746
|
+
no_loader_hook=getattr(parsed, 'no_loader_hook', False),
|
|
747
|
+
stealth_loader=getattr(parsed, 'stealth_loader', False),
|
|
748
|
+
pairip_safe=getattr(parsed, 'pairip_safe', False),
|
|
715
749
|
quic_egress_headers_layer=getattr(parsed, 'quic_egress_headers_layer', 'auto'),
|
|
716
750
|
scan_keys_region=getattr(parsed, 'scan_keys_region', None),
|
|
717
751
|
scan=getattr(parsed, 'scan', None),
|