friTap 2.2.2__tar.gz → 2.2.4__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.
Files changed (365) hide show
  1. {fritap-2.2.2/friTap.egg-info → fritap-2.2.4}/PKG-INFO +2 -2
  2. {fritap-2.2.2 → fritap-2.2.4}/README.md +1 -1
  3. {fritap-2.2.2 → fritap-2.2.4}/friTap/about.py +1 -1
  4. {fritap-2.2.2 → fritap-2.2.4}/friTap/config.py +8 -0
  5. {fritap-2.2.2 → fritap-2.2.4}/friTap/friTap.py +26 -11
  6. {fritap-2.2.2 → fritap-2.2.4}/friTap/fritap_agent.js +190 -6
  7. {fritap-2.2.2 → fritap-2.2.4}/friTap/legacy/session_manager.py +6 -1
  8. {fritap-2.2.2 → fritap-2.2.4}/friTap/legacy/ssl_logger_core.py +6 -0
  9. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/app.py +1 -0
  10. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/capture_controller.py +37 -0
  11. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/start_confirm_modal.py +24 -1
  12. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/wizard.py +3 -0
  13. {fritap-2.2.2 → fritap-2.2.4/friTap.egg-info}/PKG-INFO +2 -2
  14. {fritap-2.2.2 → fritap-2.2.4}/friTap.egg-info/SOURCES.txt +3 -0
  15. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_frida_backend_spawn.py +17 -0
  16. fritap-2.2.4/tests/unit/test_spawn_argv_plumbing.py +58 -0
  17. fritap-2.2.4/tests/unit/test_tui_pairip_safe.py +88 -0
  18. fritap-2.2.4/tests/unit/test_tui_spawn_argv.py +81 -0
  19. {fritap-2.2.2 → fritap-2.2.4}/LICENSE +0 -0
  20. {fritap-2.2.2 → fritap-2.2.4}/MANIFEST.in +0 -0
  21. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/__init__.py +0 -0
  22. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/adapters/__init__.py +0 -0
  23. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/adapters/gdb_adapter.py +0 -0
  24. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/adapters/lldb_adapter.py +0 -0
  25. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/definitions/__init__.py +0 -0
  26. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/definitions/base.py +0 -0
  27. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/definitions/ipsec_strongswan.py +0 -0
  28. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/definitions/ssh_openssh.py +0 -0
  29. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/memory.py +0 -0
  30. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/output.py +0 -0
  31. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/registry.py +0 -0
  32. {fritap-2.2.2 → fritap-2.2.4}/agent_debugger/runner.py +0 -0
  33. {fritap-2.2.2 → fritap-2.2.4}/friTap/__init__.py +0 -0
  34. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/__init__.py +0 -0
  35. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/credentials.py +0 -0
  36. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/discovery.py +0 -0
  37. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/filtering.py +0 -0
  38. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/ioc.py +0 -0
  39. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/privacy.py +0 -0
  40. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/protobuf_analyzer.py +0 -0
  41. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/registry.py +0 -0
  42. {fritap-2.2.2 → fritap-2.2.4}/friTap/analysis/reporters.py +0 -0
  43. {fritap-2.2.2 → fritap-2.2.4}/friTap/android.py +0 -0
  44. {fritap-2.2.2 → fritap-2.2.4}/friTap/api.py +0 -0
  45. {fritap-2.2.2 → fritap-2.2.4}/friTap/assets/__init__.py +0 -0
  46. {fritap-2.2.2 → fritap-2.2.4}/friTap/assets/tcpdump_binaries/README.md +0 -0
  47. {fritap-2.2.2 → fritap-2.2.4}/friTap/assets/tcpdump_binaries/tcpdump_arm32_android +0 -0
  48. {fritap-2.2.2 → fritap-2.2.4}/friTap/assets/tcpdump_binaries/tcpdump_arm64_android +0 -0
  49. {fritap-2.2.2 → fritap-2.2.4}/friTap/assets/tcpdump_binaries/tcpdump_x86_64_android +0 -0
  50. {fritap-2.2.2 → fritap-2.2.4}/friTap/assets/tcpdump_binaries/tcpdump_x86_android +0 -0
  51. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/__init__.py +0 -0
  52. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/base.py +0 -0
  53. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/debugger_script.py +0 -0
  54. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/ebpf_backend.py +0 -0
  55. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/frida_backend.py +0 -0
  56. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/gdb_backend.py +0 -0
  57. {fritap-2.2.2 → fritap-2.2.4}/friTap/backends/lldb_backend.py +0 -0
  58. {fritap-2.2.2 → fritap-2.2.4}/friTap/commands/__init__.py +0 -0
  59. {fritap-2.2.2 → fritap-2.2.4}/friTap/commands/analyze.py +0 -0
  60. {fritap-2.2.2 → fritap-2.2.4}/friTap/commands/install_backend.py +0 -0
  61. {fritap-2.2.2 → fritap-2.2.4}/friTap/connection_index.py +0 -0
  62. {fritap-2.2.2 → fritap-2.2.4}/friTap/constants.py +0 -0
  63. {fritap-2.2.2 → fritap-2.2.4}/friTap/core.py +0 -0
  64. {fritap-2.2.2 → fritap-2.2.4}/friTap/discovery_base.py +0 -0
  65. {fritap-2.2.2 → fritap-2.2.4}/friTap/error_handler.py +0 -0
  66. {fritap-2.2.2 → fritap-2.2.4}/friTap/events.py +0 -0
  67. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/__init__.py +0 -0
  68. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/ast_nodes.py +0 -0
  69. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/errors.py +0 -0
  70. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/evaluator.py +0 -0
  71. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/fields.py +0 -0
  72. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/lexer.py +0 -0
  73. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/parser.py +0 -0
  74. {fritap-2.2.2 → fritap-2.2.4}/friTap/filter/pipeline_filter.py +0 -0
  75. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/__init__.py +0 -0
  76. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/collector.py +0 -0
  77. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/decryptors/__init__.py +0 -0
  78. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/decryptors/base.py +0 -0
  79. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/decryptors/registry.py +0 -0
  80. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/display.py +0 -0
  81. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/http_utils.py +0 -0
  82. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/layer_pipeline.py +0 -0
  83. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/layer_registry.py +0 -0
  84. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/layers.py +0 -0
  85. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/models.py +0 -0
  86. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/reparse.py +0 -0
  87. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/replay.py +0 -0
  88. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/stream_buffer.py +0 -0
  89. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/tap_format.py +0 -0
  90. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/tap_reader.py +0 -0
  91. {fritap-2.2.2 → fritap-2.2.4}/friTap/flow/tap_writer.py +0 -0
  92. {fritap-2.2.2 → fritap-2.2.4}/friTap/fritap_utility.py +0 -0
  93. {fritap-2.2.2 → fritap-2.2.4}/friTap/inspector.py +0 -0
  94. {fritap-2.2.2 → fritap-2.2.4}/friTap/legacy/__init__.py +0 -0
  95. {fritap-2.2.2 → fritap-2.2.4}/friTap/legacy/cleanup_compat.py +0 -0
  96. {fritap-2.2.2 → fritap-2.2.4}/friTap/legacy/init_compat.py +0 -0
  97. {fritap-2.2.2 → fritap-2.2.4}/friTap/legacy/message_handler.py +0 -0
  98. {fritap-2.2.2 → fritap-2.2.4}/friTap/message_router.py +0 -0
  99. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/__init__.py +0 -0
  100. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/cli.py +0 -0
  101. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/discovery.py +0 -0
  102. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/__init__.py +0 -0
  103. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/content.py +0 -0
  104. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/crypto.py +0 -0
  105. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/decrypt.py +0 -0
  106. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/e2e/__init__.py +0 -0
  107. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/e2e/decrypt.py +0 -0
  108. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/e2e/keylog.py +0 -0
  109. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/e2e/records.py +0 -0
  110. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/keylog.py +0 -0
  111. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/reassembly.py +0 -0
  112. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/records.py +0 -0
  113. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/mtproto/transport.py +0 -0
  114. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/pcap_to_tap.py +0 -0
  115. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/registry.py +0 -0
  116. {fritap-2.2.2 → fritap-2.2.4}/friTap/offline/tshark.py +0 -0
  117. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/__init__.py +0 -0
  118. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/base.py +0 -0
  119. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/console_handler.py +0 -0
  120. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/dedup.py +0 -0
  121. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/factory.py +0 -0
  122. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/formatters.py +0 -0
  123. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/json_handler.py +0 -0
  124. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/jsonl_handler.py +0 -0
  125. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/key_collector_handler.py +0 -0
  126. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/keylog_format.py +0 -0
  127. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/keylog_handler.py +0 -0
  128. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/keylog_paths.py +0 -0
  129. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/live_autodecrypt_handler.py +0 -0
  130. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/live_pcapng_handler.py +0 -0
  131. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/live_wireshark_handler.py +0 -0
  132. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/pcap_handler.py +0 -0
  133. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/pcapng_blocks.py +0 -0
  134. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/pcapng_handler.py +0 -0
  135. {fritap-2.2.2 → fritap-2.2.4}/friTap/output/scan_candidate_formatter.py +0 -0
  136. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/__init__.py +0 -0
  137. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/base.py +0 -0
  138. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/bhttp.py +0 -0
  139. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/body_processors.py +0 -0
  140. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/boundary_scan.py +0 -0
  141. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/decompress.py +0 -0
  142. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/hexdump.py +0 -0
  143. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/http1.py +0 -0
  144. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/http2.py +0 -0
  145. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/http2_dataframe.py +0 -0
  146. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/http3.py +0 -0
  147. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/protobuf/__init__.py +0 -0
  148. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/protobuf/grpc.py +0 -0
  149. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/protobuf/processor.py +0 -0
  150. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/protobuf/schema.py +0 -0
  151. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/protobuf/wire.py +0 -0
  152. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/registry.py +0 -0
  153. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/trailing.py +0 -0
  154. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/varint.py +0 -0
  155. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/websocket.py +0 -0
  156. {fritap-2.2.2 → fritap-2.2.4}/friTap/parsers/websocket_defray.py +0 -0
  157. {fritap-2.2.2 → fritap-2.2.4}/friTap/patterns/__init__.py +0 -0
  158. {fritap-2.2.2 → fritap-2.2.4}/friTap/patterns/default_patterns.json +0 -0
  159. {fritap-2.2.2 → fritap-2.2.4}/friTap/patterns/loader.py +0 -0
  160. {fritap-2.2.2 → fritap-2.2.4}/friTap/pcap.py +0 -0
  161. {fritap-2.2.2 → fritap-2.2.4}/friTap/pcap_utility.py +0 -0
  162. {fritap-2.2.2 → fritap-2.2.4}/friTap/pipeline.py +0 -0
  163. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/__init__.py +0 -0
  164. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/base.py +0 -0
  165. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/custom_protocol.py +0 -0
  166. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/README.md +0 -0
  167. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/__init__.py +0 -0
  168. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/custom_aes.py +0 -0
  169. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/module_logger_plugin.py +0 -0
  170. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/protobuf_plugin.py +0 -0
  171. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/srtp.py +0 -0
  172. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/stats_plugin.py +0 -0
  173. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/examples/wireguard.py +0 -0
  174. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/js_codegen.py +0 -0
  175. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/legacy_custom_script.py +0 -0
  176. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/loader.py +0 -0
  177. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/script_context.py +0 -0
  178. {fritap-2.2.2 → fritap-2.2.4}/friTap/plugins/script_plugin.py +0 -0
  179. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/__init__.py +0 -0
  180. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/_ext/__init__.py +0 -0
  181. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/base.py +0 -0
  182. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/mtproto_handler.py +0 -0
  183. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/mtproto_keylog_spec.py +0 -0
  184. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/registry.py +0 -0
  185. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/ssh_extractor.py +0 -0
  186. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/ssh_handler.py +0 -0
  187. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/telegram_handler.py +0 -0
  188. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/tls_extractor.py +0 -0
  189. {fritap-2.2.2 → fritap-2.2.4}/friTap/protocols/tls_handler.py +0 -0
  190. {fritap-2.2.2 → fritap-2.2.4}/friTap/schemas/__init__.py +0 -0
  191. {fritap-2.2.2 → fritap-2.2.4}/friTap/schemas/agent_messages.py +0 -0
  192. {fritap-2.2.2 → fritap-2.2.4}/friTap/schemas/canonical.py +0 -0
  193. {fritap-2.2.2 → fritap-2.2.4}/friTap/schemas/host_messages.py +0 -0
  194. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/__init__.py +0 -0
  195. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/android.py +0 -0
  196. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/base.py +0 -0
  197. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/factory.py +0 -0
  198. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/ios.py +0 -0
  199. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/linux.py +0 -0
  200. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/macos.py +0 -0
  201. {fritap-2.2.2 → fritap-2.2.4}/friTap/server_manager/windows.py +0 -0
  202. {fritap-2.2.2 → fritap-2.2.4}/friTap/session.py +0 -0
  203. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/__init__.py +0 -0
  204. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/base.py +0 -0
  205. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/console.py +0 -0
  206. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/json_sink.py +0 -0
  207. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/keylog.py +0 -0
  208. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/live_pcapng.py +0 -0
  209. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/live_wireshark.py +0 -0
  210. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/pcap.py +0 -0
  211. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/pcapng.py +0 -0
  212. {fritap-2.2.2 → fritap-2.2.4}/friTap/sinks/tcp_state.py +0 -0
  213. {fritap-2.2.2 → fritap-2.2.4}/friTap/ssl_logger.py +0 -0
  214. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/__init__.py +0 -0
  215. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/css/fritap.tcss +0 -0
  216. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/handlers.py +0 -0
  217. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/__init__.py +0 -0
  218. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/alert_modal.py +0 -0
  219. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/backend_modal.py +0 -0
  220. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/base.py +0 -0
  221. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/body_processing_modal.py +0 -0
  222. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/capture_mode_modal.py +0 -0
  223. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/capture_select_modal.py +0 -0
  224. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/decrypt_confirm_modal.py +0 -0
  225. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/device_modal.py +0 -0
  226. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/encapsulated_protocol_modal.py +0 -0
  227. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/explorer_modal.py +0 -0
  228. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/filter_help_modal.py +0 -0
  229. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/filter_modal.py +0 -0
  230. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/findings_filter_modal.py +0 -0
  231. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/help_modal.py +0 -0
  232. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/open_pcap_modal.py +0 -0
  233. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/pcap_to_tap_modals.py +0 -0
  234. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/process_modal.py +0 -0
  235. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/protocol_modal.py +0 -0
  236. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/quic_capture_mode_modal.py +0 -0
  237. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/quit_modal.py +0 -0
  238. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/save_tap_modal.py +0 -0
  239. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/server_check_modal.py +0 -0
  240. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/spawn_modal.py +0 -0
  241. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/target_mode_modal.py +0 -0
  242. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/modals/view_mode_modal.py +0 -0
  243. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/mode_controller.py +0 -0
  244. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/replay_controller.py +0 -0
  245. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/screens/__init__.py +0 -0
  246. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/screens/_parked_main_screen.py +0 -0
  247. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/screens/main_screen.py +0 -0
  248. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/themes.py +0 -0
  249. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/__init__.py +0 -0
  250. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/_parked_transcript.py +0 -0
  251. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/activity_log.py +0 -0
  252. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/analyzer_finding_detail.py +0 -0
  253. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/analyzer_panel.py +0 -0
  254. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/filter_bar.py +0 -0
  255. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/findings_filter_bar.py +0 -0
  256. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/findings_list.py +0 -0
  257. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/flow_detail.py +0 -0
  258. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/flow_list.py +0 -0
  259. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/menu_panel.py +0 -0
  260. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/ohttp_tab.py +0 -0
  261. {fritap-2.2.2 → fritap-2.2.4}/friTap/tui/widgets/status_bar.py +0 -0
  262. {fritap-2.2.2 → fritap-2.2.4}/friTap.egg-info/dependency_links.txt +0 -0
  263. {fritap-2.2.2 → fritap-2.2.4}/friTap.egg-info/entry_points.txt +0 -0
  264. {fritap-2.2.2 → fritap-2.2.4}/friTap.egg-info/requires.txt +0 -0
  265. {fritap-2.2.2 → fritap-2.2.4}/friTap.egg-info/top_level.txt +0 -0
  266. {fritap-2.2.2 → fritap-2.2.4}/integrations/wireshark/fritap-extcap +0 -0
  267. {fritap-2.2.2 → fritap-2.2.4}/integrations/wireshark/install.sh +0 -0
  268. {fritap-2.2.2 → fritap-2.2.4}/pyproject.toml +0 -0
  269. {fritap-2.2.2 → fritap-2.2.4}/requirements-minimal.txt +0 -0
  270. {fritap-2.2.2 → fritap-2.2.4}/requirements.txt +0 -0
  271. {fritap-2.2.2 → fritap-2.2.4}/setup.cfg +0 -0
  272. {fritap-2.2.2 → fritap-2.2.4}/setup.py +0 -0
  273. {fritap-2.2.2 → fritap-2.2.4}/tests/__init__.py +0 -0
  274. {fritap-2.2.2 → fritap-2.2.4}/tests/agent/__init__.py +0 -0
  275. {fritap-2.2.2 → fritap-2.2.4}/tests/agent/test_compilation.py +0 -0
  276. {fritap-2.2.2 → fritap-2.2.4}/tests/conftest.py +0 -0
  277. {fritap-2.2.2 → fritap-2.2.4}/tests/fixtures/__init__.py +0 -0
  278. {fritap-2.2.2 → fritap-2.2.4}/tests/fixtures/mock_objects.py +0 -0
  279. {fritap-2.2.2 → fritap-2.2.4}/tests/integration/__init__.py +0 -0
  280. {fritap-2.2.2 → fritap-2.2.4}/tests/integration/_mtproto_helpers.py +0 -0
  281. {fritap-2.2.2 → fritap-2.2.4}/tests/integration/test_mock_ssl_analysis.py +0 -0
  282. {fritap-2.2.2 → fritap-2.2.4}/tests/integration/test_offline_mtproto_e2e.py +0 -0
  283. {fritap-2.2.2 → fritap-2.2.4}/tests/integration/test_offline_telegram_e2e.py +0 -0
  284. {fritap-2.2.2 → fritap-2.2.4}/tests/integration/test_ssh_plaintext.py +0 -0
  285. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/__init__.py +0 -0
  286. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/_render_helpers.py +0 -0
  287. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/output/__init__.py +0 -0
  288. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/output/test_factory_keylog_routing.py +0 -0
  289. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/output/test_keylog_formatters.py +0 -0
  290. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/output/test_keylog_paths.py +0 -0
  291. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/output/test_scan_candidate_routing.py +0 -0
  292. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_activity_log_dedup.py +0 -0
  293. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_analysis_exposure.py +0 -0
  294. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_analyze_public_function.py +0 -0
  295. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_analyzer_discovery.py +0 -0
  296. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_android.py +0 -0
  297. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_anti_tamper_loader_hook.py +0 -0
  298. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_api_flow_wiring.py +0 -0
  299. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_capture_controller_severity.py +0 -0
  300. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_codereview_fixes.py +0 -0
  301. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_collector_parser_containment.py +0 -0
  302. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_collector_tls_and_flush.py +0 -0
  303. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_credentials_improved.py +0 -0
  304. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_cronet_split_topology.py +0 -0
  305. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_discovery_base.py +0 -0
  306. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_find_ssl_log_secret_offset.py +0 -0
  307. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_finding_filter.py +0 -0
  308. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_finding_from_dict.py +0 -0
  309. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_flow_completion_lifecycle.py +0 -0
  310. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_flow_layers.py +0 -0
  311. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_flow_overview_api.py +0 -0
  312. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_fritap_dispatch.py +0 -0
  313. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_hook_breadcrumb.py +0 -0
  314. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_http2_dataframe.py +0 -0
  315. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_http2_hpack.py +0 -0
  316. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_http3_qpack.py +0 -0
  317. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_keylog_active_paths.py +0 -0
  318. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_layer_pipeline.py +0 -0
  319. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_layer_routing_and_synthetic.py +0 -0
  320. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_layers_model.py +0 -0
  321. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_layers_serialization.py +0 -0
  322. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_layers_view.py +0 -0
  323. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_lldb_dispatch.py +0 -0
  324. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_logging_setup.py +0 -0
  325. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_content.py +0 -0
  326. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_crypto.py +0 -0
  327. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_decrypt.py +0 -0
  328. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_dependency_message.py +0 -0
  329. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_keylog.py +0 -0
  330. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_layer.py +0 -0
  331. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_message_tab.py +0 -0
  332. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_parser_discovery.py +0 -0
  333. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_reassembly.py +0 -0
  334. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_mtproto_transport.py +0 -0
  335. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_offline_decryptor_discovery.py +0 -0
  336. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_offline_metadata.py +0 -0
  337. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_offline_pcap_to_tap.py +0 -0
  338. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_offline_quic_metadata.py +0 -0
  339. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_offline_tshark_calibration.py +0 -0
  340. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_parser_safe_adapter.py +0 -0
  341. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_pattern_fallback_gate.py +0 -0
  342. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_pattern_loader_schemas.py +0 -0
  343. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_patterns_handshake.py +0 -0
  344. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_pcap_dsb_defensive.py +0 -0
  345. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_pcap_server_port.py +0 -0
  346. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_pcap_to_tap_wizard.py +0 -0
  347. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_privacy_analyzer.py +0 -0
  348. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_protocol_visibility.py +0 -0
  349. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_public_api_exports.py +0 -0
  350. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_reporter_redaction.py +0 -0
  351. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_scrub_doc_markers.py +0 -0
  352. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_secret_chat_crypto.py +0 -0
  353. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_secret_chat_decrypt.py +0 -0
  354. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_secret_chat_keylog.py +0 -0
  355. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_session_metadata_stamping.py +0 -0
  356. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_ssl_logger.py +0 -0
  357. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tap_enrichment.py +0 -0
  358. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tap_findings_scan_gate.py +0 -0
  359. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tap_writer_rewrite.py +0 -0
  360. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_telegram_handler.py +0 -0
  361. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tui_analyzer_panel.py +0 -0
  362. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tui_decrypt_to_flow.py +0 -0
  363. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tui_finding_detail.py +0 -0
  364. {fritap-2.2.2 → fritap-2.2.4}/tests/unit/test_tui_findings_view.py +0 -0
  365. {fritap-2.2.2 → fritap-2.2.4}/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.2
