Exemple #1
0
class TestReporter:
    CONFIG = """
[reporter_tests]
enabled = on
"""

    def setUp(self):
        self.tmp = tempfile.mkdtemp()
        self.cfg = tempfile.mkstemp()[1]
        f = open(self.cfg, "w")
        f.write(self.CONFIG)
        f.close()
        self.r = Reporter(self.tmp)
        self.r.cfg = Config(self.cfg)

    def test_run_report(self):
        results = {}
        self.r._run_report(ReportMock, results)

    def test_run_report_alter_results(self):
        """@note: Regression test."""
        results = {"foo": "bar"}
        self.r._run_report(ReportAlterMock, results)
        assert_equals(results, {"foo": "bar"})

    def tearDown(self):
        os.rmdir(os.path.join(self.tmp, "reports"))
        os.rmdir(self.tmp)
        os.remove(self.cfg)
Exemple #2
0
class TestReporter:
    CONFIG = """
[reporter_tests]
enabled = on
"""

    def setUp(self):
        self.tmp = tempfile.mkdtemp()
        self.cfg = tempfile.mkstemp()[1]
        f = open(self.cfg, "w")
        f.write(self.CONFIG)
        f.close()
        self.r = Reporter(self.tmp)
        self.r.cfg = Config(self.cfg)

    def test_run_report(self):
        results = {}
        self.r._run_report(ReportMock, results)

    def test_run_report_alter_results(self):
        """@note: Regression test."""
        results = {"foo": "bar"}
        self.r._run_report(ReportAlterMock, results)
        assert_equals(results, {"foo": "bar"})

    def tearDown(self):
        os.rmdir(os.path.join(self.tmp, "reports"))
        os.rmdir(self.tmp)
        os.remove(self.cfg)
Exemple #3
0
 def setUp(self):
     self.tmp = tempfile.mkdtemp()
     self.cfg = tempfile.mkstemp()[1]
     f = open(self.cfg, "w")
     f.write(self.CONFIG)
     f.close()
     self.r = Reporter(self.tmp)
     self.r.cfg = Config(self.cfg)
    def process_results(self):
        """Process the analysis results and generate the enabled reports."""
        try:
            logs_path = os.path.join(self.storage, "logs")
            for csv in os.listdir(logs_path):
                if not '.raw' in csv: continue
                csv = os.path.join(logs_path, csv)
                if os.stat(
                        csv).st_size > self.cfg.processing.analysis_size_limit:
                    log.error(
                        "Analysis file %s is too big to be processed, "
                        "analysis aborted. Process it manually with the "
                        "provided utilities", csv)
                    return False
        except OSError as e:
            log.warning("Error accessing analysis logs (task=%d): %s",
                        self.task.id, e)

        results = Processor(self.task.id).run()
        Reporter(self.task.id).run(results)

        # 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:
            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)

        log.info("Task #%d: reports generation completed (path=%s)",
                 self.task.id, self.storage)

        return True
Exemple #5
0
 def setUp(self):
     self.tmp = tempfile.mkdtemp()
     self.cfg = tempfile.mkstemp()[1]
     f = open(self.cfg, "w")
     f.write(self.CONFIG)
     f.close()
     self.r = Reporter(self.tmp)
     self.r.cfg = Config(self.cfg)
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("id", type=str, help="ID of the analysis to process")
    parser.add_argument("-r", "--report", help="Re-generate report", action="store_true", required=False)
    parser.add_argument("-f", "--failed", help="Mark the analysis as failed", action="store_true", required=False)
    args = parser.parse_args()

    init_modules()

    if args.failed:
        results = {"success" : False}
    else:
        results = Processor(args.id).run()
        results["success"] = True

    if args.report:
        Reporter(args.id).run(results)