def process_results(self): """Process the analysis results and generate the enabled reports.""" logger("Starting task reporting", action="task.report", status="pending") # TODO Refactor this function as currently "cuckoo process" has a 1:1 # copy of its code. TODO Also remove "archive" files. results = RunProcessing(task=self.task).run() RunSignatures(results=results).run() RunReporting(task=self.task, results=results).run() # If the target is a file and the user enabled the option, # delete the original copy. if self.task.category == "file" and self.cfg.cuckoo.delete_original: if not os.path.exists(self.task.target): log.warning( "Original file does not exist anymore: \"%s\": " "File not found.", self.task.target) else: try: os.remove(self.task.target) except OSError as e: log.error( "Unable to delete original file at path " "\"%s\": %s", self.task.target, e) # If the target is a file and the user enabled the delete copy of # the binary option, then delete the copy. if self.task.category == "file" and self.cfg.cuckoo.delete_bin_copy: if not os.path.exists(self.binary): log.warning( "Copy of the original file does not exist anymore: \"%s\": File not found", self.binary) else: try: os.remove(self.binary) except OSError as e: log.error( "Unable to delete the copy of the original file at path \"%s\": %s", self.binary, e) # Check if the binary in the analysis directory is an invalid symlink. If it is, delete it. if os.path.islink(self.storage_binary) and not os.path.exists( self.storage_binary): try: os.remove(self.storage_binary) except OSError as e: log.error( "Unable to delete symlink to the binary copy at path \"%s\": %s", self.storage_binary, e) log.info("Task #%d: reports generation completed", self.task.id, extra={ "action": "task.report", "status": "success", }) return True
def task(task_id, options, conf, results, filename="a.txt"): Folders.create(cwd(), ["conf", "storage"]) Folders.create(cwd("storage"), ["analyses", "binaries"]) Folders.create(cwd("storage", "analyses"), "%s" % task_id) Folders.create(cwd("storage", "analyses", "%s" % task_id), ["reports"]) write_cuckoo_conf({ "reporting": conf, }) task = { "id": task_id, "options": options, "target": filename, } RunReporting(task, results).run()
def process(self, signatures=True, reporting=True, processing_modules=[]): """Process, run signatures and reports the results for this task""" results = RunProcessing(task=self.task_dict).run( processing_list=processing_modules) if signatures: RunSignatures(results=results).run() if reporting: RunReporting(task=self.task_dict, results=results).run() if config("cuckoo:cuckoo:delete_original"): for target in self.targets: target.delete_original() if config("cuckoo:cuckoo:delete_bin_copy"): for target in self.targets: target.delete_copy() return True
def process(target, copy_path, task): results = RunProcessing(task=task).run() RunSignatures(results=results).run() RunReporting(task=task, results=results).run() if config("cuckoo:cuckoo:delete_original"): try: if target and os.path.exists(target): os.remove(target) except OSError as e: log.error("Unable to delete original file at path \"%s\": %s", target, e) if config("cuckoo:cuckoo:delete_bin_copy"): try: if copy_path and os.path.exists(copy_path): os.remove(copy_path) except OSError as e: log.error( "Unable to delete the copy of the original file at " "path \"%s\": %s", copy_path, e)