Exemple #1
0
 def test_file_object_init_with_binary(self):
     bin_data = get_binary_from_file('{}/test_data_file.bin'.format(
         get_test_data_dir()))
     test_object = FileObject(bin_data)
     assert test_object.sha256 == '268d870ffa2b21784e4dc955d8e8b8eb5f3bcddd6720a1e6d31d2cf84bd1bff8', 'correct sha256'
     assert test_object.file_name is None, 'correct file name'
Exemple #2
0
 def test_get_included_files_uids(self):
     test_parent = FileObject(binary=b'parent_file')
     test_child = FileObject(binary=b'1st child')
     test_child2 = FileObject(binary=b'2nd child')
     test_parent.add_included_file(test_child)
     test_parent.add_included_file(test_child2)
     assert len(test_parent.get_included_files_uids()
                ) == 2, 'number of uids not correct'
     assert test_child.uid in test_parent.get_included_files_uids(
     ), 'uid of first file not found'
     assert test_child2.uid in test_parent.get_included_files_uids(
     ), 'uid of second file not found'
Exemple #3
0
 def test_get_uid_deprecation(self, caplog):
     fo = FileObject()
     with caplog.at_level(logging.INFO):
         fo.get_uid()
         assert 'Deprecation warning' in caplog.messages[0]
Exemple #4
0
 def test_file_object_init_raw(self):
     test_object = FileObject()
     assert test_object.binary is None, 'correct binary'
Exemple #5
0
 def test_get_top_of_virtual_path(self):
     fo = FileObject()
     result = fo.get_top_of_virtual_path('foo|bar|test')
     assert result == 'test', 'top should be test'
Exemple #6
0
 def test_get_virtual_path_for_none_existing_uid(self):
     fo = FileObject(binary=b'foo')
     assert fo.get_virtual_paths_for_one_uid(root_uid='none_existing') == [
         'insufficient information: firmware analysis not complete'
     ]
 def test_is_supported_arch(self):
     fo = FileObject()
     test_data = 'ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=8e756708f62592be105b5e8b423080d38ddc8391, stripped'
     fo.processed_analysis = {'file_type': {'full': test_data}}
     assert self.analysis_plugin._is_supported_arch(fo)
 def _get_one_virtual_path_of_fo(fo_dict, root_uid):
     if root_uid is None or root_uid not in fo_dict['virtual_file_path'].keys():
         root_uid = list(fo_dict['virtual_file_path'].keys())[0]
     return FileObject.get_top_of_virtual_path(fo_dict['virtual_file_path'][root_uid][0])
    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'])
        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