3
+ Version: 2.2.4
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
- ![version](https://img.shields.io/badge/version-2.2.2-blue) [![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&r=r&ts=1683906897&type=6e&v=2.2.2&x2=0)](https://badge.fury.io/py/friTap) [![CI](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml)
69
+ ![version](https://img.shields.io/badge/version-2.2.4-blue) [![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&r=r&ts=1683906897&type=6e&v=2.2.4&x2=0)](https://badge.fury.io/py/friTap) [![CI](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml)
70
70
  [![Ruff](https://github.com/fkie-cad/friTap/actions/workflows/lint.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/lint.yml)
71
71
  [![Publish status](https://github.com/fkie-cad/friTap/actions/workflows/publish.yml/badge.svg?branch=main)](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
- ![version](https://img.shields.io/badge/version-2.2.2-blue) [![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&r=r&ts=1683906897&type=6e&v=2.2.2&x2=0)](https://badge.fury.io/py/friTap) [![CI](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml)
7
+ ![version](https://img.shields.io/badge/version-2.2.4-blue) [![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&r=r&ts=1683906897&type=6e&v=2.2.4&x2=0)](https://badge.fury.io/py/friTap) [![CI](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/ci.yml)
8
8
  [![Ruff](https://github.com/fkie-cad/friTap/actions/workflows/lint.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/lint.yml)
9
9
  [![Publish status](https://github.com/fkie-cad/friTap/actions/workflows/publish.yml/badge.svg?branch=main)](https://github.com/fkie-cad/friTap/actions/workflows/publish.yml)
10
10
 
@@ -2,5 +2,5 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  __author__ = "Daniel Baier, Julian Lengersdorff, Francois Egner, Max Ufer"
5
- __version__ = "2.2.2"
5
+ __version__ = "2.2.4"
6
6
  debug = False # are we running in debug mode?
@@ -158,6 +158,12 @@ class FriTapConfig:
158
158
  )
159
159
  """
160
160
  target: str
161
+ # Original argv tokens for spawn mode (e.g. ["wine", "/p/My Game/app.exe"]).
162
+ # Kept separate from `target` (which stays a single string for attach-by-name
163
+ # / display) so spawn passes the real argv to device.spawn() instead of
164
+ # re-splitting the joined string on spaces — which corrupts paths containing
165
+ # spaces (issue #66 follow-up). None for attach mode / programmatic configs.
166
+ target_argv: Optional[List[str]] = None
161
167
  device: DeviceConfig = field(default_factory=DeviceConfig)
162
168
  output: OutputConfig = field(default_factory=OutputConfig)
163
169
  hooking: HookingConfig = field(default_factory=HookingConfig)
@@ -209,6 +215,7 @@ class FriTapConfig:
209
215
  cls,
210
216
  app: str,
211
217
  pcap_name: Optional[str] = None,
218
+ spawn_argv: Optional[List[str]] = None,
212
219
  verbose: bool = False,
213
220
  spawn: bool = False,
214
221
  keylog: bool | str = False,
@@ -264,6 +271,7 @@ class FriTapConfig:
264
271
  """
265
272
  return cls(
266
273
  target=app,
274
+ target_argv=spawn_argv,
267
275
  device=DeviceConfig(
268
276
  mobile=mobile,
269
277
  host=host if host else None,
@@ -294,7 +294,7 @@ Offline (read / analyze .tap):
294
294
  args.add_argument("--debug-log", metavar="<path>", required=False, default=None, dest="debug_log",
295
295
  help="Write the friTap debug log to <path> (default: ./fritap_debug_<ts>_<pid>.log). "
296
296
  "Capture session-level errors, warnings, and uncaught exceptions even in non-TUI mode.")
297
- args.add_argument("-do", "--debugoutput", required=False, action="store_const", const=True,
297
+ args.add_argument("-do", "--debug-output", required=False, action="store_const", const=True,
298
298
  help="Activate the debug output only.")
299
299
  args.add_argument("-ar", "--anti_root", required=False, action="store_const", const=True, default=False, help="Activate anti root hooks for Android")
300
300
  args.add_argument("-ed", "--enable_default_fd", required=False, action="store_const", const=True, default=False, help="Activate the fallback socket information (127.0.0.1:1234-127.0.0.1:2345) whenever the file descriptor (FD) of the socket cannot be determined")
@@ -363,8 +363,10 @@ Offline (read / analyze .tap):
363
363
  help="Catch ALL newly spawned processes without filtering (use with caution)")
364
364
  args.add_argument("--enable_child_gating", required=False, action="store_const", const=True,
365
365
  help="Intercept child processes spawned by the target application")
366
- args.add_argument("exec", metavar="<executable/app name/pid>",
367
- help="executable/app whose SSL calls to log")
366
+ args.add_argument("exec", metavar="<executable/app name/pid>", nargs="+",
367
+ help="executable/app whose SSL calls to log. Accepts a "
368
+ "command with arguments for spawn mode, e.g. "
369
+ "'wine /path/to/application.exe' (issue #66).")
368
370
  args.add_argument("--offsets", required=False, metavar="<offsets.json>",
369
371
  help="Provide custom offsets for all hooked functions inside a JSON file or a json string containing all offsets. For more details see our example json (offsets_example.json)")
370
372
  args.add_argument("--patterns", required=False, metavar="<pattern.json>",
@@ -506,18 +508,30 @@ Offline (read / analyze .tap):
506
508
  "By default loopback traffic is filtered out to reduce noise.")
507
509
  parsed = parser.parse_args()
508
510
 
511
+ # The target positional now captures one-or-more tokens (nargs="+") so a
512
+ # spawn command with arguments parses, e.g. `wine /path/app.exe` (issue #66).
513
+ # Keep the original token list as parsed.exec_argv so spawn can pass the real
514
+ # argv to device.spawn() (preserving paths that contain spaces, e.g.
515
+ # ".../Program Files/app.exe"), and collapse parsed.exec to the single
516
+ # space-joined string the rest of friTap expects for attach-by-name/display.
517
+ if isinstance(parsed.exec, list):
518
+ parsed.exec_argv = list(parsed.exec)
519
+ parsed.exec = " ".join(parsed.exec)
520
+ else:
521
+ parsed.exec_argv = None
522
+
509
523
  # Configure logging after parsing arguments to respect debug flags
510
524
  logger, special_logger = setup_fritap_logging(
511
- debug=parsed.debug, debug_output=parsed.debugoutput
525
+ debug=parsed.debug, debug_output=parsed.debug_output
512
526
  )
513
527
 
514
528
  # Bring up the debug-log file subsystem when the user asked for one,
515
- # either explicitly via --debug-log or implicitly via --debugoutput.
529
+ # either explicitly via --debug-log or implicitly via --debug-output.
516
530
  # Done immediately after console-logging is configured so init-time
517
531
  # errors below this line land in the file. The TUI entry point
518
532
  # (run_tui) calls prime_debug_log too — both call sites are idempotent.
519
533
  debug_log_path_override = getattr(parsed, "debug_log", None)
520
- if debug_log_path_override or parsed.debugoutput:
534
+ if debug_log_path_override or parsed.debug_output:
521
535
  from .fritap_utility import prime_debug_log
522
536
  opened = prime_debug_log(debug_log_path_override)
523
537
  if opened:
@@ -530,7 +544,7 @@ Offline (read / analyze .tap):
530
544
  logger.info("LSASS hooking is disabled. Proceeding without LSASS.")
531
545
  else:
532
546
  logger.info("Hooking LSASS process for SSL/TLS traffic decryption.")
533
- hook_lsass(parsed.pcap, parsed.verbose, parsed.keylog, parsed.live, parsed.debug, parsed.host, parsed.debugoutput, parsed.enable_default_fd, parsed.patterns, parsed.custom_script, parsed.json)
547
+ hook_lsass(parsed.pcap, parsed.verbose, parsed.keylog, parsed.live, parsed.debug, parsed.host, parsed.debug_output, parsed.enable_default_fd, parsed.patterns, parsed.custom_script, parsed.json)
534
548
  atexit.register(cleanup_lsass_hook)
535
549
 
536
550
  install_lsass_hook = False
@@ -540,7 +554,7 @@ Offline (read / analyze .tap):
540
554
  app=parsed.exec, verbose=parsed.verbose, spawn=parsed.spawn,
541
555
  mobile=parsed.mobile, environment_file=parsed.environment,
542
556
  debug_mode=parsed.debug, host=parsed.host, offsets=parsed.offsets,
543
- debug_output=parsed.debugoutput, experimental=parsed.experimental,
557
+ debug_output=parsed.debug_output, experimental=parsed.experimental,
544
558
  anti_root=parsed.anti_root, enable_default_fd=parsed.enable_default_fd,
545
559
  patterns=parsed.patterns, custom_hook_script=parsed.custom_script,
546
560
  backend=parsed.backend,
@@ -708,6 +722,7 @@ Offline (read / analyze .tap):
708
722
  special_logger.info("Press Ctrl+C to stop logging")
709
723
  config = FriTapConfig.from_legacy_params(
710
724
  app=parsed.exec,
725
+ spawn_argv=getattr(parsed, "exec_argv", None),
711
726
  pcap_name=parsed.pcap,
712
727
  verbose=parsed.verbose,
713
728
  spawn=parsed.spawn,
@@ -723,7 +738,7 @@ Offline (read / analyze .tap):
723
738
  socket_trace=parsed.socket_tracing,
724
739
  host=parsed.host,
725
740
  offsets=parsed.offsets,
726
- debug_output=parsed.debugoutput,
741
+ debug_output=parsed.debug_output,
727
742
  experimental=parsed.experimental,
728
743
  anti_root=parsed.anti_root,
729
744
  payload_modification=parsed.payload_modification,
@@ -834,7 +849,7 @@ Offline (read / analyze .tap):
834
849
  for trace in trace_back
835
850
  ]
836
851
 
837
- if parsed.debug or parsed.debugoutput:
852
+ if parsed.debug or parsed.debug_output:
838
853
  if "NotSupportedError" in ex_type.__name__:
839
854
  logger.error("Backend error:")
840
855
  logger.error("Exception type : %s " % ex_type.__name__)
@@ -864,7 +879,7 @@ Offline (read / analyze .tap):
864
879
  finally:
865
880
  if 'ssl_log' in locals() and isinstance(ssl_log, SSL_Logger):
866
881
  ssl_log.pcap_cleanup(parsed.full_capture,parsed.mobile,parsed.pcap)
867
- ssl_log.cleanup(parsed.live,parsed.socket_tracing,parsed.full_capture,parsed.debug,parsed.debugoutput)
882
+ ssl_log.cleanup(parsed.live,parsed.socket_tracing,parsed.full_capture,parsed.debug,parsed.debug_output)
868
883
 
869
884
  # only reached when error
870
885
  raise Failure