示例#1
0
  def setUp(self, task_class=TurbiniaTask, evidence_class=evidence.RawDisk):
    self.task_class = task_class
    self.evidence_class = evidence_class
    self.remove_files = []
    self.remove_dirs = []

    # Set up Tasks under test
    self.base_output_dir = tempfile.mkdtemp()
    self.plaso_task = PlasoTask(base_output_dir=self.base_output_dir)
    self.plaso_task.output_manager = mock.MagicMock()
    self.plaso_task.output_manager.get_local_output_dirs.return_value = (
        None, None)
    self.task = self.task_class(base_output_dir=self.base_output_dir)
    self.task.job_name = 'PlasoJob'
    self.task.output_manager = mock.MagicMock()
    self.task.output_manager.get_local_output_dirs.return_value = (None, None)
    self.task.get_metrics = mock.MagicMock()

    # Set up RawDisk Evidence
    test_disk_path = tempfile.mkstemp(dir=self.base_output_dir)[1]
    self.remove_files.append(test_disk_path)
    self.test_stdout_path = tempfile.mkstemp(dir=self.base_output_dir)[1]
    self.remove_files.append(self.test_stdout_path)
    self.evidence = evidence.RawDisk(source_path=test_disk_path)
    self.evidence.config['abort'] = False
    self.evidence.config['globals'] = {}
    self.evidence.preprocess = mock.MagicMock()
    # Set up TurbiniaTaskResult
    self.result = TurbiniaTaskResult(base_output_dir=self.base_output_dir)

    self.result.output_dir = self.base_output_dir
示例#2
0
    def setUp(self, task_class=TurbiniaTask, evidence_class=evidence.RawDisk):
        self.task_class = task_class
        self.evidence_class = evidence_class
        self.remove_files = []
        self.remove_dirs = []

        # Set up Tasks under test
        self.base_output_dir = tempfile.mkdtemp()
        self.plaso_task = PlasoTask(base_output_dir=self.base_output_dir)
        self.plaso_task.output_manager = mock.MagicMock()
        self.plaso_task.output_manager.get_local_output_dirs.return_value = (
            None, None)
        self.task = self.task_class(base_output_dir=self.base_output_dir)
        self.task.output_manager = mock.MagicMock()
        self.task.output_manager.get_local_output_dirs.return_value = (None,
                                                                       None)

        # Set up Evidence
        test_artifact_path = tempfile.mkstemp(dir=self.base_output_dir)[1]
        self.remove_files.append(test_artifact_path)
        self.evidence = self.evidence_class(local_path=test_artifact_path)

        # Set up TurbiniaTaskResult
        self.result = TurbiniaTaskResult(base_output_dir=self.base_output_dir)
        self.result.setup(self.task)

        self.result.output_dir = self.base_output_dir
示例#3
0
    def setUp(self, _):
        self.remove_files = []
        self.remove_dirs = []
        self.state_manager = None

        config.LoadConfig()
        self.state_manager_save = config.STATE_MANAGER

        self.test_data = {
            'name': 'TestTask',
            'request_id': 'TestRequestId',
            'status': 'TestStatus',
            'saved_paths': ['testpath1', 'testpath2']
        }

        # Set up TurbiniaTask
        self.base_output_dir = tempfile.mkdtemp()
        self.task = TurbiniaTask(base_output_dir=self.base_output_dir,
                                 name=self.test_data['name'],
                                 request_id=self.test_data['request_id'])
        self.task.output_manager = mock.MagicMock()
        self.task.output_manager.get_local_output_dirs.return_value = (
            '/fake/tmp/dir', self.base_output_dir)

        # Set up TurbiniaTaskResult
        self.result = TurbiniaTaskResult(base_output_dir=self.base_output_dir)
        self.result.setup(self.task)
        self.result.status = self.test_data['status']
        self.result.saved_paths = self.test_data['saved_paths']
        self.task.result = self.result
示例#4
0
 def testTurbiniaTaskRunWrapperBadResult(self, _):
   """Test that the run wrapper recovers from run returning bad result."""
   self.unregisterMetrics()
   bad_result = 'Not a TurbiniaTaskResult'
   checked_result = TurbiniaTaskResult(base_output_dir=self.base_output_dir)
   checked_result.setup(self.task)
   checked_result.status = 'CheckedResult'
   self.setResults(run=bad_result, validate_result=checked_result)
   new_result = self.task.run_wrapper(self.evidence.__dict__)
   new_result = TurbiniaTaskResult.deserialize(new_result)
   self.task.validate_result.assert_any_call(bad_result)
   self.assertEqual(type(new_result), TurbiniaTaskResult)
   self.assertIn('CheckedResult', new_result.status)
示例#5
0
    def testTurbiniaTaskRunWrapperBadResult(self):
        """Test that the run wrapper recovers from run returning bad result."""
        bad_result = 'Not a TurbiniaTaskResult'
        checked_result = TurbiniaTaskResult(
            task=self.task, base_output_dir=self.base_output_dir)
        checked_result.status = 'CheckedResult'
        self.setResults(run=bad_result, validate_result=checked_result)

        new_result = self.task.run_wrapper(self.evidence)

        self.task.validate_result.assert_any_call(bad_result)
        self.assertEqual(type(new_result), TurbiniaTaskResult)
        self.assertIn('CheckedResult', new_result.status)
示例#6
0
    def run(results):
        """Celery task that reduces the results into one SQLite database.

    Args:
        results: List of returned values from Celery tasks.
    Returns:
        Task result object (instance of TurbiniaTaskResult) as JSON.
    """
        job_id = results[0]
        cmd_output = subprocess.check_output(
            ['/usr/local/bin/be_reducer.sh', job_id])
        result = TurbiniaTaskResult()
        result.add_result(result_type='PATH', result=cmd_output)
        return result.to_json()
示例#7
0
    def setUp(self):
        self.remove_files = []
        self.remove_dirs = []

        # Set up TurbiniaTask
        self.base_output_dir = tempfile.mkdtemp()
        self.task = TurbiniaTask(base_output_dir=self.base_output_dir)
        self.task.output_manager = mock.MagicMock()

        # Set up RawDisk Evidence
        test_disk_path = tempfile.mkstemp(dir=self.base_output_dir)[1]
        self.remove_files.append(test_disk_path)
        self.evidence = evidence.RawDisk(local_path=test_disk_path)

        # Set up TurbiniaTaskResult
        self.result = TurbiniaTaskResult(task=self.task,
                                         base_output_dir=self.base_output_dir)

        self.result.output_dir = self.base_output_dir
示例#8
0
    def run(src_path, out_path, job_id, **kwargs):
        """Task that process data with Plaso.

    Args:
        src_path: Path to data to process.
        out_path: Path to temporary storage of results.
        job_id: Unique ID for this task.

    Returns:
        Task result object (instance of TurbiniaTaskResult) as JSON.
    """
        out_path = '{0:s}/{1:s}'.format(out_path, job_id)
        if not os.path.exists(out_path):
            os.makedirs(out_path)
        cmd_output = subprocess.check_output(
            ['/usr/local/bin/plaso_wrapper.sh', src_path, out_path, job_id])
        res, version, metadata = cmd_output.split(' ', 2)
        result = TurbiniaTaskResult(version=version,
                                    metadata=json.loads(metadata))
        result.add_result(result_type='PATH', result=res)
        return result.to_json()