def test_add_file_to_current_analyses(self):
     self.scheduler.currently_running = {'parent_uid': ['foo', 'bar']}
     fo = FileObject(binary=b'foo')
     fo.parent_firmware_uids = {'parent_uid'}
     fo.files_included = ['bar', 'new']
     self.scheduler._add_to_current_analyses(fo)
     assert sorted(self.scheduler.currently_running['parent_uid']) == ['bar', 'foo', 'new']
 def _convert_to_file_object(self, entry, analysis_filter=None):
     file_object = FileObject()
     file_object.uid = entry['_id']
     file_object.size = entry['size']
     file_object.set_name(entry['file_name'])
     file_object.virtual_file_path = entry['virtual_file_path']
     file_object.parents = entry['parents']
     file_object.processed_analysis = self.retrieve_analysis(entry['processed_analysis'], analysis_filter=analysis_filter)
     file_object.files_included = set(entry['files_included'])
     file_object.parent_firmware_uids = set(entry["parent_firmware_uids"])
     for attribute in ["comments"]:  # for backwards compatibility
         if attribute in entry:
             setattr(file_object, attribute, entry[attribute])
     return file_object
Exemple #3
0
    def _convert_to_file_object(self, entry: dict, analysis_filter: List[str] = None) -> FileObject:
        file_object = FileObject()
        file_object.uid = entry['_id']
        file_object.size = entry['size']
        file_object.file_name = entry['file_name']
        file_object.virtual_file_path = entry['virtual_file_path']
        file_object.parents = entry['parents']
        file_object.processed_analysis = self.retrieve_analysis(entry['processed_analysis'], analysis_filter=analysis_filter)
        file_object.files_included = set(entry['files_included'])
        file_object.parent_firmware_uids = set(entry['parent_firmware_uids'])
        file_object.analysis_tags = entry['analysis_tags'] if 'analysis_tags' in entry else dict()

        for attribute in ['comments']:  # for backwards compatibility
            if attribute in entry:
                setattr(file_object, attribute, entry[attribute])
        return file_object
Exemple #4
0
 def test_add_duplicate_file_to_current_analyses(self):
     self.status.currently_running = {
         'parent_uid': {
             'files_to_unpack': ['foo'],
             'files_to_analyze': ['duplicate'],
             'total_files_count': 2,
             'unpacked_files_count': 3
         }
     }
     fo = FileObject(binary=b'foo')
     fo.parent_firmware_uids = {'parent_uid'}
     fo.files_included = ['duplicate']
     fo.uid = 'foo'
     self.status.add_to_current_analyses(fo)
     assert sorted(self.status.currently_running['parent_uid']
                   ['files_to_unpack']) == []
     assert sorted(self.status.currently_running['parent_uid']
                   ['files_to_analyze']) == ['duplicate', 'foo']
     assert self.status.currently_running['parent_uid'][
         'total_files_count'] == 2
Exemple #5
0
    def test_add_file_to_current_analyses(self):
        self.status.currently_running = {
            'parent_uid': {
                'files_to_unpack': ['foo'],
                'files_to_analyze': ['bar'],
                'total_files_count': 2,
                'unpacked_files_count': 1
            }
        }
        fo = FileObject(binary=b'foo')
        fo.parent_firmware_uids = {'parent_uid'}
        fo.files_included = ['bar', 'new']
        fo.uid = 'foo'
        self.status.add_to_current_analyses(fo)

        result = self.status.currently_running['parent_uid']
        assert sorted(result['files_to_unpack']) == ['new']
        assert sorted(result['files_to_analyze']) == ['bar', 'foo']
        assert result['unpacked_files_count'] == 2
        assert result['total_files_count'] == 3