Esempio n. 1
0
    def get_virtual_paths_for_one_uid(self, root_uid: str = None) -> List[str]:
        '''
        Get the virtual file path (vfp) of root_uid if argument set.
        If not, similar to :func:`get_root_uid` either return paths of `self.root_uid`
        or fall back to first uid of list of all root uids.

        :param root_uid: (Optional) root uid to get vfps for.
        :return: List of virtual paths.
        '''
        file_paths = self.get_virtual_file_paths()
        req_root_uid = root_uid or self.root_uid
        if req_root_uid in file_paths:
            return file_paths[req_root_uid]
        return get_value_of_first_key(file_paths)  # fallback
Esempio n. 2
0
 def get_virtual_paths_for_one_uid(self, root_uid=None):
     '''
     returns the virtual path of root_uid if argument set
     if not: returns virtual path of self.root_uid if set
     else: return virtual_paths of first key
     '''
     try:
         file_paths = self.get_virtual_file_paths()
         req_root_uid = root_uid or self.root_uid
         if req_root_uid is None:
             return get_value_of_first_key(file_paths)
         return file_paths[req_root_uid]
     except (AttributeError, IndexError, KeyError, TypeError):
         logging.error(
             'Error on virtual file path retrieval. This should be fixed')
         return ["insufficient information: firmware analysis not complete"]
Esempio n. 3
0
 def get_virtual_paths_for_one_uid(self, root_uid=None):
     '''
     returns the virtual path of root_uid if argument set
     if not: returns virtual path of self.root_uid if set
     else: return virtual_pathes of first key
     '''
     try:
         file_paths = self.get_virtual_file_paths()
         if root_uid is not None:
             req_root_uid = root_uid
         else:
             req_root_uid = self.root_uid
         if req_root_uid is None:
             return get_value_of_first_key(file_paths)
         else:
             return file_paths[req_root_uid]
     except:
         return ["insufficient information: firmware analysis not complete"]
Esempio n. 4
0
 def generate_nice_list_data(db_iterable, root_uid):
     result = []
     for db_entry in db_iterable:
         if db_entry is not None:
             virtual_file_path = db_entry['virtual_file_path']
             result.append({
                 'uid':
                 db_entry['_id'],
                 'files_included':
                 db_entry['files_included'],
                 'size':
                 db_entry['size'],
                 'mime-type':
                 db_entry['processed_analysis']['file_type']['mime']
                 if 'file_type' in db_entry['processed_analysis'] else
                 'file-type-plugin/not-run-yet',
                 'virtual_file_paths':
                 virtual_file_path[root_uid]
                 if root_uid in virtual_file_path else
                 get_value_of_first_key(virtual_file_path)
             })
     return result
Esempio n. 5
0
TEST_FW_2 = create_test_firmware(device_class='test_class',
                                 device_name='test_firmware_2',
                                 vendor='test vendor',
                                 bin_path='container/test.7z')
TEST_TEXT_FILE = create_test_file_object()
NICE_LIST_DATA = {
    'uid':
    TEST_FW.uid,
    'files_included':
    TEST_FW.files_included,
    'size':
    TEST_FW.size,
    'mime-type':
    'file-type-plugin/not-run-yet',
    'current_virtual_path':
    get_value_of_first_key(TEST_FW.get_virtual_file_paths())
}


class MockFileObject:
    def __init__(self, binary=b'test string', file_path='/bin/ls'):
        self.binary = binary
        self.file_path = file_path
        self.processed_analysis = {
            'file_type': {
                'mime': 'application/x-executable'
            }
        }


class DatabaseMock:  # pylint: disable=too-many-public-methods
def test_get_value_of_first_key(input_data, expected):
    assert get_value_of_first_key(input_data) == expected
Esempio n. 7
0
 def test_get_value_of_first_key(self):
     test_dict = {"b": "b", "c": "c", "a": "a"}
     self.assertEqual(get_value_of_first_key(test_dict), "a",
                      "value not correct")
     self.assertEqual(get_value_of_first_key({}), None,
                      "empty dict should result in None output")
Esempio n. 8
0
 def test_get_value_of_first_key(self):
     test_dict = {'b': 'b', 'c': 'c', 'a': 'a'}
     self.assertEqual(get_value_of_first_key(test_dict), 'a',
                      'value not correct')
     self.assertEqual(get_value_of_first_key({}), None,
                      'empty dict should result in None output')