debugpy 1.8.5__zip → 1.8.7__zip
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.
- {debugpy-1.8.5/src/debugpy.egg-info → debugpy-1.8.7}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +328 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +159 -127
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +55527 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +803 -511
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +69 -61
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1929 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43253 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1935 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +89 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/messaging.py +2 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/cli.py +32 -17
- {debugpy-1.8.5 → debugpy-1.8.7/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/SOURCES.txt +6 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -76
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -592
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -19514
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -19
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -153
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +0 -43377
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -204
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -91
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -62
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -48
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -23
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -237
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -32
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -9
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -74
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -79
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -507
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -539
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -3435
- {debugpy-1.8.5 → debugpy-1.8.7}/DESCRIPTION.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/LICENSE +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/MANIFEST.in +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/pyproject.toml +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/setup.cfg +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/setup.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/versioneer.py +0 -0
|
@@ -39,7 +39,7 @@ from __future__ import with_statement
|
|
|
39
39
|
|
|
40
40
|
__revision__ = "$Id$"
|
|
41
41
|
|
|
42
|
-
__all__ = [
|
|
42
|
+
__all__ = ["Registry"]
|
|
43
43
|
|
|
44
44
|
import sys
|
|
45
45
|
from winappdbg import win32
|
|
@@ -47,9 +47,10 @@ from winappdbg import compat
|
|
|
47
47
|
import collections
|
|
48
48
|
import warnings
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
# ==============================================================================
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
class _RegistryContainer(object):
|
|
53
54
|
"""
|
|
54
55
|
Base class for L{Registry} and L{RegistryKey}.
|
|
55
56
|
"""
|
|
@@ -57,6 +58,7 @@ class _RegistryContainer (object):
|
|
|
57
58
|
# Dummy object to detect empty arguments.
|
|
58
59
|
class __EmptyArgument:
|
|
59
60
|
pass
|
|
61
|
+
|
|
60
62
|
__emptyArgument = __EmptyArgument()
|
|
61
63
|
|
|
62
64
|
def __init__(self):
|
|
@@ -79,9 +81,11 @@ class _RegistryContainer (object):
|
|
|
79
81
|
def __iter__(self):
|
|
80
82
|
return compat.iterkeys(self)
|
|
81
83
|
|
|
82
|
-
#==============================================================================
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
# ==============================================================================
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class RegistryKey(_RegistryContainer):
|
|
85
89
|
"""
|
|
86
90
|
Exposes a single Windows Registry key as a dictionary-like object.
|
|
87
91
|
|
|
@@ -103,9 +107,9 @@ class RegistryKey (_RegistryContainer):
|
|
|
103
107
|
@param handle: Registry key handle.
|
|
104
108
|
"""
|
|
105
109
|
super(RegistryKey, self).__init__()
|
|
106
|
-
if path.endswith(
|
|
110
|
+
if path.endswith("\\"):
|
|
107
111
|
path = path[:-1]
|
|
108
|
-
self._path
|
|
112
|
+
self._path = path
|
|
109
113
|
self._handle = handle
|
|
110
114
|
|
|
111
115
|
@property
|
|
@@ -114,12 +118,12 @@ class RegistryKey (_RegistryContainer):
|
|
|
114
118
|
|
|
115
119
|
@property
|
|
116
120
|
def handle(self):
|
|
117
|
-
#if not self._handle:
|
|
121
|
+
# if not self._handle:
|
|
118
122
|
# msg = "This Registry key handle has already been closed."
|
|
119
123
|
# raise RuntimeError(msg)
|
|
120
124
|
return self._handle
|
|
121
125
|
|
|
122
|
-
#def close(self):
|
|
126
|
+
# def close(self):
|
|
123
127
|
# """
|
|
124
128
|
# Close the Registry key handle, freeing its resources. It cannot be
|
|
125
129
|
# used again after calling this method.
|
|
@@ -131,13 +135,13 @@ class RegistryKey (_RegistryContainer):
|
|
|
131
135
|
# """
|
|
132
136
|
# self.handle.close()
|
|
133
137
|
#
|
|
134
|
-
#def __enter__(self):
|
|
138
|
+
# def __enter__(self):
|
|
135
139
|
# """
|
|
136
140
|
# Compatibility with the "C{with}" Python statement.
|
|
137
141
|
# """
|
|
138
142
|
# return self
|
|
139
143
|
#
|
|
140
|
-
#def __exit__(self, type, value, traceback):
|
|
144
|
+
# def __exit__(self, type, value, traceback):
|
|
141
145
|
# """
|
|
142
146
|
# Compatibility with the "C{with}" Python statement.
|
|
143
147
|
# """
|
|
@@ -236,7 +240,7 @@ class RegistryKey (_RegistryContainer):
|
|
|
236
240
|
resp = win32.RegEnumValue(handle, index)
|
|
237
241
|
if resp is None:
|
|
238
242
|
break
|
|
239
|
-
items.append(
|
|
243
|
+
items.append((resp[0], resp[2]))
|
|
240
244
|
index += 1
|
|
241
245
|
return items
|
|
242
246
|
|
|
@@ -281,11 +285,11 @@ class RegistryKey (_RegistryContainer):
|
|
|
281
285
|
win32.RegDeleteValue(handle, resp[0])
|
|
282
286
|
|
|
283
287
|
def __str__(self):
|
|
284
|
-
default = self[
|
|
288
|
+
default = self[""]
|
|
285
289
|
return str(default)
|
|
286
290
|
|
|
287
291
|
def __unicode__(self):
|
|
288
|
-
default = self[
|
|
292
|
+
default = self[""]
|
|
289
293
|
return compat.unicode(default)
|
|
290
294
|
|
|
291
295
|
def __repr__(self):
|
|
@@ -322,7 +326,7 @@ class RegistryKey (_RegistryContainer):
|
|
|
322
326
|
subkey = win32.RegEnumKey(handle, index)
|
|
323
327
|
if subkey is None:
|
|
324
328
|
break
|
|
325
|
-
result.append(
|
|
329
|
+
result.append(self.child(subkey))
|
|
326
330
|
index += 1
|
|
327
331
|
return result
|
|
328
332
|
|
|
@@ -336,7 +340,7 @@ class RegistryKey (_RegistryContainer):
|
|
|
336
340
|
@rtype: L{RegistryKey}
|
|
337
341
|
@return: Subkey.
|
|
338
342
|
"""
|
|
339
|
-
path = self._path +
|
|
343
|
+
path = self._path + "\\" + subkey
|
|
340
344
|
handle = win32.RegOpenKey(self.handle, subkey)
|
|
341
345
|
return RegistryKey(path, handle)
|
|
342
346
|
|
|
@@ -352,7 +356,8 @@ class RegistryKey (_RegistryContainer):
|
|
|
352
356
|
"""
|
|
353
357
|
win32.RegFlushKey(self.handle)
|
|
354
358
|
|
|
355
|
-
|
|
359
|
+
|
|
360
|
+
# ==============================================================================
|
|
356
361
|
|
|
357
362
|
# TODO: possibly cache the RegistryKey objects
|
|
358
363
|
# to avoid opening and closing handles many times on code sequences like this:
|
|
@@ -372,7 +377,8 @@ class RegistryKey (_RegistryContainer):
|
|
|
372
377
|
# Apparently RegDeleteTree won't work remotely from Win7 to WinXP, and the only
|
|
373
378
|
# solution is to recursively call RegDeleteKey.
|
|
374
379
|
|
|
375
|
-
|
|
380
|
+
|
|
381
|
+
class Registry(_RegistryContainer):
|
|
376
382
|
"""
|
|
377
383
|
Exposes the Windows Registry as a Python container.
|
|
378
384
|
|
|
@@ -382,36 +388,34 @@ class Registry (_RegistryContainer):
|
|
|
382
388
|
"""
|
|
383
389
|
|
|
384
390
|
_hives_by_name = {
|
|
385
|
-
|
|
386
391
|
# Short names
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
392
|
+
"HKCR": win32.HKEY_CLASSES_ROOT,
|
|
393
|
+
"HKCU": win32.HKEY_CURRENT_USER,
|
|
394
|
+
"HKLM": win32.HKEY_LOCAL_MACHINE,
|
|
395
|
+
"HKU": win32.HKEY_USERS,
|
|
396
|
+
"HKPD": win32.HKEY_PERFORMANCE_DATA,
|
|
397
|
+
"HKCC": win32.HKEY_CURRENT_CONFIG,
|
|
394
398
|
# Long names
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
399
|
+
"HKEY_CLASSES_ROOT": win32.HKEY_CLASSES_ROOT,
|
|
400
|
+
"HKEY_CURRENT_USER": win32.HKEY_CURRENT_USER,
|
|
401
|
+
"HKEY_LOCAL_MACHINE": win32.HKEY_LOCAL_MACHINE,
|
|
402
|
+
"HKEY_USERS": win32.HKEY_USERS,
|
|
403
|
+
"HKEY_PERFORMANCE_DATA": win32.HKEY_PERFORMANCE_DATA,
|
|
404
|
+
"HKEY_CURRENT_CONFIG": win32.HKEY_CURRENT_CONFIG,
|
|
401
405
|
}
|
|
402
406
|
|
|
403
407
|
_hives_by_value = {
|
|
404
|
-
win32.HKEY_CLASSES_ROOT
|
|
405
|
-
win32.HKEY_CURRENT_USER
|
|
406
|
-
win32.HKEY_LOCAL_MACHINE
|
|
407
|
-
win32.HKEY_USERS
|
|
408
|
-
win32.HKEY_PERFORMANCE_DATA
|
|
409
|
-
win32.HKEY_CURRENT_CONFIG
|
|
408
|
+
win32.HKEY_CLASSES_ROOT: "HKEY_CLASSES_ROOT",
|
|
409
|
+
win32.HKEY_CURRENT_USER: "HKEY_CURRENT_USER",
|
|
410
|
+
win32.HKEY_LOCAL_MACHINE: "HKEY_LOCAL_MACHINE",
|
|
411
|
+
win32.HKEY_USERS: "HKEY_USERS",
|
|
412
|
+
win32.HKEY_PERFORMANCE_DATA: "HKEY_PERFORMANCE_DATA",
|
|
413
|
+
win32.HKEY_CURRENT_CONFIG: "HKEY_CURRENT_CONFIG",
|
|
410
414
|
}
|
|
411
415
|
|
|
412
416
|
_hives = sorted(compat.itervalues(_hives_by_value))
|
|
413
417
|
|
|
414
|
-
def __init__(self, machine
|
|
418
|
+
def __init__(self, machine=None):
|
|
415
419
|
"""
|
|
416
420
|
Opens a local or remote registry.
|
|
417
421
|
|
|
@@ -443,14 +447,14 @@ class Registry (_RegistryContainer):
|
|
|
443
447
|
- L{win32.HKEY_PERFORMANCE_DATA}
|
|
444
448
|
- L{win32.HKEY_CURRENT_CONFIG}
|
|
445
449
|
"""
|
|
446
|
-
if
|
|
447
|
-
p = path.find(
|
|
450
|
+
if "\\" in path:
|
|
451
|
+
p = path.find("\\")
|
|
448
452
|
hive = path[:p]
|
|
449
|
-
path = path[p+1:]
|
|
453
|
+
path = path[p + 1 :]
|
|
450
454
|
else:
|
|
451
455
|
hive = path
|
|
452
456
|
path = None
|
|
453
|
-
handle = self._hives_by_name[
|
|
457
|
+
handle = self._hives_by_name[hive.upper()]
|
|
454
458
|
return handle, path
|
|
455
459
|
|
|
456
460
|
def _parse_path(self, path):
|
|
@@ -492,7 +496,7 @@ class Registry (_RegistryContainer):
|
|
|
492
496
|
"""
|
|
493
497
|
path = self._hives_by_value[hive]
|
|
494
498
|
if subkey:
|
|
495
|
-
path = path +
|
|
499
|
+
path = path + "\\" + subkey
|
|
496
500
|
return path
|
|
497
501
|
|
|
498
502
|
def _sanitize_path(self, path):
|
|
@@ -505,7 +509,7 @@ class Registry (_RegistryContainer):
|
|
|
505
509
|
@rtype: str
|
|
506
510
|
@return: Registry path.
|
|
507
511
|
"""
|
|
508
|
-
return self._join_path(
|
|
512
|
+
return self._join_path(*self._split_path(path))
|
|
509
513
|
|
|
510
514
|
def _connect_hive(self, hive):
|
|
511
515
|
"""
|
|
@@ -560,7 +564,7 @@ class Registry (_RegistryContainer):
|
|
|
560
564
|
def __repr__(self):
|
|
561
565
|
if self._machine:
|
|
562
566
|
return '<Remote Registry at "%s">' % self._machine
|
|
563
|
-
return
|
|
567
|
+
return "<Local Registry>"
|
|
564
568
|
|
|
565
569
|
def __contains__(self, path):
|
|
566
570
|
hive, subpath = self._parse_path(path)
|
|
@@ -587,8 +591,7 @@ class Registry (_RegistryContainer):
|
|
|
587
591
|
|
|
588
592
|
def __setitem__(self, path, value):
|
|
589
593
|
do_copy = isinstance(value, RegistryKey)
|
|
590
|
-
if not do_copy and not isinstance(value, str)
|
|
591
|
-
and not isinstance(value, compat.unicode):
|
|
594
|
+
if not do_copy and not isinstance(value, str) and not isinstance(value, compat.unicode):
|
|
592
595
|
if isinstance(value, object):
|
|
593
596
|
t = value.__class__.__name__
|
|
594
597
|
else:
|
|
@@ -606,9 +609,7 @@ class Registry (_RegistryContainer):
|
|
|
606
609
|
def __delitem__(self, path):
|
|
607
610
|
hive, subpath = self._parse_path(path)
|
|
608
611
|
if not subpath:
|
|
609
|
-
raise TypeError(
|
|
610
|
-
"Are you SURE you want to wipe out an entire hive?!"
|
|
611
|
-
" Call win32.RegDeleteTree() directly if you must...")
|
|
612
|
+
raise TypeError("Are you SURE you want to wipe out an entire hive?!" " Call win32.RegDeleteTree() directly if you must...")
|
|
612
613
|
try:
|
|
613
614
|
win32.RegDeleteTree(hive, subpath)
|
|
614
615
|
except WindowsError:
|
|
@@ -666,7 +667,7 @@ class Registry (_RegistryContainer):
|
|
|
666
667
|
|
|
667
668
|
@raise KeyError: The specified path does not exist.
|
|
668
669
|
"""
|
|
669
|
-
if path.endswith(
|
|
670
|
+
if path.endswith("\\"):
|
|
670
671
|
path = path[:-1]
|
|
671
672
|
if not self.has_key(path):
|
|
672
673
|
raise KeyError(path)
|
|
@@ -690,6 +691,6 @@ class Registry (_RegistryContainer):
|
|
|
690
691
|
subkeys = self.subkeys(path)
|
|
691
692
|
except WindowsError:
|
|
692
693
|
continue
|
|
693
|
-
prefix = path +
|
|
694
|
+
prefix = path + "\\"
|
|
694
695
|
subkeys = [prefix + name for name in subkeys]
|
|
695
696
|
stack.extendleft(subkeys)
|
|
@@ -43,14 +43,14 @@ Process memory search.
|
|
|
43
43
|
|
|
44
44
|
__revision__ = "$Id$"
|
|
45
45
|
|
|
46
|
-
__all__ =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
__all__ = [
|
|
47
|
+
"Search",
|
|
48
|
+
"Pattern",
|
|
49
|
+
"BytePattern",
|
|
50
|
+
"TextPattern",
|
|
51
|
+
"RegExpPattern",
|
|
52
|
+
"HexPattern",
|
|
53
|
+
]
|
|
54
54
|
|
|
55
55
|
from winappdbg.textio import HexInput
|
|
56
56
|
from winappdbg.util import StaticClass, MemoryAddresses
|
|
@@ -64,9 +64,10 @@ try:
|
|
|
64
64
|
except ImportError:
|
|
65
65
|
import re
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
# ==============================================================================
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
|
|
70
|
+
class Pattern(object):
|
|
70
71
|
"""
|
|
71
72
|
Base class for search patterns.
|
|
72
73
|
|
|
@@ -116,7 +117,7 @@ class Pattern (object):
|
|
|
116
117
|
"""
|
|
117
118
|
return process.read(address, size)
|
|
118
119
|
|
|
119
|
-
def find(self, buffer, pos
|
|
120
|
+
def find(self, buffer, pos=None):
|
|
120
121
|
"""
|
|
121
122
|
Searches for the pattern in the given buffer, optionally starting at
|
|
122
123
|
the given position within the buffer.
|
|
@@ -169,9 +170,11 @@ class Pattern (object):
|
|
|
169
170
|
"""
|
|
170
171
|
return (address, size, data)
|
|
171
172
|
|
|
172
|
-
#------------------------------------------------------------------------------
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
# ------------------------------------------------------------------------------
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
class BytePattern(Pattern):
|
|
175
178
|
"""
|
|
176
179
|
Fixed byte pattern.
|
|
177
180
|
|
|
@@ -188,7 +191,7 @@ class BytePattern (Pattern):
|
|
|
188
191
|
@param pattern: Byte string to search for.
|
|
189
192
|
"""
|
|
190
193
|
self.pattern = str(pattern)
|
|
191
|
-
self.length
|
|
194
|
+
self.length = len(pattern)
|
|
192
195
|
|
|
193
196
|
def __len__(self):
|
|
194
197
|
"""
|
|
@@ -198,14 +201,16 @@ class BytePattern (Pattern):
|
|
|
198
201
|
"""
|
|
199
202
|
return self.length
|
|
200
203
|
|
|
201
|
-
def find(self, buffer, pos
|
|
204
|
+
def find(self, buffer, pos=None):
|
|
202
205
|
return buffer.find(self.pattern, pos), self.length
|
|
203
206
|
|
|
204
|
-
|
|
207
|
+
|
|
208
|
+
# ------------------------------------------------------------------------------
|
|
205
209
|
|
|
206
210
|
# FIXME: case insensitive compat.unicode searches are probably buggy!
|
|
207
211
|
|
|
208
|
-
|
|
212
|
+
|
|
213
|
+
class TextPattern(BytePattern):
|
|
209
214
|
"""
|
|
210
215
|
Text pattern.
|
|
211
216
|
|
|
@@ -223,7 +228,7 @@ class TextPattern (BytePattern):
|
|
|
223
228
|
C{False} otherwise.
|
|
224
229
|
"""
|
|
225
230
|
|
|
226
|
-
def __init__(self, text, encoding
|
|
231
|
+
def __init__(self, text, encoding="utf-16le", caseSensitive=False):
|
|
227
232
|
"""
|
|
228
233
|
@type text: str or compat.unicode
|
|
229
234
|
@param text: Text to search for.
|
|
@@ -270,13 +275,15 @@ class TextPattern (BytePattern):
|
|
|
270
275
|
try:
|
|
271
276
|
data = compat.unicode(data, self.encoding)
|
|
272
277
|
except Exception:
|
|
273
|
-
## traceback.print_exc() # XXX DEBUG
|
|
278
|
+
## traceback.print_exc() # XXX DEBUG
|
|
274
279
|
return None
|
|
275
280
|
return (address, size, data)
|
|
276
281
|
|
|
277
|
-
#------------------------------------------------------------------------------
|
|
278
282
|
|
|
279
|
-
|
|
283
|
+
# ------------------------------------------------------------------------------
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
class RegExpPattern(Pattern):
|
|
280
287
|
"""
|
|
281
288
|
Regular expression pattern.
|
|
282
289
|
|
|
@@ -305,7 +312,7 @@ class RegExpPattern (Pattern):
|
|
|
305
312
|
buffered search.
|
|
306
313
|
"""
|
|
307
314
|
|
|
308
|
-
def __init__(self, regexp, flags
|
|
315
|
+
def __init__(self, regexp, flags=0, maxLength=None):
|
|
309
316
|
"""
|
|
310
317
|
@type regexp: str
|
|
311
318
|
@param regexp: Regular expression string.
|
|
@@ -327,9 +334,9 @@ class RegExpPattern (Pattern):
|
|
|
327
334
|
cause an exception to be raised if this pattern is used in a
|
|
328
335
|
buffered search.
|
|
329
336
|
"""
|
|
330
|
-
self.pattern
|
|
331
|
-
self.flags
|
|
332
|
-
self.regexp
|
|
337
|
+
self.pattern = regexp
|
|
338
|
+
self.flags = flags
|
|
339
|
+
self.regexp = re.compile(regexp, flags)
|
|
333
340
|
self.maxLength = maxLength
|
|
334
341
|
|
|
335
342
|
def __len__(self):
|
|
@@ -350,8 +357,8 @@ class RegExpPattern (Pattern):
|
|
|
350
357
|
raise NotImplementedError()
|
|
351
358
|
return self.maxLength
|
|
352
359
|
|
|
353
|
-
def find(self, buffer, pos
|
|
354
|
-
if not pos:
|
|
360
|
+
def find(self, buffer, pos=None):
|
|
361
|
+
if not pos: # make sure pos is an int
|
|
355
362
|
pos = 0
|
|
356
363
|
match = self.regexp.search(buffer, pos)
|
|
357
364
|
if match:
|
|
@@ -359,9 +366,11 @@ class RegExpPattern (Pattern):
|
|
|
359
366
|
return start, end - start
|
|
360
367
|
return -1, 0
|
|
361
368
|
|
|
362
|
-
#------------------------------------------------------------------------------
|
|
363
369
|
|
|
364
|
-
|
|
370
|
+
# ------------------------------------------------------------------------------
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
class HexPattern(RegExpPattern):
|
|
365
374
|
"""
|
|
366
375
|
Hexadecimal pattern.
|
|
367
376
|
|
|
@@ -386,8 +395,8 @@ class HexPattern (RegExpPattern):
|
|
|
386
395
|
L{BytePattern} is created instead. That's because searching for a
|
|
387
396
|
fixed byte pattern is faster than searching for a regular expression.
|
|
388
397
|
"""
|
|
389
|
-
if
|
|
390
|
-
return BytePattern(
|
|
398
|
+
if "?" not in pattern:
|
|
399
|
+
return BytePattern(HexInput.hexadecimal(pattern))
|
|
391
400
|
return object.__new__(cls, pattern)
|
|
392
401
|
|
|
393
402
|
def __init__(self, hexa):
|
|
@@ -406,14 +415,14 @@ class HexPattern (RegExpPattern):
|
|
|
406
415
|
@type hexa: str
|
|
407
416
|
@param hexa: Pattern to search for.
|
|
408
417
|
"""
|
|
409
|
-
maxLength = len([x for x in hexa
|
|
410
|
-
|
|
411
|
-
super(HexPattern, self).__init__(HexInput.pattern(hexa),
|
|
412
|
-
maxLength = maxLength)
|
|
418
|
+
maxLength = len([x for x in hexa if x in "?0123456789ABCDEFabcdef"]) / 2
|
|
419
|
+
super(HexPattern, self).__init__(HexInput.pattern(hexa), maxLength=maxLength)
|
|
413
420
|
|
|
414
|
-
#==============================================================================
|
|
415
421
|
|
|
416
|
-
|
|
422
|
+
# ==============================================================================
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
class Search(StaticClass):
|
|
417
426
|
"""
|
|
418
427
|
Static class to group the search functionality.
|
|
419
428
|
|
|
@@ -426,10 +435,7 @@ class Search (StaticClass):
|
|
|
426
435
|
# TODO: search non-ascii C strings
|
|
427
436
|
|
|
428
437
|
@staticmethod
|
|
429
|
-
def search_process(process, pattern, minAddr = None,
|
|
430
|
-
maxAddr = None,
|
|
431
|
-
bufferPages = None,
|
|
432
|
-
overlapping = False):
|
|
438
|
+
def search_process(process, pattern, minAddr=None, maxAddr=None, bufferPages=None, overlapping=False):
|
|
433
439
|
"""
|
|
434
440
|
Search for the given pattern within the process memory.
|
|
435
441
|
|
|
@@ -517,38 +523,35 @@ class Search (StaticClass):
|
|
|
517
523
|
# Calculate the buffer size from the number of pages.
|
|
518
524
|
if bufferPages is None:
|
|
519
525
|
try:
|
|
520
|
-
size = MemoryAddresses
|
|
521
|
-
align_address_to_page_end(len(pattern)) + page
|
|
526
|
+
size = MemoryAddresses.align_address_to_page_end(len(pattern)) + page
|
|
522
527
|
except NotImplementedError:
|
|
523
528
|
size = None
|
|
524
529
|
elif bufferPages > 0:
|
|
525
|
-
|
|
530
|
+
size = page * (bufferPages + 1)
|
|
526
531
|
else:
|
|
527
|
-
|
|
532
|
+
size = None
|
|
528
533
|
|
|
529
534
|
# Get the memory map of the process.
|
|
530
535
|
memory_map = process.iter_memory_map(minAddr, maxAddr)
|
|
531
536
|
|
|
532
537
|
# Perform search with buffering enabled.
|
|
533
538
|
if size:
|
|
534
|
-
|
|
535
539
|
# Loop through all memory blocks containing data.
|
|
536
|
-
buffer
|
|
537
|
-
prev_addr
|
|
538
|
-
last
|
|
539
|
-
delta
|
|
540
|
+
buffer = "" # buffer to hold the memory data
|
|
541
|
+
prev_addr = 0 # previous memory block address
|
|
542
|
+
last = 0 # position of the last match
|
|
543
|
+
delta = 0 # delta of last read address and start of buffer
|
|
540
544
|
for mbi in memory_map:
|
|
541
|
-
|
|
542
545
|
# Skip blocks with no data to search on.
|
|
543
546
|
if not mbi.has_content():
|
|
544
547
|
continue
|
|
545
548
|
|
|
546
549
|
# Get the address and size of this block.
|
|
547
|
-
address
|
|
548
|
-
block_size = mbi.RegionSize
|
|
550
|
+
address = mbi.BaseAddress # current address to search on
|
|
551
|
+
block_size = mbi.RegionSize # total size of the block
|
|
549
552
|
if address >= maxAddr:
|
|
550
553
|
break
|
|
551
|
-
end = address + block_size
|
|
554
|
+
end = address + block_size # end address of the block
|
|
552
555
|
|
|
553
556
|
# If the block is contiguous to the previous block,
|
|
554
557
|
# coalesce the new data in the buffer.
|
|
@@ -558,20 +561,17 @@ class Search (StaticClass):
|
|
|
558
561
|
# If not, clear the buffer and read new data.
|
|
559
562
|
else:
|
|
560
563
|
buffer = read(process, address, min(size, block_size))
|
|
561
|
-
last
|
|
562
|
-
delta
|
|
564
|
+
last = 0
|
|
565
|
+
delta = 0
|
|
563
566
|
|
|
564
567
|
# Search for the pattern in this block.
|
|
565
568
|
while 1:
|
|
566
|
-
|
|
567
569
|
# Yield each match of the pattern in the buffer.
|
|
568
570
|
pos, length = find(buffer, last)
|
|
569
571
|
while pos >= last:
|
|
570
572
|
match_addr = address + pos - delta
|
|
571
573
|
if minAddr <= match_addr < maxAddr:
|
|
572
|
-
result = pattern.found(
|
|
573
|
-
match_addr, length,
|
|
574
|
-
buffer [ pos : pos + length ] )
|
|
574
|
+
result = pattern.found(match_addr, length, buffer[pos : pos + length])
|
|
575
575
|
if result is not None:
|
|
576
576
|
yield result
|
|
577
577
|
if overlapping:
|
|
@@ -581,9 +581,9 @@ class Search (StaticClass):
|
|
|
581
581
|
pos, length = find(buffer, last)
|
|
582
582
|
|
|
583
583
|
# Advance to the next page.
|
|
584
|
-
address
|
|
584
|
+
address = address + page
|
|
585
585
|
block_size = block_size - page
|
|
586
|
-
prev_addr
|
|
586
|
+
prev_addr = address
|
|
587
587
|
|
|
588
588
|
# Fix the position of the last match.
|
|
589
589
|
last = last - page
|
|
@@ -591,8 +591,8 @@ class Search (StaticClass):
|
|
|
591
591
|
last = 0
|
|
592
592
|
|
|
593
593
|
# Remove the first page in the buffer.
|
|
594
|
-
buffer = buffer[
|
|
595
|
-
delta
|
|
594
|
+
buffer = buffer[page:]
|
|
595
|
+
delta = page
|
|
596
596
|
|
|
597
597
|
# If we haven't reached the end of the block yet,
|
|
598
598
|
# read the next page in the block and keep seaching.
|
|
@@ -605,19 +605,17 @@ class Search (StaticClass):
|
|
|
605
605
|
|
|
606
606
|
# Perform search with buffering disabled.
|
|
607
607
|
else:
|
|
608
|
-
|
|
609
608
|
# Loop through all memory blocks containing data.
|
|
610
609
|
for mbi in memory_map:
|
|
611
|
-
|
|
612
610
|
# Skip blocks with no data to search on.
|
|
613
611
|
if not mbi.has_content():
|
|
614
612
|
continue
|
|
615
613
|
|
|
616
614
|
# Get the address and size of this block.
|
|
617
|
-
address
|
|
615
|
+
address = mbi.BaseAddress
|
|
618
616
|
block_size = mbi.RegionSize
|
|
619
617
|
if address >= maxAddr:
|
|
620
|
-
break
|
|
618
|
+
break
|
|
621
619
|
|
|
622
620
|
# Read the whole memory region.
|
|
623
621
|
buffer = process.read(address, block_size)
|
|
@@ -628,9 +626,7 @@ class Search (StaticClass):
|
|
|
628
626
|
while pos >= last:
|
|
629
627
|
match_addr = address + pos
|
|
630
628
|
if minAddr <= match_addr < maxAddr:
|
|
631
|
-
result = pattern.found(
|
|
632
|
-
match_addr, length,
|
|
633
|
-
buffer [ pos : pos + length ] )
|
|
629
|
+
result = pattern.found(match_addr, length, buffer[pos : pos + length])
|
|
634
630
|
if result is not None:
|
|
635
631
|
yield result
|
|
636
632
|
if overlapping:
|
|
@@ -640,7 +636,7 @@ class Search (StaticClass):
|
|
|
640
636
|
pos, length = find(buffer, last)
|
|
641
637
|
|
|
642
638
|
@classmethod
|
|
643
|
-
def extract_ascii_strings(cls, process, minSize
|
|
639
|
+
def extract_ascii_strings(cls, process, minSize=4, maxSize=1024):
|
|
644
640
|
"""
|
|
645
641
|
Extract ASCII strings from the process memory.
|
|
646
642
|
|
|
@@ -662,4 +658,4 @@ class Search (StaticClass):
|
|
|
662
658
|
"""
|
|
663
659
|
regexp = r"[\s\w\!\@\#\$\%%\^\&\*\(\)\{\}\[\]\~\`\'\"\:\;\.\,\\\/\-\+\=\_\<\>]{%d,%d}\0" % (minSize, maxSize)
|
|
664
660
|
pattern = RegExpPattern(regexp, 0, maxSize)
|
|
665
|
-
return cls.search_process(process, pattern, overlapping
|
|
661
|
+
return cls.search_process(process, pattern, overlapping=False)
|