atomicshop 3.2.2__py3-none-any.whl → 3.2.4__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/mitm/config_static.py +14 -9
- atomicshop/mitm/connection_thread_worker.py +7 -3
- atomicshop/mitm/engines/__parent/requester___parent.py +1 -1
- atomicshop/mitm/engines/__reference_general/requester___reference_general.py +2 -1
- atomicshop/mitm/engines/__reference_general/responder___reference_general.py +1 -0
- atomicshop/mitm/engines/create_module_template.py +2 -2
- atomicshop/mitm/initialize_engines.py +4 -0
- atomicshop/wrappers/pywin32w/wmis/wmi_helpers.py +1 -1
- {atomicshop-3.2.2.dist-info → atomicshop-3.2.4.dist-info}/METADATA +1 -1
- {atomicshop-3.2.2.dist-info → atomicshop-3.2.4.dist-info}/RECORD +14 -14
- {atomicshop-3.2.2.dist-info → atomicshop-3.2.4.dist-info}/LICENSE.txt +0 -0
- {atomicshop-3.2.2.dist-info → atomicshop-3.2.4.dist-info}/WHEEL +0 -0
- {atomicshop-3.2.2.dist-info → atomicshop-3.2.4.dist-info}/top_level.txt +0 -0
atomicshop/__init__.py
CHANGED
atomicshop/mitm/config_static.py
CHANGED
|
@@ -3,7 +3,7 @@ from dataclasses import dataclass
|
|
|
3
3
|
from typing import Literal
|
|
4
4
|
|
|
5
5
|
from . import import_config
|
|
6
|
-
|
|
6
|
+
from .message import ClientMessage
|
|
7
7
|
|
|
8
8
|
# CONFIG = None
|
|
9
9
|
LIST_OF_BOOLEANS: list = [
|
|
@@ -173,14 +173,19 @@ def load_config(config_toml_file_path: str):
|
|
|
173
173
|
return result
|
|
174
174
|
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
176
|
+
def get_listening_addresses(client_message: ClientMessage) -> dict:
|
|
177
|
+
"""
|
|
178
|
+
Get the list of listening addresses from the TCPServer configuration.
|
|
179
|
+
If no_engines_usage_to_listen_addresses_enable is True, return the no_engines_listening_address_list.
|
|
180
|
+
Otherwise, return an empty list.
|
|
181
|
+
"""
|
|
182
|
+
|
|
183
|
+
for engine in ENGINES_LIST:
|
|
184
|
+
if engine.engine_name == client_message.engine_name:
|
|
185
|
+
return {
|
|
186
|
+
'domain_target_dict': engine.domain_target_dict,
|
|
187
|
+
'port_target_dict': engine.port_target_dict
|
|
188
|
+
}
|
|
184
189
|
|
|
185
190
|
|
|
186
191
|
# ============ Server Tester Specific ===============
|
|
@@ -179,8 +179,11 @@ def thread_worker_main(
|
|
|
179
179
|
|
|
180
180
|
network_logger.info("Thread Finished. Will continue listening on the Main thread")
|
|
181
181
|
|
|
182
|
-
def create_requester_request(
|
|
183
|
-
|
|
182
|
+
def create_requester_request(
|
|
183
|
+
client_message: ClientMessage,
|
|
184
|
+
sending_socket: socket.socket
|
|
185
|
+
) -> list[bytes]:
|
|
186
|
+
requests: list = [requester.create_request(client_message, sending_socket=sending_socket)]
|
|
184
187
|
|
|
185
188
|
# Output first 100 characters of all the requests in the list.
|
|
186
189
|
for request_raw_bytes_single in requests:
|
|
@@ -414,7 +417,8 @@ def thread_worker_main(
|
|
|
414
417
|
# Now send it to requester/responder.
|
|
415
418
|
if side == 'Client':
|
|
416
419
|
# Send to requester.
|
|
417
|
-
bytes_to_send_list: list[bytes] = create_requester_request(
|
|
420
|
+
bytes_to_send_list: list[bytes] = create_requester_request(
|
|
421
|
+
client_message, sending_socket=sending_socket)
|
|
418
422
|
|
|
419
423
|
# If we're in offline mode, then we'll put the request to the responder right away.
|
|
420
424
|
if config_static.MainConfig.offline:
|
|
@@ -109,7 +109,7 @@ class RequesterParent:
|
|
|
109
109
|
|
|
110
110
|
return request_raw_bytes
|
|
111
111
|
|
|
112
|
-
def create_request(self, class_client_message: ClientMessage):
|
|
112
|
+
def create_request(self, class_client_message: ClientMessage, **kwargs) -> bytes:
|
|
113
113
|
""" This function should be overridden in the child class. """
|
|
114
114
|
|
|
115
115
|
request_bytes: bytes = class_client_message.request_raw_bytes
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
from atomicshop.mitm.engines.__parent.requester___parent import RequesterParent
|
|
3
3
|
from atomicshop.mitm.shared_functions import create_custom_logger
|
|
4
4
|
from atomicshop.mitm.message import ClientMessage
|
|
5
|
+
from atomicshop.mitm import config_static
|
|
5
6
|
|
|
6
7
|
"""
|
|
7
8
|
import time
|
|
@@ -23,7 +24,7 @@ class RequesterGeneral(RequesterParent):
|
|
|
23
24
|
|
|
24
25
|
self.logger = create_custom_logger()
|
|
25
26
|
|
|
26
|
-
# def create_request(self, class_client_message: ClientMessage):
|
|
27
|
+
# def create_request(self, class_client_message: ClientMessage, **kwargs) -> bytes:
|
|
27
28
|
# # noinspection GrazieInspection
|
|
28
29
|
# """
|
|
29
30
|
# For more examples check the responder.
|
|
@@ -82,8 +82,8 @@ class CreateModuleTemplate:
|
|
|
82
82
|
config_lines_list.append(f'domains = [{", ".join(domains_with_quotes)}]')
|
|
83
83
|
config_lines_list.append('localhost = 1\n')
|
|
84
84
|
config_lines_list.append('[on_port_connect]')
|
|
85
|
-
config_lines_list.append('#5000 = "31.31.31.31"')
|
|
86
|
-
config_lines_list.append('#5000 = "
|
|
85
|
+
config_lines_list.append('#5000 = "31.31.31.31:443"')
|
|
86
|
+
config_lines_list.append('#5000 = "ip_port_address.txt"\n')
|
|
87
87
|
config_lines_list.append('[mtls]')
|
|
88
88
|
config_lines_list.append('# "subdomain.domain.com" = "file_name_in_current_dir.pem"\n')
|
|
89
89
|
# config_lines_list.append(f'\n')
|
|
@@ -85,6 +85,10 @@ class ModuleCategory:
|
|
|
85
85
|
for port, value in self.on_port_connect.items():
|
|
86
86
|
self.port_target_dict[port] = {'ip': None, 'port': int(port)}
|
|
87
87
|
|
|
88
|
+
# If it is not an IP address (e.g. <IP:PORT>) it will be treated as file path.
|
|
89
|
+
if ':' not in value:
|
|
90
|
+
self.on_port_connect[port] = f'{engine_directory_path}{os.sep}{value}'
|
|
91
|
+
|
|
88
92
|
for subdomain, file_name in self.mtls.items():
|
|
89
93
|
self.mtls[subdomain] = f'{engine_directory_path}{os.sep}{file_name}'
|
|
90
94
|
|
|
@@ -143,7 +143,7 @@ def call_method(
|
|
|
143
143
|
"""
|
|
144
144
|
|
|
145
145
|
# Assign the single value to a tuple if it is not already a tuple or dict and not an EmptyValue.
|
|
146
|
-
if not isinstance(value, EmptyValue
|
|
146
|
+
if not isinstance(value, (EmptyValue, tuple, dict)):
|
|
147
147
|
value = (value,)
|
|
148
148
|
|
|
149
149
|
# Get the method instance out of the WMI object.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
atomicshop/__init__.py,sha256=
|
|
1
|
+
atomicshop/__init__.py,sha256=tQatAAnQOtX4NdF28ZY2ktnZhdEOfGQyz-1n7OSRnCI,122
|
|
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
|
|
@@ -134,29 +134,29 @@ atomicshop/file_io/tomls.py,sha256=vZ_Wng5alLf8z6HSEZj7PS0XKDA-Iies9ihVWOkTcKo,1
|
|
|
134
134
|
atomicshop/file_io/xlsxs.py,sha256=v_dyg9GD4LqgWi6wA1QuWRZ8zG4ZwB6Dz52ytdcmmmI,2184
|
|
135
135
|
atomicshop/file_io/xmls.py,sha256=zh3SuK-dNaFq2NDNhx6ivcf4GYCfGM8M10PcEwDSpxk,2104
|
|
136
136
|
atomicshop/mitm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
137
|
-
atomicshop/mitm/config_static.py,sha256=
|
|
137
|
+
atomicshop/mitm/config_static.py,sha256=9lnSmGuNKUnN0-IskhObA0XJeLvm63vXD2QiNAUTIb8,8751
|
|
138
138
|
atomicshop/mitm/config_toml_editor.py,sha256=2p1CMcktWRR_NW-SmyDwylu63ad5e0-w1QPMa8ZLDBw,1635
|
|
139
|
-
atomicshop/mitm/connection_thread_worker.py,sha256=
|
|
139
|
+
atomicshop/mitm/connection_thread_worker.py,sha256=52mnpc0ajOc47y-oNU0VEXtJL9payB_i1KEPcyBiRhc,32710
|
|
140
140
|
atomicshop/mitm/import_config.py,sha256=_RJPxoVEEsJQwQY-K_8qPw2PbzsDcV23_sEJEWSKqXY,17831
|
|
141
|
-
atomicshop/mitm/initialize_engines.py,sha256=
|
|
141
|
+
atomicshop/mitm/initialize_engines.py,sha256=EYGW6gEYVETmmh9uNdsFT89YAdzeducFTIkdF-as33s,10534
|
|
142
142
|
atomicshop/mitm/message.py,sha256=CDhhm4BTuZE7oNZCjvIZ4BuPOW4MuIzQLOg91hJaxDI,3065
|
|
143
143
|
atomicshop/mitm/mitm_main.py,sha256=at9uxnXF_4b273HRXt9UGkERkHantRTOAvRtlYYI68E,30774
|
|
144
144
|
atomicshop/mitm/recs_files.py,sha256=ZAAD0twun-FtmbSniXe3XQhIlawvANNB_HxwbHj7kwI,3151
|
|
145
145
|
atomicshop/mitm/shared_functions.py,sha256=0lzeyINd44sVEfFbahJxQmz6KAMWbYrW5ou3UYfItvw,1777
|
|
146
146
|
atomicshop/mitm/statistic_analyzer.py,sha256=5_sAYGX2Xunzo_pS2W5WijNCwr_BlGJbbOO462y_wN4,27533
|
|
147
147
|
atomicshop/mitm/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
|
-
atomicshop/mitm/engines/create_module_template.py,sha256=
|
|
148
|
+
atomicshop/mitm/engines/create_module_template.py,sha256=2ceRWPzofpRf-R8VAMgXrx2D7vumkhfsrr120YFGgH0,5764
|
|
149
149
|
atomicshop/mitm/engines/create_module_template_main_example.py,sha256=LeQ44Rp2Gi_KbIDY_4OMS0odkSK3zFZWra_oAka5eJY,243
|
|
150
150
|
atomicshop/mitm/engines/__parent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
151
151
|
atomicshop/mitm/engines/__parent/parser___parent.py,sha256=HHaCXhScl3OlPjz6eUxsDpJaZyk6BNuDMc9xCkeo2Ws,661
|
|
152
152
|
atomicshop/mitm/engines/__parent/recorder___parent.py,sha256=I5RNNtqc2DRIm1E9grOkTvk9F79mfJvTl9vfVEUgcLE,6010
|
|
153
|
-
atomicshop/mitm/engines/__parent/requester___parent.py,sha256=
|
|
153
|
+
atomicshop/mitm/engines/__parent/requester___parent.py,sha256=j3QYOfQFEPSzIEWihkssNcfaLWC8cpdpi-ciPgjKNBc,5126
|
|
154
154
|
atomicshop/mitm/engines/__parent/responder___parent.py,sha256=mtiS_6ej9nxT9UhAQR4ftMqnqL-j_kO3u8KEaoEaI9k,9495
|
|
155
155
|
atomicshop/mitm/engines/__reference_general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
156
156
|
atomicshop/mitm/engines/__reference_general/parser___reference_general.py,sha256=57MEPZMAjTO6xBDZ-yt6lgGJyqRrP0Do5Gk_cgCiPns,2998
|
|
157
157
|
atomicshop/mitm/engines/__reference_general/recorder___reference_general.py,sha256=El2_YHLoHUCiKfkAmGlXxtFpmSjsUFdsb8I1MvSAFaM,653
|
|
158
|
-
atomicshop/mitm/engines/__reference_general/requester___reference_general.py,sha256=
|
|
159
|
-
atomicshop/mitm/engines/__reference_general/responder___reference_general.py,sha256=
|
|
158
|
+
atomicshop/mitm/engines/__reference_general/requester___reference_general.py,sha256=Qz0VCYK38qqzWP38guuAunZtz1YHQQ6S_XfRZTFS_ZQ,2011
|
|
159
|
+
atomicshop/mitm/engines/__reference_general/responder___reference_general.py,sha256=Q0XKe_dP4Xm3BrUgCn-rUr_n7cjZCkol4moz_Ice0HM,9697
|
|
160
160
|
atomicshop/mitm/statistic_analyzer_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
161
161
|
atomicshop/mitm/statistic_analyzer_helper/analyzer_helper.py,sha256=pk6L1t1ea1kvlBoR9QEJptOmaX-mumhwLsP2GCKukbk,5920
|
|
162
162
|
atomicshop/mitm/statistic_analyzer_helper/moving_average_helper.py,sha256=UnnY_FSTiXEfZ8SkDKU2s2qpgPYu1oOT99ghmY-zzas,19992
|
|
@@ -317,7 +317,7 @@ atomicshop/wrappers/pywin32w/wmis/msft_netipaddress.py,sha256=Kn2gQsyEquM5QQkdF2
|
|
|
317
317
|
atomicshop/wrappers/pywin32w/wmis/win32_networkadapterconfiguration.py,sha256=CnHFac1FT6cnH1VwHUyD6vZr6FKPxY8fpbj-1s2_Mzg,11327
|
|
318
318
|
atomicshop/wrappers/pywin32w/wmis/win32networkadapter.py,sha256=iao4OK6u097uRacw6vQuya1kOtJzLA1IM4cgo6UCWLM,3941
|
|
319
319
|
atomicshop/wrappers/pywin32w/wmis/win32process.py,sha256=qMzXtJ5hBZ5ydAyqpDbSx0nO2RJQL95HdmV5SzNKMhk,6826
|
|
320
|
-
atomicshop/wrappers/pywin32w/wmis/wmi_helpers.py,sha256=
|
|
320
|
+
atomicshop/wrappers/pywin32w/wmis/wmi_helpers.py,sha256=Ng5pbWeQBNcPqfFuxHEIdkIUeSDAi8w-NjclXlQHfo8,8662
|
|
321
321
|
atomicshop/wrappers/socketw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
322
322
|
atomicshop/wrappers/socketw/accepter.py,sha256=4I9ORugRDvwaqSzm_gWSjZnRwQGY8hDTlCdsYHwH_ZE,2377
|
|
323
323
|
atomicshop/wrappers/socketw/base.py,sha256=EcosGkD8VzgBY3GeIHDSG29ThQfXwg3-GQPmBTAqTdw,3048
|
|
@@ -337,8 +337,8 @@ atomicshop/wrappers/socketw/statistics_csv.py,sha256=WcNyaqEZ82S5-f3kzqi1nllNT2N
|
|
|
337
337
|
atomicshop/wrappers/winregw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
338
338
|
atomicshop/wrappers/winregw/winreg_installed_software.py,sha256=Qzmyktvob1qp6Tjk2DjLfAqr_yXV0sgWzdMW_9kwNjY,2345
|
|
339
339
|
atomicshop/wrappers/winregw/winreg_network.py,sha256=ih0BVNwByLvf9F_Lac4EdmDYYJA3PzMvmG0PieDZrsE,9905
|
|
340
|
-
atomicshop-3.2.
|
|
341
|
-
atomicshop-3.2.
|
|
342
|
-
atomicshop-3.2.
|
|
343
|
-
atomicshop-3.2.
|
|
344
|
-
atomicshop-3.2.
|
|
340
|
+
atomicshop-3.2.4.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
|
|
341
|
+
atomicshop-3.2.4.dist-info/METADATA,sha256=RbrrGTEzttTM8d-VagjhDT9b1h--ystZjXkmc4GtT2c,10670
|
|
342
|
+
atomicshop-3.2.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
343
|
+
atomicshop-3.2.4.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
|
|
344
|
+
atomicshop-3.2.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|