atomicshop 2.12.25__py3-none-any.whl → 2.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of atomicshop might be problematic. Click here for more details.
- atomicshop/__init__.py +1 -1
- atomicshop/basics/dicts.py +12 -0
- atomicshop/basics/package_module.py +10 -0
- atomicshop/diff_check.py +5 -4
- atomicshop/dns.py +0 -9
- atomicshop/etws/const.py +38 -0
- atomicshop/etws/traces/__init__.py +0 -0
- atomicshop/{etw → etws/traces}/trace_dns.py +66 -23
- atomicshop/etws/traces/trace_sysmon_process_creation.py +116 -0
- atomicshop/monitor/change_monitor.py +5 -1
- atomicshop/monitor/checks/dns.py +11 -11
- atomicshop/process.py +2 -2
- atomicshop/process_poller.py +134 -67
- atomicshop/wrappers/ctyping/etw_winapi/const.py +81 -0
- atomicshop/wrappers/loggingw/reading.py +115 -98
- atomicshop/wrappers/psutilw/psutilw.py +9 -0
- atomicshop/wrappers/sysmonw.py +153 -0
- {atomicshop-2.12.25.dist-info → atomicshop-2.13.0.dist-info}/METADATA +1 -1
- {atomicshop-2.12.25.dist-info → atomicshop-2.13.0.dist-info}/RECORD +26 -21
- /atomicshop/{etw → etws}/__init__.py +0 -0
- /atomicshop/{etw → etws}/providers.py +0 -0
- /atomicshop/{etw → etws}/sessions.py +0 -0
- /atomicshop/{etw → etws}/trace.py +0 -0
- {atomicshop-2.12.25.dist-info → atomicshop-2.13.0.dist-info}/LICENSE.txt +0 -0
- {atomicshop-2.12.25.dist-info → atomicshop-2.13.0.dist-info}/WHEEL +0 -0
- {atomicshop-2.12.25.dist-info → atomicshop-2.13.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
|
|
4
|
+
from .. import filesystem, web, process
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Define paths and configuration
|
|
8
|
+
DEFAULT_INSTALLATION_PATH: str = 'C:\\Sysmon'
|
|
9
|
+
SYSMON_FILE_NAME: str = 'Sysmon.exe'
|
|
10
|
+
SYSINTERNALS_SYSMON_URL: str = 'https://download.sysinternals.com/files/Sysmon.zip'
|
|
11
|
+
SYSMON_CONFIG_FILE_NAME: str = 'sysmonconfig.xml'
|
|
12
|
+
SYSMON_CONFIG_FILE_PATH: str = os.path.join(DEFAULT_INSTALLATION_PATH, SYSMON_CONFIG_FILE_NAME)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ConfigFileNotFoundError(Exception):
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SymonExecutableNotFoundError(Exception):
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class SysmonAlreadyRunningError(Exception):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def download_sysmon(installation_path: str = None):
|
|
28
|
+
"""
|
|
29
|
+
Install Sysmon on the system.
|
|
30
|
+
|
|
31
|
+
:param installation_path: string, full path where to put the Sysmon executable.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
if not installation_path:
|
|
35
|
+
installation_path = DEFAULT_INSTALLATION_PATH
|
|
36
|
+
|
|
37
|
+
# Check if the file exists
|
|
38
|
+
if not os.path.exists(installation_path):
|
|
39
|
+
filesystem.create_directory(installation_path)
|
|
40
|
+
|
|
41
|
+
web.download_and_extract_file(SYSINTERNALS_SYSMON_URL, installation_path)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def is_sysmon_running():
|
|
45
|
+
"""
|
|
46
|
+
Check if Sysmon is running.
|
|
47
|
+
|
|
48
|
+
:return: boolean, True if Sysmon is running, False otherwise.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
process_list: list = process.match_pattern_against_running_processes_cmdlines(
|
|
52
|
+
pattern=SYSMON_FILE_NAME, first=True, process_name_case_insensitive=True)
|
|
53
|
+
|
|
54
|
+
if process_list:
|
|
55
|
+
return True
|
|
56
|
+
else:
|
|
57
|
+
return False
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def start_as_service(
|
|
61
|
+
installation_path: str = None,
|
|
62
|
+
config_file_path: str = None,
|
|
63
|
+
use_config_in_same_directory: bool = False,
|
|
64
|
+
download_sysmon_if_not_found: bool = False,
|
|
65
|
+
skip_if_running: bool = False
|
|
66
|
+
):
|
|
67
|
+
"""
|
|
68
|
+
Start Sysmon as a service. Besides starting, it installs itself as a service, meaning that on the next boot,
|
|
69
|
+
it will start automatically.
|
|
70
|
+
|
|
71
|
+
:param installation_path: string, full path where to put the Sysmon executable.
|
|
72
|
+
:param config_file_path: string, full path to the configuration file.
|
|
73
|
+
:param use_config_in_same_directory: boolean, if True, the function will use the configuration file in the same
|
|
74
|
+
directory as the Sysmon executable.
|
|
75
|
+
:param download_sysmon_if_not_found: boolean, if True, the function will download Sysmon if it is not
|
|
76
|
+
found in the 'installation_path'.
|
|
77
|
+
:param skip_if_running: boolean,
|
|
78
|
+
True, the function will not start Sysmon if it is already running.
|
|
79
|
+
False, the function will raise 'SysmonAlreadyRunningError' exception if it is already running.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
# Check if sysmon already running.
|
|
83
|
+
if is_sysmon_running():
|
|
84
|
+
if skip_if_running:
|
|
85
|
+
return
|
|
86
|
+
else:
|
|
87
|
+
raise SysmonAlreadyRunningError("Sysmon is already running.")
|
|
88
|
+
|
|
89
|
+
if config_file_path and use_config_in_same_directory:
|
|
90
|
+
raise ValueError("You cannot use both 'config_file_path' and 'use_config_in_same_directory'.")
|
|
91
|
+
|
|
92
|
+
if use_config_in_same_directory:
|
|
93
|
+
config_file_path = SYSMON_CONFIG_FILE_PATH
|
|
94
|
+
|
|
95
|
+
# Check if the file exists
|
|
96
|
+
if not os.path.exists(config_file_path):
|
|
97
|
+
raise ConfigFileNotFoundError(f"Configuration file '{config_file_path}' not found.")
|
|
98
|
+
|
|
99
|
+
if not installation_path:
|
|
100
|
+
installation_path = DEFAULT_INSTALLATION_PATH
|
|
101
|
+
|
|
102
|
+
sysmon_file_path: str = os.path.join(installation_path, SYSMON_FILE_NAME)
|
|
103
|
+
|
|
104
|
+
# Check if the file exists
|
|
105
|
+
if not os.path.exists(sysmon_file_path):
|
|
106
|
+
if download_sysmon_if_not_found:
|
|
107
|
+
download_sysmon(installation_path)
|
|
108
|
+
else:
|
|
109
|
+
raise SymonExecutableNotFoundError(f"Sysmon executable '{sysmon_file_path}' not found.")
|
|
110
|
+
|
|
111
|
+
# Start Sysmon as a service.
|
|
112
|
+
subprocess.run([sysmon_file_path, '-accepteula', '-i', config_file_path])
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def stop_service(installation_path: str = None):
|
|
116
|
+
"""
|
|
117
|
+
Stop Sysmon service.
|
|
118
|
+
|
|
119
|
+
:param installation_path: string, full path where to put the Sysmon executable.
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
if not installation_path:
|
|
123
|
+
installation_path = DEFAULT_INSTALLATION_PATH
|
|
124
|
+
|
|
125
|
+
sysmon_file_path: str = os.path.join(installation_path, SYSMON_FILE_NAME)
|
|
126
|
+
|
|
127
|
+
# Check if the file exists
|
|
128
|
+
if not os.path.exists(sysmon_file_path):
|
|
129
|
+
raise SymonExecutableNotFoundError(f"Sysmon executable '{sysmon_file_path}' not found.")
|
|
130
|
+
|
|
131
|
+
# Stop Sysmon service.
|
|
132
|
+
subprocess.run([sysmon_file_path, '-u'])
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def change_config_on_the_fly(config_file_path: str, installation_path: str = None):
|
|
136
|
+
"""
|
|
137
|
+
Change the Sysmon configuration on the fly.
|
|
138
|
+
|
|
139
|
+
:param config_file_path: string, full path to the configuration file.
|
|
140
|
+
:param installation_path: string, full path where to put the Sysmon executable.
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
if not installation_path:
|
|
144
|
+
installation_path = DEFAULT_INSTALLATION_PATH
|
|
145
|
+
|
|
146
|
+
sysmon_file_path: str = os.path.join(installation_path, SYSMON_FILE_NAME)
|
|
147
|
+
|
|
148
|
+
# Check if the file exists
|
|
149
|
+
if not os.path.exists(sysmon_file_path):
|
|
150
|
+
raise SymonExecutableNotFoundError(f"Sysmon executable '{sysmon_file_path}' not found.")
|
|
151
|
+
|
|
152
|
+
# Change the configuration on the fly.
|
|
153
|
+
subprocess.run([sysmon_file_path, '-c', config_file_path])
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
atomicshop/__init__.py,sha256=
|
|
1
|
+
atomicshop/__init__.py,sha256=WBaPNPGU9skcNgQ8LWfW7jNFP6EyisSDfqWEliqkbZg,124
|
|
2
2
|
atomicshop/_basics_temp.py,sha256=6cu2dd6r2dLrd1BRNcVDKTHlsHs_26Gpw8QS6v32lQ0,3699
|
|
3
3
|
atomicshop/_create_pdf_demo.py,sha256=Yi-PGZuMg0RKvQmLqVeLIZYadqEZwUm-4A9JxBl_vYA,3713
|
|
4
4
|
atomicshop/_patch_import.py,sha256=ENp55sKVJ0e6-4lBvZnpz9PQCt3Otbur7F6aXDlyje4,6334
|
|
@@ -9,8 +9,8 @@ atomicshop/config_init.py,sha256=z2RXD_mw9nQlAOpuGry1h9QT-2LhNscXgGAktN3dCVQ,249
|
|
|
9
9
|
atomicshop/console_output.py,sha256=AOSJjrRryE97PAGtgDL03IBtWSi02aNol8noDnW3k6M,4667
|
|
10
10
|
atomicshop/console_user_response.py,sha256=31HIy9QGXa7f-GVR8MzJauQ79E_ZqAeagF3Ks4GGdDU,3234
|
|
11
11
|
atomicshop/datetimes.py,sha256=olsL01S5tkXk4WPzucxujqgLOh198BLgJntDnGYukRU,15533
|
|
12
|
-
atomicshop/diff_check.py,sha256=
|
|
13
|
-
atomicshop/dns.py,sha256=
|
|
12
|
+
atomicshop/diff_check.py,sha256=RJvzJhyYAZyRPKVDk1dS7UwZCx0kq__WDZ6N0rNfZUY,27110
|
|
13
|
+
atomicshop/dns.py,sha256=h4uZKoz4wbBlLOOduL1GtRcTm-YpiPnGOEGxUm7hhOI,2140
|
|
14
14
|
atomicshop/domains.py,sha256=Rxu6JhhMqFZRcoFs69IoEd1PtYca0lMCG6F1AomP7z4,3197
|
|
15
15
|
atomicshop/emails.py,sha256=I0KyODQpIMEsNRi9YWSOL8EUPBiWyon3HRdIuSj3AEU,1410
|
|
16
16
|
atomicshop/file_types.py,sha256=-0jzQMRlmU1AP9DARjk-HJm1tVE22E6ngP2mRblyEjY,763
|
|
@@ -25,9 +25,9 @@ atomicshop/on_exit.py,sha256=Wf1iy2e0b0Zu7oRxrct3VkLdQ_x9B32-z_JerKTt9Z0,5493
|
|
|
25
25
|
atomicshop/pbtkmultifile_argparse.py,sha256=aEk8nhvoQVu-xyfZosK3ma17CwIgOjzO1erXXdjwtS4,4574
|
|
26
26
|
atomicshop/permissions.py,sha256=P6tiUKV-Gw-c3ePEVsst9bqWaHJbB4ZlJB4xbDYVpEs,4436
|
|
27
27
|
atomicshop/print_api.py,sha256=DhbCQd0MWZZ5GYEk4oTu1opRFC-b31g1VWZgTGewG2Y,11568
|
|
28
|
-
atomicshop/process.py,sha256=
|
|
28
|
+
atomicshop/process.py,sha256=R1BtXWjG2g2Q3WlsyhbIlXZz0UkQeagY7fQyBOIX_DM,15951
|
|
29
29
|
atomicshop/process_name_cmd.py,sha256=CtaSp3mgxxJKCCVW8BLx6BJNx4giCklU_T7USiCEwfc,5162
|
|
30
|
-
atomicshop/process_poller.py,sha256=
|
|
30
|
+
atomicshop/process_poller.py,sha256=sEuuFu3gmUrp4tY1LVxE27L0eK5LIwNKjTbV7KtzeRM,15029
|
|
31
31
|
atomicshop/python_file_patcher.py,sha256=kd3rBWvTcosLEk-7TycNdfKW9fZbe161iVwmH4niUo0,5515
|
|
32
32
|
atomicshop/python_functions.py,sha256=zJg4ogUwECxrDD7xdDN5JikIUctITM5lsyabr_ZNsRw,4435
|
|
33
33
|
atomicshop/question_answer_engine.py,sha256=DuOn7QEgKKfqZu2cR8mVeFIfFgayfBHiW-jY2VPq_Fo,841
|
|
@@ -83,7 +83,7 @@ atomicshop/basics/argparse_template.py,sha256=horwgSf3MX1ZgRnYxtmmQuz9OU_vKrKggF
|
|
|
83
83
|
atomicshop/basics/booleans.py,sha256=va3LYIaSOhjdifW4ZEesnIQxBICNHyQjUAkYelzchhE,2047
|
|
84
84
|
atomicshop/basics/bytes_arrays.py,sha256=WvSRDhIGt1ywF95t-yNgpxLm1nlZUbM1Dz6QckcyE8Y,5915
|
|
85
85
|
atomicshop/basics/classes.py,sha256=EijW_g4EhdNBnKPMG3nT3HjFspTchtM7to6zm9Ad_Mk,9771
|
|
86
|
-
atomicshop/basics/dicts.py,sha256=
|
|
86
|
+
atomicshop/basics/dicts.py,sha256=DeYHIh940pMMBrFhpXt4dsigFVYzTrlqWymNo4Pq_Js,14049
|
|
87
87
|
atomicshop/basics/dicts_nested.py,sha256=StYxYnYPa0SEJr1lmEwAv5zfERWWqoULeyG8e0zRAwE,4107
|
|
88
88
|
atomicshop/basics/enumerations.py,sha256=41VVQYh_vnVapggxKg2IRU5e_EiMpZzX1n1mtxvoSzM,1364
|
|
89
89
|
atomicshop/basics/enums.py,sha256=CeV8MfqWHihK7vvV6Mbzq7rD9JykeQfrJeFdLVzfHI4,3547
|
|
@@ -96,16 +96,20 @@ atomicshop/basics/list_of_dicts.py,sha256=qI2uoYIcHjR8RSD5vtkqhpMgL6XTYRGJDcr9cb
|
|
|
96
96
|
atomicshop/basics/lists.py,sha256=I0C62vrDrNwCTNl0EjUZNa1Jsd8l0rTkp28GEx9QoEI,4258
|
|
97
97
|
atomicshop/basics/multiprocesses.py,sha256=nSskxJSlEdalPM_Uf8cc9kAYYlVwYM1GonBLAhCL2mM,18831
|
|
98
98
|
atomicshop/basics/numbers.py,sha256=ESX0z_7o_ok3sOmCKAUBoZinATklgMy2v-4RndqXlVM,1837
|
|
99
|
+
atomicshop/basics/package_module.py,sha256=fBd0uVgFce25ZCVtLq83iyowRlbwdWYFj_t4Ml7LU14,391
|
|
99
100
|
atomicshop/basics/randoms.py,sha256=DmYLtnIhDK29tAQrGP1Nt-A-v8WC7WIEB8Edi-nk3N4,282
|
|
100
101
|
atomicshop/basics/strings.py,sha256=T4MpEpwxqsiOSnXcwYkqMKB5okHiJfvUCO7t5kcRtBg,18316
|
|
101
102
|
atomicshop/basics/threads.py,sha256=xvgdDJdmgN0wmmARoZ-H7Kvl1GOcEbvgaeGL4M3Hcx8,2819
|
|
102
103
|
atomicshop/basics/timeit_template.py,sha256=fYLrk-X_dhdVtnPU22tarrhhvlggeW6FdKCXM8zkX68,405
|
|
103
104
|
atomicshop/basics/tracebacks.py,sha256=cNfh_oAwF55kSIdqtv3boHZQIoQI8TajxkTnwJwpweI,535
|
|
104
|
-
atomicshop/
|
|
105
|
-
atomicshop/
|
|
106
|
-
atomicshop/
|
|
107
|
-
atomicshop/
|
|
108
|
-
atomicshop/
|
|
105
|
+
atomicshop/etws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
+
atomicshop/etws/const.py,sha256=v3x_IdCYeSKbCGywiZFOZln80ldpwKW5nuMDuUe51Jg,1257
|
|
107
|
+
atomicshop/etws/providers.py,sha256=fVmWi-uGdtnsQTDpu_ty6dzx0GMhGokiST73LNBEJ38,129
|
|
108
|
+
atomicshop/etws/sessions.py,sha256=k3miewU278xn829cqDbsuH_bmZHPQE9-Zn-hINbxUSE,1330
|
|
109
|
+
atomicshop/etws/trace.py,sha256=tjBvV4RxCSn8Aoxj8NVxmqHekdECne_y4Zv2lbh11ak,5341
|
|
110
|
+
atomicshop/etws/traces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
+
atomicshop/etws/traces/trace_dns.py,sha256=wRFwfFgVgMbYJu1Sf0Yy9LPoMrf9kXejl2Xjk3PNELQ,8430
|
|
112
|
+
atomicshop/etws/traces/trace_sysmon_process_creation.py,sha256=pjb0qzNZttucEWOKv2j_BGVqaSeKjBL4O8oCsAteiGU,4785
|
|
109
113
|
atomicshop/file_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
114
|
atomicshop/file_io/csvs.py,sha256=y8cJtnlN-NNxNupzJgSeGq9aQ4wNxYLFPX9vNNlUiIc,5830
|
|
111
115
|
atomicshop/file_io/docxs.py,sha256=6tcYFGp0vRsHR47VwcRqwhdt2DQOwrAUYhrwN996n9U,5117
|
|
@@ -135,9 +139,9 @@ atomicshop/mitm/engines/__reference_general/parser___reference_general.py,sha256
|
|
|
135
139
|
atomicshop/mitm/engines/__reference_general/recorder___reference_general.py,sha256=KENDVf9OwXD9gwSh4B1XxACCe7iHYjrvnW1t6F64wdE,695
|
|
136
140
|
atomicshop/mitm/engines/__reference_general/responder___reference_general.py,sha256=1AM49UaFTKA0AHw-k3SV3uH3QbG-o6ux0c-GoWkKNU0,6993
|
|
137
141
|
atomicshop/monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
|
-
atomicshop/monitor/change_monitor.py,sha256=
|
|
142
|
+
atomicshop/monitor/change_monitor.py,sha256=eJRP7NBnA-Y_n6Ofm_jKrR5XguJV6gEmxFdtdGMBF3k,7866
|
|
139
143
|
atomicshop/monitor/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
|
-
atomicshop/monitor/checks/dns.py,sha256=
|
|
144
|
+
atomicshop/monitor/checks/dns.py,sha256=_DxInUSiiMa8Bx1sYJ6fRzRl7n_eAsoaGHhUk9XgF7w,7182
|
|
141
145
|
atomicshop/monitor/checks/file.py,sha256=2tIDSlX2KZNc_9i9ji1tcOqupbFTIOj7cKXLyBEDWMk,3263
|
|
142
146
|
atomicshop/monitor/checks/network.py,sha256=CGZWl4WlQrxayZeVF9JspJXwYA-zWx8ECWTVGSlXc98,3825
|
|
143
147
|
atomicshop/monitor/checks/process_running.py,sha256=x66wd6-l466r8sbRQaIli0yswyGt1dH2DVXkGDL6O0Q,1891
|
|
@@ -163,6 +167,7 @@ atomicshop/wrappers/pipw.py,sha256=mu4jnHkSaYNfpBiLZKMZxEX_E2LqW5BVthMZkblPB_c,1
|
|
|
163
167
|
atomicshop/wrappers/process_wrapper_pbtk.py,sha256=ycPmBRnv627RWks6N8OhxJQe8Gu3h3Vwj-4HswPOw0k,599
|
|
164
168
|
atomicshop/wrappers/pycharmw.py,sha256=OHcaVlyhIqhgRioPhkeS5krDZ_NezZjpBCvyRiLjWwI,2723
|
|
165
169
|
atomicshop/wrappers/pyopensslw.py,sha256=OBWxA6EJ2vU_Qlf4M8m6ilcG3hyYB4yB0EsXUf7NhEU,6804
|
|
170
|
+
atomicshop/wrappers/sysmonw.py,sha256=5D_tl6Y0j9bHSDaoUsipe6ZZYxnXjRnOLis8e5FZ2cI,5215
|
|
166
171
|
atomicshop/wrappers/ubuntu_terminal.py,sha256=BBZD3EH6KSDORd5IZBZM-ti4U6Qh1sZwftx42s7hqB4,10917
|
|
167
172
|
atomicshop/wrappers/wslw.py,sha256=AKphiHLSddL7ErevUowr3f9Y1AgGz_R3KZ3NssW07h8,6959
|
|
168
173
|
atomicshop/wrappers/certauthw/certauth.py,sha256=hKedW0DOWlEigSNm8wu4SqHkCQsGJ1tJfH7s4nr3Bk0,12223
|
|
@@ -170,7 +175,7 @@ atomicshop/wrappers/certauthw/certauthw.py,sha256=4WvhjANI7Kzqrr_nKmtA8Kf7B6rute
|
|
|
170
175
|
atomicshop/wrappers/ctyping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
171
176
|
atomicshop/wrappers/ctyping/process_winapi.py,sha256=QcXL-ETtlSSkoT8F7pYle97ubGWsjYp8cx8HxkVMgAc,2762
|
|
172
177
|
atomicshop/wrappers/ctyping/etw_winapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
173
|
-
atomicshop/wrappers/ctyping/etw_winapi/const.py,sha256=
|
|
178
|
+
atomicshop/wrappers/ctyping/etw_winapi/const.py,sha256=jq5nms2qu4FsuXuq3vaHjz9W4ILt9GY-C7CQ8VKcpyg,5764
|
|
174
179
|
atomicshop/wrappers/ctyping/etw_winapi/etw_functions.py,sha256=3DLVXpTeOyTND35T_dKGzKnlLVQ0R3zt3AEcW2bNLNc,5304
|
|
175
180
|
atomicshop/wrappers/ctyping/msi_windows_installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
176
181
|
atomicshop/wrappers/ctyping/msi_windows_installer/base.py,sha256=Uu9SlWLsQQ6mjE-ek-ptHcmgiI3Ruah9bdZus70EaVY,4884
|
|
@@ -223,7 +228,7 @@ atomicshop/wrappers/loggingw/formatters.py,sha256=mUtcJJfmhLNrwUVYShXTmdu40dBaJu
|
|
|
223
228
|
atomicshop/wrappers/loggingw/handlers.py,sha256=2A_3Qy1B0RvVWZmQocAB6CmpqlXoKJ-yi6iBWG2jNLo,8274
|
|
224
229
|
atomicshop/wrappers/loggingw/loggers.py,sha256=DHOOTAtqkwn1xgvLHSkOiBm6yFGNuQy1kvbhG-TDog8,2374
|
|
225
230
|
atomicshop/wrappers/loggingw/loggingw.py,sha256=m6YySEedP3_4Ik1S_uGMxETSbmRkmMYmAZxhHBlXSlo,16616
|
|
226
|
-
atomicshop/wrappers/loggingw/reading.py,sha256=
|
|
231
|
+
atomicshop/wrappers/loggingw/reading.py,sha256=bsSUM9_epMO2L-lHBEULFxeqdxXOHfICt-1BtQZn7lA,16712
|
|
227
232
|
atomicshop/wrappers/nodejsw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
228
233
|
atomicshop/wrappers/nodejsw/install_nodejs.py,sha256=QZg-R2iTQt7kFb8wNtnTmwraSGwvUs34JIasdbNa7ZU,5154
|
|
229
234
|
atomicshop/wrappers/playwrightw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -239,7 +244,7 @@ atomicshop/wrappers/playwrightw/waits.py,sha256=308fdOu6YDqQ7K7xywj7R27sSmFanPBQ
|
|
|
239
244
|
atomicshop/wrappers/psutilw/cpus.py,sha256=w6LPBMINqS-T_X8vzdYkLS2Wzuve28Ydp_GafTCngrc,236
|
|
240
245
|
atomicshop/wrappers/psutilw/disks.py,sha256=3ZSVoommKH1TWo37j_83frB-NqXF4Nf5q5mBCX8G4jE,9221
|
|
241
246
|
atomicshop/wrappers/psutilw/memories.py,sha256=_S0aL8iaoIHebd1vOFrY_T9aROM5Jx2D5CvDh_4j0Vc,528
|
|
242
|
-
atomicshop/wrappers/psutilw/psutilw.py,sha256=
|
|
247
|
+
atomicshop/wrappers/psutilw/psutilw.py,sha256=q3EwgprqyrR4zLCjl4l5DHFOQoukEvQMIPjNB504oQ0,21262
|
|
243
248
|
atomicshop/wrappers/psycopgw/psycopgw.py,sha256=XJvVf0oAUjCHkrYfKeFuGCpfn0Oxj3u4SbKMKA1508E,7118
|
|
244
249
|
atomicshop/wrappers/pywin32w/console.py,sha256=LstHajPLgXp9qQxFNR44QfH10nOnNp3bCJquxaTquns,1175
|
|
245
250
|
atomicshop/wrappers/pywin32w/winshell.py,sha256=i2bKiMldPU7_azsD5xGQDdMwjaM7suKJd3k0Szmcs6c,723
|
|
@@ -260,8 +265,8 @@ atomicshop/wrappers/socketw/socket_server_tester.py,sha256=AhpurHJmP2kgzHaUbq5ey
|
|
|
260
265
|
atomicshop/wrappers/socketw/socket_wrapper.py,sha256=aXBwlEIJhFT0-c4i8iNlFx2It9VpCEpsv--5Oqcpxao,11624
|
|
261
266
|
atomicshop/wrappers/socketw/ssl_base.py,sha256=k4V3gwkbq10MvOH4btU4onLX2GNOsSfUAdcHmL1rpVE,2274
|
|
262
267
|
atomicshop/wrappers/socketw/statistics_csv.py,sha256=t3dtDEfN47CfYVi0CW6Kc2QHTEeZVyYhc57IYYh5nmA,826
|
|
263
|
-
atomicshop-2.
|
|
264
|
-
atomicshop-2.
|
|
265
|
-
atomicshop-2.
|
|
266
|
-
atomicshop-2.
|
|
267
|
-
atomicshop-2.
|
|
268
|
+
atomicshop-2.13.0.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
|
|
269
|
+
atomicshop-2.13.0.dist-info/METADATA,sha256=m6jCKh9vX3yFeWZn_wgOmq5M-FK2Czr6eypskj7TVHo,10478
|
|
270
|
+
atomicshop-2.13.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
271
|
+
atomicshop-2.13.0.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
|
|
272
|
+
atomicshop-2.13.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|