Skip to content

data structures

Peter Weidenbach edited this page Aug 7, 2018 · 2 revisions

File Object

Processed Analysis

FileObject.processed_analysis is a dictionary of the following structure:

{
    'PLUGIN_NAME': {
                     'FEATURE_1': SOME_DATA,
                     'FEATURE_2': SOME_DATA,
                     'summary': ['feature 1', 'feature 2']
                 }
}

Virtual File Path

FileObject.virtual_file_path is a dictionary of the following structure:

{
    'UID_fw1': [
                   'UID_fw1|UID_container1|UID_container2|/foo/bar/file.txt',
                   'UID_fw1|/foo/file.txt'
               ],
    'UID_fw2': [
                   'UID_fw2|/foo/bar/file.txt'
               ]
}

The dictionary consists of one entry for each firmware that includes the file. The entries are lists of strings. Each entry is the path of one occurrence of the file. The string consists of the container UIDs seperated by '|'. The last part is not a UID but the actual path of the file in the last container.

In the example above the file is present in two firmware images fw1 and fw2 with uids UID_fw1 and UID_fw2. fw1 includes the file two times. The first occurrence is in container_2, which is included in container_1, which is included in fw1. Thereby '/foo/bar/file.txt' is the path of the file inside container_2. The second occourence is just below the fw1 root container.