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'
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'
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]
def test_file_object_init_raw(self): test_object = FileObject() assert test_object.binary is None, 'correct binary'
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'
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