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 CHANGED
@@ -1,4 +1,4 @@
1
1
  """Atomic Basic functions and classes to make developer life easier"""
2
2
 
3
3
  __author__ = "Den Kras"
4
- __version__ = '3.2.2'
4
+ __version__ = '3.2.4'
@@ -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
- # def get_listening_addresses() -> list[str]:
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
- # return ENGINES_LIST
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(client_message: ClientMessage) -> list[bytes]:
183
- requests: list = [requester.create_request(client_message)]
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(client_message)
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.
@@ -2,6 +2,7 @@
2
2
  from atomicshop.mitm.engines.__parent.responder___parent import ResponderParent
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
@@ -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 = "C:\\test\\address.txt"\n')
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) and not (isinstance(value, tuple) and isinstance(value, dict)):
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atomicshop
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: Atomic functions and classes to make developer life easier
5
5
  Author: Denis Kras
6
6
  License: MIT License
@@ -1,4 +1,4 @@
1
- atomicshop/__init__.py,sha256=70BfoIO6JBzrKV38FM49ynfFG1PLqvsrdtKa2Pktmzg,122
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=6vAuksHxZhwejwqL0S66mcI95Fe43I5dsjLYA-wDZ-I,8474
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=E_DNvP4lbbcoeFziiG10Aa7bg7Ka09wdwV_uqaRm5rU,32554
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=N4JVoC7PXN8GxUBXvNCXS-ZA5ag6rXqYXyZ3EyHOcLM,10318
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=_1aoB-ety98szV__2jnn6cohxmrClU5mOnf6u-nq_Zc,5762
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=mKHR1xrfx0CCO74vv164Fr_dVDhptqvYsE3ORoM4_7k,5107
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=yXw8cJ5_0XlupnEtEhqyOR4rvQEAg68Ok39vKa8vKZY,1949
159
- atomicshop/mitm/engines/__reference_general/responder___reference_general.py,sha256=zVMmON1sy6HH-A35uZZuAURBMfKS5X9ivkPVjPl-sCw,9654
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=3SA6hNgw-iBWYl3l1t3RBxRYB4BH-FbTs9gzmcg_Q8w,8710
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.2.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
341
- atomicshop-3.2.2.dist-info/METADATA,sha256=GI9Mys6D0riUhhQh2NHEjMo3RL7shkzDK932yeGCuDM,10670
342
- atomicshop-3.2.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
343
- atomicshop-3.2.2.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
344
- atomicshop-3.2.2.dist-info/RECORD,,
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,,