def run_chunk(self, task, chunk, preprocessor): if 'enforcePipe' in task and task['enforcePipe']: logging.info("Enforcing pipe command because of task setting...") self.usePipe = True if 'usePrince' in task and task['usePrince']: # DEPRECATED full_cmd = self.build_prince_command(task, chunk) elif 'usePreprocessor' in task and task['usePreprocessor']: full_cmd = self.build_preprocessor_command(task, chunk, preprocessor) elif self.usePipe: full_cmd = self.build_pipe_command(task, chunk) else: full_cmd = self.build_command(task, chunk) self.statusCount = 0 self.wasStopped = False if Initialize.get_os() == 1: full_cmd = full_cmd.replace("/", '\\') # clear old found file - earlier we deleted them, but just in case, we just move it to a unique filename if configured so if os.path.exists("hashlists/" + str(task['hashlistId']) + ".out"): if self.config.get_value('outfile-history'): os.rename("hashlists/" + str(task['hashlistId']) + ".out", "hashlists/" + str(task['hashlistId']) + "_" + str(time.time()) + ".out") else: os.unlink("hashlists/" + str(task['hashlistId']) + ".out") # create zap folder if not os.path.exists("hashlist_" + str(task['hashlistId'])): os.mkdir("hashlist_" + str(task['hashlistId'])) logging.debug("CALL: " + full_cmd) if Initialize.get_os() != 1: process = subprocess.Popen(full_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=self.cracker_path, preexec_fn=os.setsid) else: process = subprocess.Popen(full_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=self.cracker_path) logging.debug("started cracking") out_thread = Thread(target=self.stream_watcher, name='stdout-watcher', args=('OUT', process.stdout)) err_thread = Thread(target=self.stream_watcher, name='stderr-watcher', args=('ERR', process.stderr)) crk_thread = Thread(target=self.output_watcher, name='crack-watcher', args=("hashlists/" + str(task['hashlistId']) + ".out", process)) out_thread.start() err_thread.start() crk_thread.start() self.first_status = False self.last_update = time.time() main_thread = Thread(target=self.run_loop, name='run_loop', args=(process, chunk, task)) main_thread.start() # wait for all threads to finish process.wait() crk_thread.join() out_thread.join() err_thread.join() main_thread.join() logging.info("finished chunk")
def run_chunk(self, task, chunk): args = " --machine-readable --quiet --status --remove --restore-disable --potfile-disable --session=hashtopolis" args += " --status-timer " + str(task['statustimer']) args += " --outfile-check-timer=" + str(task['statustimer']) args += " --outfile-check-dir=../hashlist_" + str(task['hashlistId']) args += " -o ../../hashlists/" + str(task['hashlistId']) + ".out" args += " --remove-timer=" + str(task['statustimer']) args += " -s " + str(chunk['skip']) args += " -l " + str(chunk['length']) args += " " + update_files(task['attackcmd']).replace(task['hashlistAlias'], "../../hashlists/" + str(task['hashlistId'])) full_cmd = self.callPath + args if Initialize.get_os() == 1: full_cmd = full_cmd.replace("/", '\\') # clear old found file if os.path.exists("hashlists/" + str(task['hashlistId']) + ".out"): os.remove("hashlists/" + str(task['hashlistId']) + ".out") # create zap folder if not os.path.exists("hashlist_" + str(task['hashlistId'])): os.mkdir("hashlist_" + str(task['hashlistId'])) logging.debug("CALL: " + full_cmd) if Initialize.get_os() != 1: proc = subprocess.Popen(full_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=self.cracker_path, preexec_fn=os.setsid) else: proc = subprocess.Popen(full_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=self.cracker_path) logging.debug("started cracking") out_thread = Thread(target=self.stream_watcher, name='stdout-watcher', args=('OUT', proc.stdout)) err_thread = Thread(target=self.stream_watcher, name='stderr-watcher', args=('ERR', proc.stderr)) crk_thread = Thread(target=self.output_watcher, name='crack-watcher', args=("hashlists/" + str(task['hashlistId']) + ".out", proc)) out_thread.start() err_thread.start() crk_thread.start() self.first_status = False self.last_update = time.time() main_thread = Thread(target=self.run_loop, name='run_loop', args=(proc, chunk, task)) main_thread.start() # wait for all threads to finish proc.wait() crk_thread.join() out_thread.join() err_thread.join() main_thread.join() logging.info("finished chunk")