forked from p15670423/monkey
Merge pull request #227 from guardicore/feature/merge-pyinstaller-spec-files
merge spec files
This commit is contained in:
commit
598455113b
|
@ -1,2 +1,2 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
pyinstaller --clean monkey-linux.spec
|
pyinstaller -F --log-level=DEBUG --clean monkey.spec
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
# -*- mode: python -*-
|
|
||||||
|
|
||||||
block_cipher = None
|
|
||||||
|
|
||||||
|
|
||||||
a = Analysis(['main.py'],
|
|
||||||
pathex=['..'],
|
|
||||||
binaries=None,
|
|
||||||
datas=None,
|
|
||||||
hiddenimports=['_cffi_backend'],
|
|
||||||
hookspath=None,
|
|
||||||
runtime_hooks=None,
|
|
||||||
excludes=None,
|
|
||||||
win_no_prefer_redirects=None,
|
|
||||||
win_private_assemblies=None,
|
|
||||||
cipher=block_cipher)
|
|
||||||
|
|
||||||
a.binaries += [('sc_monkey_runner32.so', './bin/sc_monkey_runner32.so', 'BINARY')]
|
|
||||||
a.binaries += [('sc_monkey_runner64.so', './bin/sc_monkey_runner64.so', 'BINARY')]
|
|
||||||
|
|
||||||
pyz = PYZ(a.pure, a.zipped_data,
|
|
||||||
cipher=block_cipher)
|
|
||||||
exe = EXE(pyz,
|
|
||||||
a.scripts,
|
|
||||||
a.binaries,
|
|
||||||
a.zipfiles,
|
|
||||||
a.datas,
|
|
||||||
name='monkey',
|
|
||||||
debug=False,
|
|
||||||
strip=True,
|
|
||||||
upx=True,
|
|
||||||
console=True )
|
|
|
@ -2,39 +2,114 @@
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
|
|
||||||
|
__author__ = 'itay.mizeretz'
|
||||||
|
|
||||||
|
block_cipher = None
|
||||||
|
|
||||||
# Name of zip file in monkey. That's the name of the file in the _MEI folder
|
# Name of zip file in monkey. That's the name of the file in the _MEI folder
|
||||||
MIMIKATZ_ZIP_NAME = 'tmpzipfile123456.zip'
|
MIMIKATZ_ZIP_NAME = 'tmpzipfile123456.zip'
|
||||||
|
|
||||||
|
|
||||||
def get_mimikatz_zip_path():
|
def main():
|
||||||
if platform.architecture()[0] == "32bit":
|
|
||||||
return '.\\bin\\mk32.zip'
|
|
||||||
else:
|
|
||||||
return '.\\bin\\mk64.zip'
|
|
||||||
|
|
||||||
|
|
||||||
a = Analysis(['main.py'],
|
a = Analysis(['main.py'],
|
||||||
pathex=['..'],
|
pathex=['..'],
|
||||||
hiddenimports=['_cffi_backend', 'queue'],
|
hiddenimports=get_hidden_imports(),
|
||||||
hookspath=None,
|
hookspath=None,
|
||||||
runtime_hooks=None)
|
runtime_hooks=None,
|
||||||
|
binaries=None,
|
||||||
|
datas=None,
|
||||||
|
excludes=None,
|
||||||
|
win_no_prefer_redirects=None,
|
||||||
|
win_private_assemblies=None,
|
||||||
|
cipher=block_cipher
|
||||||
|
)
|
||||||
|
|
||||||
a.binaries += [('sc_monkey_runner32.so', '.\\bin\\sc_monkey_runner32.so', 'BINARY')]
|
a.binaries += get_binaries()
|
||||||
a.binaries += [('sc_monkey_runner64.so', '.\\bin\\sc_monkey_runner64.so', 'BINARY')]
|
a.datas = process_datas(a.datas)
|
||||||
|
|
||||||
if platform.system().find("Windows") >= 0:
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||||
a.datas = [i for i in a.datas if i[0].find('Include') < 0]
|
|
||||||
a.datas += [(MIMIKATZ_ZIP_NAME, get_mimikatz_zip_path(), 'BINARY')]
|
|
||||||
|
|
||||||
pyz = PYZ(a.pure)
|
|
||||||
exe = EXE(pyz,
|
exe = EXE(pyz,
|
||||||
a.scripts,
|
a.scripts,
|
||||||
a.binaries + [('msvcr100.dll', os.environ['WINDIR'] + '\\system32\\msvcr100.dll', 'BINARY')],
|
a.binaries,
|
||||||
a.zipfiles,
|
a.zipfiles,
|
||||||
a.datas,
|
a.datas,
|
||||||
name='monkey.exe',
|
name=get_monkey_filename(),
|
||||||
debug=False,
|
debug=False,
|
||||||
strip=None,
|
strip=get_exe_strip(),
|
||||||
upx=True,
|
upx=True,
|
||||||
console=True,
|
console=True,
|
||||||
icon='monkey.ico')
|
icon=get_exe_icon())
|
||||||
|
|
||||||
|
|
||||||
|
def is_windows():
|
||||||
|
return platform.system().find("Windows") >= 0
|
||||||
|
|
||||||
|
|
||||||
|
def is_32_bit():
|
||||||
|
return platform.architecture()[0] == "32bit"
|
||||||
|
|
||||||
|
|
||||||
|
def get_bin_folder():
|
||||||
|
return os.path.join('.', 'bin')
|
||||||
|
|
||||||
|
|
||||||
|
def get_bin_file_path(filename):
|
||||||
|
return os.path.join(get_bin_folder(), filename)
|
||||||
|
|
||||||
|
|
||||||
|
def process_datas(orig_datas):
|
||||||
|
datas = orig_datas
|
||||||
|
if is_windows():
|
||||||
|
datas = [i for i in datas if i[0].find('Include') < 0]
|
||||||
|
datas += [(MIMIKATZ_ZIP_NAME, get_mimikatz_zip_path(), 'BINARY')]
|
||||||
|
return datas
|
||||||
|
|
||||||
|
|
||||||
|
def get_binaries():
|
||||||
|
binaries = get_windows_only_binaries() if is_windows() else get_linux_only_binaries()
|
||||||
|
binaries += get_sc_binaries()
|
||||||
|
return binaries
|
||||||
|
|
||||||
|
|
||||||
|
def get_windows_only_binaries():
|
||||||
|
binaries = []
|
||||||
|
binaries += get_msvcr()
|
||||||
|
return binaries
|
||||||
|
|
||||||
|
|
||||||
|
def get_linux_only_binaries():
|
||||||
|
binaries = []
|
||||||
|
return binaries
|
||||||
|
|
||||||
|
|
||||||
|
def get_hidden_imports():
|
||||||
|
return ['_cffi_backend', 'queue'] if is_windows() else ['_cffi_backend']
|
||||||
|
|
||||||
|
|
||||||
|
def get_sc_binaries():
|
||||||
|
return [(x, get_bin_file_path(x), 'BINARY') for x in ['sc_monkey_runner32.so', 'sc_monkey_runner64.so']]
|
||||||
|
|
||||||
|
|
||||||
|
def get_msvcr():
|
||||||
|
return [('msvcr100.dll', os.environ['WINDIR'] + '\\system32\\msvcr100.dll', 'BINARY')]
|
||||||
|
|
||||||
|
|
||||||
|
def get_monkey_filename():
|
||||||
|
return 'monkey.exe' if is_windows() else 'monkey'
|
||||||
|
|
||||||
|
|
||||||
|
def get_exe_strip():
|
||||||
|
return not is_windows()
|
||||||
|
|
||||||
|
|
||||||
|
def get_exe_icon():
|
||||||
|
return 'monkey.ico' if is_windows() else None
|
||||||
|
|
||||||
|
|
||||||
|
def get_mimikatz_zip_path():
|
||||||
|
mk_filename = 'mk32.zip' if is_32_bit() else 'mk64.zip'
|
||||||
|
return os.path.join(get_bin_folder(), mk_filename)
|
||||||
|
|
||||||
|
|
||||||
|
main() # We don't check if __main__ because this isn't the main script.
|
||||||
|
|
Loading…
Reference in New Issue