mirror of
https://github.com/indetectables-net/toolkit.git
synced 2026-10-24 16:54:27 +00:00
Add new custom folder icon logic
This commit is contained in:
1 parent
bea3f74f13
commit
178c13746b
1 file changed
+54
-24
@@ -41,6 +41,7 @@ class GenerateInstaller:
|
||||
self.base_path = ''
|
||||
self.section_name = ''
|
||||
self.tool_name = ''
|
||||
self.tool_iss_component = ''
|
||||
self.section_list = []
|
||||
self.cli_list = []
|
||||
self.valid_folders = [
|
||||
@@ -151,6 +152,7 @@ class GenerateInstaller:
|
||||
def iterate_sections(self, folder_path, output_path):
|
||||
"""Iterate through sections in the given folder path and generate ISS files."""
|
||||
self.base_path = folder_path
|
||||
|
||||
for item in pathlib.Path(folder_path).iterdir():
|
||||
# check that the folder is valid for analysis
|
||||
if item.is_dir() and item.name.lower() in self.valid_folders:
|
||||
@@ -170,33 +172,60 @@ class GenerateInstaller:
|
||||
def iterate_folder(self, folder_path):
|
||||
"""Iterate through folders and process each tool."""
|
||||
# add folder desktop.ini support
|
||||
self.section_list.append('[Run]')
|
||||
self.section_list.append(
|
||||
'Filename: "attrib.exe"; '
|
||||
f'Parameters: "+s +h ""{{#MySrcDir}}\\toolkit\\{self.absolute_to_local_path(folder_path.absolute())}\\desktop.ini"""; '
|
||||
'Flags: runhidden; '
|
||||
)
|
||||
self.section_list.append('')
|
||||
self.section_list.append('')
|
||||
self.section_list.append('')
|
||||
self.generate_folder_icon(folder_path)
|
||||
|
||||
# iterate sub folders
|
||||
for item in pathlib.Path(folder_path).iterdir():
|
||||
if item.is_dir():
|
||||
print(colorama.Fore.YELLOW + f'[+] Process: {item.name}')
|
||||
self.tool_name = item.name
|
||||
self.tool_iss_component = f'{component_name(self.section_name)}\\{component_name(item.name)}"'
|
||||
|
||||
self.iterate_tool(item)
|
||||
self.section_list.append('')
|
||||
self.section_list.append('')
|
||||
|
||||
def generate_folder_icon(self, folder_path):
|
||||
"""Generate desktop.ini setup."""
|
||||
folder_path_name = self.absolute_to_local_path(folder_path.absolute())
|
||||
iss_component = component_name(self.section_name)
|
||||
iss_source = f'{{#MySrcDir}}\\toolkit\\{self.absolute_to_local_path(folder_path.absolute())}'
|
||||
iss_dest = f'{{#MyAppToolsFolder}}\\{self.section_name}'
|
||||
|
||||
self.section_list.append('[Files]')
|
||||
self.section_list.append(
|
||||
f'Source: "{iss_source}\\desktop.ini"; '
|
||||
f'DestDir: "{iss_dest}"; '
|
||||
f'Components: "{iss_component}"; '
|
||||
'Flags: ignoreversion; '
|
||||
)
|
||||
self.section_list.append(
|
||||
f'Source: "{iss_source}\\folder.ico"; '
|
||||
f'DestDir: "{iss_dest}"; '
|
||||
f'Components: "{iss_component}"; '
|
||||
'Flags: ignoreversion; '
|
||||
)
|
||||
self.section_list.append('')
|
||||
|
||||
|
||||
self.section_list.append('[Run]')
|
||||
self.section_list.append(
|
||||
'Filename: "attrib.exe"; '
|
||||
f'Parameters: "+s +h ""{{#MyAppToolsFolder}}\\toolkit\\{folder_path_name}\\desktop.ini"""; '
|
||||
f'Components: "{iss_component}"; '
|
||||
'Flags: runhidden; '
|
||||
)
|
||||
self.section_list.append('')
|
||||
self.section_list.append('')
|
||||
self.section_list.append('')
|
||||
|
||||
def iterate_tool(self, folder_path, is_sub_folder=False):
|
||||
"""Process each tool in the folder."""
|
||||
if not is_sub_folder:
|
||||
self.section_list.append(f'; {self.tool_name}')
|
||||
self.section_list.append('[Components]')
|
||||
self.section_list.append(
|
||||
f'Name: "{component_name(self.section_name)}\\{component_name(self.tool_name)}"; '
|
||||
f'Name: "{self.tool_iss_component}"; '
|
||||
f'Description: "{self.tool_name}"; '
|
||||
f'Types: {self.iss_types()}; '
|
||||
)
|
||||
@@ -206,7 +235,7 @@ class GenerateInstaller:
|
||||
self.section_list.append(
|
||||
f'Source: "{{#MySrcDir}}\\toolkit\\{self.absolute_to_local_path(folder_path.absolute())}\\*"; '
|
||||
f'DestDir: "{{#MyAppToolsFolder}}\\{self.section_name}\\{self.tool_name}"; '
|
||||
f'Components: "{component_name(self.section_name)}\\{component_name(self.tool_name)}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
'Flags: ignoreversion recursesubdirs createallsubdirs; '
|
||||
)
|
||||
self.section_list.append('')
|
||||
@@ -253,7 +282,6 @@ class GenerateInstaller:
|
||||
iss_name = f'{self.tool_name} x64' if pe_data['is_x64'] else self.tool_name
|
||||
iss_filename = f'{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(exe_path)}'
|
||||
iss_working_dir = f'{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}'
|
||||
iss_components = f'{component_name(self.section_name)}\\{component_name(self.tool_name)}'
|
||||
iss_parameters = f'Parameters: "/K ""{iss_filename}""";' if pe_data['is_cli'] else ''
|
||||
iss_icon = f'IconFilename: "{iss_filename}";' if pe_data['is_cli'] else ''
|
||||
iss_check = 'Check: Is64BitInstallMode;' if pe_data['is_x64'] else ''
|
||||
@@ -269,7 +297,7 @@ class GenerateInstaller:
|
||||
print(colorama.Fore.MAGENTA + f' [!] CLI exe')
|
||||
iss_filename = f'{{sys}}\\cmd.exe'
|
||||
self.cli_list_append(
|
||||
iss_components,
|
||||
self.tool_iss_component,
|
||||
f'\\{self.absolute_to_local_path(working_dir)}',
|
||||
)
|
||||
|
||||
@@ -278,7 +306,7 @@ class GenerateInstaller:
|
||||
f'Name: "{{group}}\\{iss_name}"; '
|
||||
f'Filename: "{iss_filename}"; '
|
||||
f'WorkingDir: "{iss_working_dir}"; '
|
||||
f'Components: "{iss_components}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
f'{iss_parameters} '
|
||||
f'{iss_icon} '
|
||||
f'{iss_check} '
|
||||
@@ -287,7 +315,7 @@ class GenerateInstaller:
|
||||
f'Name: "{{#MyAppBinsFolder}}\\sendto\\sendto\\{self.section_name}\\{iss_name}"; '
|
||||
f'Filename: "{iss_filename}"; '
|
||||
f'WorkingDir: "{iss_working_dir}"; '
|
||||
f'Components: "{iss_components}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
f'{iss_parameters} '
|
||||
f'{iss_icon} '
|
||||
f'{iss_check} '
|
||||
@@ -321,22 +349,23 @@ class GenerateInstaller:
|
||||
print(colorama.Fore.GREEN + f' [*] Adding jar: "{str(pathlib.Path(jar_path).name)}"')
|
||||
tool_jar_path = self.absolute_to_local_path(jar_path)
|
||||
working_dir = str(pathlib.Path(jar_path).parent)
|
||||
iss_working_dir = f'{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}'
|
||||
|
||||
self.section_list.append('[Icons]')
|
||||
self.section_list.append(
|
||||
f'Name: "{{group}}\\{self.tool_name}"; '
|
||||
# f'Filename: "java -jar {{#MyAppToolsFolder}}\\{tool_jar_path}"; '
|
||||
f'Filename: "{{#MyAppToolsFolder}}\\{tool_jar_path}"; '
|
||||
f'WorkingDir: "{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}"; '
|
||||
f'Components: "{component_name(self.section_name)}\\{component_name(self.tool_name)}"; '
|
||||
f'WorkingDir: "{iss_working_dir}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
f'IconFilename: "{self.get_tool_icon()}";'
|
||||
)
|
||||
self.section_list.append(
|
||||
f'Name: "{{#MyAppBinsFolder}}\\sendto\\sendto\\{self.section_name}\\{self.tool_name}"; '
|
||||
# f'Filename: "java -jar {{#MyAppToolsFolder}}\\{tool_jar_path}"; '
|
||||
f'Filename: "{{#MyAppToolsFolder}}\\{tool_jar_path}"; '
|
||||
f'WorkingDir: "{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}"; '
|
||||
f'Components: "{component_name(self.section_name)}\\{component_name(self.tool_name)}"; '
|
||||
f'WorkingDir: "{iss_working_dir}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
f'IconFilename: "{self.get_tool_icon()}";'
|
||||
)
|
||||
self.section_list.append('')
|
||||
@@ -358,29 +387,30 @@ class GenerateInstaller:
|
||||
print(colorama.Fore.GREEN + f' [*] Adding py: "{str(pathlib.Path(py_path).name)}"')
|
||||
tool_py_path = self.absolute_to_local_path(py_path)
|
||||
working_dir = str(pathlib.Path(py_path).parent)
|
||||
iss_working_dir = f'{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}'
|
||||
|
||||
self.section_list.append('[Icons]')
|
||||
self.section_list.append(
|
||||
f'Name: "{{group}}\\{self.tool_name}"; '
|
||||
f'Filename: "{{sys}}\\cmd.exe"; '
|
||||
f'Parameters: "/K python ""{{#MyAppToolsFolder}}\\{tool_py_path}"""; '
|
||||
f'WorkingDir: "{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}"; '
|
||||
f'Components: "{component_name(self.section_name)}\\{component_name(self.tool_name)}"; '
|
||||
f'WorkingDir: "{iss_working_dir}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
f'IconFilename: "{self.get_tool_icon()}";'
|
||||
)
|
||||
self.section_list.append(
|
||||
f'Name: "{{#MyAppBinsFolder}}\\sendto\\sendto\\{self.section_name}\\{self.tool_name}"; '
|
||||
f'Filename: "{{sys}}\\cmd.exe"; '
|
||||
f'Parameters: "/K python ""{{#MyAppToolsFolder}}\\{tool_py_path}"""; '
|
||||
f'WorkingDir: "{{#MyAppToolsFolder}}\\{self.absolute_to_local_path(working_dir)}"; '
|
||||
f'Components: "{component_name(self.section_name)}\\{component_name(self.tool_name)}"; '
|
||||
f'WorkingDir: "{iss_working_dir}"; '
|
||||
f'Components: "{self.tool_iss_component}"; '
|
||||
f'IconFilename: "{self.get_tool_icon()}";'
|
||||
)
|
||||
self.section_list.append('')
|
||||
|
||||
def cli_env_extra_code(self, output_path):
|
||||
"""Generate additional CLI environment code for ISS."""
|
||||
# first check if content exist
|
||||
# first check if any cli executable used
|
||||
if not self.cli_list:
|
||||
return
|
||||
|
||||
|
||||
Reference in new issue
Block a user