diff --git a/genindex.html b/genindex.html index eab0e9706..bfc5c72c6 100644 --- a/genindex.html +++ b/genindex.html @@ -150,11 +150,13 @@

A

  • analysis_exception (objects.file.FileObject attribute)
  • - - + +
  • Backend.analysis_status_update_interval
  • Backend.binary_search
  • Backend.block_delay
  • Backend.collector_worker_count
  • @@ -335,6 +336,11 @@ +
    +
    +analysis_status_update_interval: float = 4.5
    +
    +
    diff --git a/objects.inv b/objects.inv index 48115ca91..48465feb9 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/searchindex.js b/searchindex.js index bf74f54ff..e9979f1a6 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "main", "migration", "modules/analysis", "modules/analysis.plugin", "modules/analysis.plugin.plugin", "modules/config", "modules/conftest", "modules/helperFunctions", "modules/helperFunctions.compare_sets", "modules/helperFunctions.data_conversion", "modules/helperFunctions.database", "modules/helperFunctions.docker", "modules/helperFunctions.fileSystem", "modules/helperFunctions.hash", "modules/helperFunctions.install", "modules/helperFunctions.logging", "modules/helperFunctions.merge_generators", "modules/helperFunctions.object_conversion", "modules/helperFunctions.pdf", "modules/helperFunctions.plugin", "modules/helperFunctions.process", "modules/helperFunctions.program_setup", "modules/helperFunctions.tag", "modules/helperFunctions.task_conversion", "modules/helperFunctions.uid", "modules/helperFunctions.virtual_file_path", "modules/helperFunctions.web_interface", "modules/helperFunctions.yara_binary_search", "modules/objects", "modules/objects.file", "modules/objects.firmware", "modules/plugins", "modules/plugins.installer", "modules/scheduler", "modules/scheduler.analysis", "modules/scheduler.analysis.plugin", "modules/scheduler.analysis.scheduler", "modules/test", "modules/test.unit", "modules/test.unit.conftest", "modules/web_interface", "modules/web_interface.rest", "modules/web_interface.rest.helper"], "filenames": ["index.rst", "main.rst", "migration.rst", "modules/analysis.rst", "modules/analysis.plugin.rst", "modules/analysis.plugin.plugin.rst", "modules/config.rst", "modules/conftest.rst", "modules/helperFunctions.rst", "modules/helperFunctions.compare_sets.rst", "modules/helperFunctions.data_conversion.rst", "modules/helperFunctions.database.rst", "modules/helperFunctions.docker.rst", "modules/helperFunctions.fileSystem.rst", "modules/helperFunctions.hash.rst", "modules/helperFunctions.install.rst", "modules/helperFunctions.logging.rst", "modules/helperFunctions.merge_generators.rst", "modules/helperFunctions.object_conversion.rst", "modules/helperFunctions.pdf.rst", "modules/helperFunctions.plugin.rst", "modules/helperFunctions.process.rst", "modules/helperFunctions.program_setup.rst", "modules/helperFunctions.tag.rst", "modules/helperFunctions.task_conversion.rst", "modules/helperFunctions.uid.rst", "modules/helperFunctions.virtual_file_path.rst", "modules/helperFunctions.web_interface.rst", "modules/helperFunctions.yara_binary_search.rst", "modules/objects.rst", "modules/objects.file.rst", "modules/objects.firmware.rst", "modules/plugins.rst", "modules/plugins.installer.rst", "modules/scheduler.rst", "modules/scheduler.analysis.rst", "modules/scheduler.analysis.plugin.rst", "modules/scheduler.analysis.scheduler.rst", "modules/test.rst", "modules/test.unit.rst", "modules/test.unit.conftest.rst", "modules/web_interface.rst", "modules/web_interface.rest.rst", "modules/web_interface.rest.helper.rst"], "titles": ["About", "Challenges", "Upgrading FACT from 3 to 4", "analysis", "analysis.plugin", "analysis.plugin.plugin", "config", "conftest", "helperFunctions", "helperFunctions.compare_sets module", "helperFunctions.data_conversion module", "helperFunctions.database module", "helperFunctions.docker module", "helperFunctions.fileSystem module", "helperFunctions.hash module", "helperFunctions.install module", "helperFunctions.logging module", "helperFunctions.merge_generators module", "helperFunctions.object_conversion module", "helperFunctions.pdf module", "helperFunctions.plugin module", "helperFunctions.process module", "helperFunctions.program_setup module", "helperFunctions.tag module", "helperFunctions.task_conversion module", "helperFunctions.uid module", "helperFunctions.virtual_file_path module", "helperFunctions.uid web_interface", "helperFunctions.yara_binary_search module", "objects", "objects.file module", "objects.firmware module", "plugins", "plugins.installer module", "scheduler", "scheduler.analysis", "scheduler.analysis.plugin", "scheduler.analysis.scheduler", "test", "test.unit", "conftest", "web_interface", "web_interface.rest", "web_interface.rest.helper module"], "terms": {"The": [0, 1, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 19, 21, 22, 24, 27, 28, 30, 31, 33, 36, 37, 40, 43], "firmwar": [0, 5, 10, 13, 19, 22, 24, 28, 29, 30, 37], "analysi": [0, 2, 19, 20, 21, 22, 24, 30, 31, 34, 43], "comparison": [0, 2, 10, 22], "tool": [0, 1, 19, 22], "fact": [0, 1, 10, 13, 15, 21, 22, 28, 30, 31, 43], "i": [0, 1, 2, 5, 6, 7, 9, 10, 12, 13, 15, 16, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31, 33, 36, 37, 43], "intend": 0, "autom": [0, 1], "secur": [0, 1], "router": [0, 31], "iot": 0, "uefi": 0, "webcam": 0, "drone": 0, "therebi": 0, "shall": [0, 31, 43], "easi": 0, "us": [0, 2, 5, 6, 10, 12, 14, 15, 16, 21, 22, 30, 31, 33, 37, 40, 43], "web": [0, 1, 10, 27, 37], "ui": [0, 30, 37], "extend": 0, "plug": [0, 1], "system": [0, 5, 15, 31, 43], "integr": 0, "rest": [0, 1, 9, 37, 41], "api": [0, 1, 37, 43], "challeng": 0, "instal": [0, 2, 8, 32], "screenshot": 0, "contribut": 0, "latest": 0, "new": [0, 2, 9, 21, 30, 37], "contact": 0, "author": [0, 30], "acknowledg": 0, "sourc": 0, "code": [0, 5, 6, 10, 14, 43], "upgrad": [0, 15], "from": [0, 5, 6, 9, 10, 13, 15, 16, 22, 24, 26, 27, 30, 31, 43], "3": [0, 5, 10, 22, 37], "4": [0, 1, 5, 6, 22], "index": [0, 21], "modul": [0, 6, 8, 29, 32, 37, 41, 42], "search": [0, 1, 28], "page": [0, 19, 43], "tough": 1, "lot": [1, 30], "task": [1, 24, 28, 34, 35, 36, 37, 40], "mani": 1, "can": [1, 2, 5, 6, 7, 10, 22, 27, 30, 31, 33, 36, 37, 40], "either": [1, 14, 15, 22, 28, 30], "approach": 1, "incorpor": 1, "exist": [1, 2, 24, 37], "so": [1, 10, 27, 30, 37], "analyst": 1, "focu": [1, 28], "hi": 1, "main": 1, "analyz": [1, 3, 4, 5, 31, 36, 37], "vulner": 1, "implement": [1, 19], "thi": [1, 2, 5, 6, 7, 12, 15, 16, 21, 22, 28, 30, 31, 33, 36, 37, 40, 43], "lead": [1, 5], "more": [1, 5, 6, 14, 22], "complet": [1, 2, 31, 33, 37], "well": 1, "massiv": 1, "speedup": 1, "hunt": 1, "see": [1, 5, 6, 7, 14, 21, 22, 31, 33, 36, 37, 40], "pictur": 1, "blow": 1, "veri": 1, "time": [1, 10, 30, 31, 43], "consum": 1, "At": 1, "first": [1, 2, 10, 14, 30], "you": [1, 2, 5, 6, 7, 22, 30, 33], "have": [1, 2, 7, 13, 15, 22, 23, 30, 37], "identifi": [1, 10, 15, 24, 25, 27, 30, 31, 43], "contain": [1, 5, 9, 12, 15, 16, 18, 19, 21, 23, 24, 25, 26, 28, 30, 31, 36, 37, 43], "format": [1, 8, 16, 27, 31], "afterward": [1, 15, 37], "need": [1, 2, 7, 13, 36, 37], "an": [1, 5, 6, 7, 9, 13, 15, 17, 19, 20, 21, 22, 24, 27, 28, 30, 31, 37, 40], "appropri": 1, "unpack": [1, 6, 13, 21, 30, 37, 40], "If": [1, 7, 10, 12, 15, 21, 22, 27, 30, 33], "avail": 1, "might": [1, 5, 27, 30, 37, 43], "try": [1, 21, 28], "file": [1, 5, 6, 13, 15, 18, 19, 24, 26, 27, 28, 29, 31, 33, 36, 37], "carver": 1, "like": [1, 7, 30], "binwalk": 1, "least": [1, 30], "some": [1, 5, 6, 10, 13, 22, 26, 30], "compon": [1, 21, 22], "when": [1, 2, 6, 15], "finish": [1, 36, 37], "must": [1, 5, 6, 16, 33], "re": [1, 21], "do": [1, 33], "each": [1, 9, 15, 20, 30, 31, 37], "layer": [1, 30], "multipl": [1, 15, 30], "whole": 1, "process": [1, 5, 6, 7, 8, 36, 37], "next": [1, 30], "out": [1, 15, 26, 27, 37], "much": 1, "about": 1, "possibl": [1, 9], "potenti": 1, "risk": 1, "A": [1, 5, 7, 9, 10, 12, 15, 16, 17, 21, 22, 23, 24, 26, 27, 28, 30, 33, 36, 37, 40], "few": 1, "solv": 1, "ar": [1, 5, 6, 12, 15, 21, 25, 26, 28, 30, 31, 36, 37], "list": [1, 5, 6, 9, 10, 14, 15, 16, 17, 20, 21, 23, 25, 26, 27, 28, 30, 37, 40, 43], "below": 1, "softwar": [1, 22], "identif": 1, "which": [1, 2, 5, 7, 10, 12, 15, 19, 27, 31, 33, 36, 37], "o": 1, "program": [1, 15, 22], "present": [1, 27, 30, 31, 37], "version": [1, 2, 4, 5, 22, 29, 30, 31, 37], "servic": 1, "start": [1, 2, 7, 15, 21, 31, 34, 35, 36, 37], "boot": 1, "ani": [1, 5, 6, 7, 9, 10, 16, 21, 22, 24, 27, 30, 33, 36, 37, 40], "known": 1, "cve": 1, "login": 1, "credenti": 1, "especi": 1, "hard": 1, "password": [1, 6, 27], "crypto": 1, "materi": 1, "detect": 1, "privat": 1, "kei": [1, 10, 30, 36], "certif": 1, "cpu": 1, "architectur": 1, "emul": 1, "disassembl": 1, "check": [1, 9, 13, 15, 21, 25, 27, 28, 37], "execut": [1, 12, 15, 21, 33, 36, 37], "util": [1, 10], "qemu": 1, "fuzz": 1, "debug": [1, 16, 30], "look": [1, 6, 30], "flaw": 1, "cwe": 1, "In": [1, 5, 21, 31], "case": [1, 15, 21, 24], "want": [1, 2, 7], "compar": [1, 10, 20, 21], "sampl": 1, "For": [1, 15, 19, 30, 31], "instanc": [1, 5, 6, 7, 12, 21, 31, 37, 40], "know": 1, "where": [1, 5, 20, 37, 40], "manufactur": 1, "fix": [1, 5], "issu": 1, "Or": 1, "your": [1, 2, 7, 22], "devic": [1, 27, 31], "origin": 1, "provid": [1, 9, 28, 31, 37, 40], "thei": [1, 5, 37], "differ": [1, 23, 27, 37], "part": [1, 6, 29, 30, 31], "chang": [1, 5, 15], "further": [1, 37], "investig": 1, "again": 1, "abl": [1, 2], "equal": 1, "share": 1, "therefor": 1, "store": [1, 24, 30, 31, 37], "all": [1, 2, 5, 8, 9, 12, 15, 19, 21, 23, 25, 26, 28, 30, 31, 36, 37], "result": [1, 2, 5, 19, 28, 30, 37, 43], "searchabl": 1, "databas": [1, 2, 6, 8, 24, 28, 30, 31, 37], "byte": [1, 10, 13, 14, 24, 25, 28, 30, 31], "pattern": [1, 28], "kind": 1, "script": [1, 2], "ubuntu": [1, 15], "18": [1, 22], "04": 1, "depend": [1, 2, 4, 5, 35, 36, 37, 43], "automat": [1, 16], "support": [1, 7, 15], "19": 1, "debian": [1, 15], "9": [1, 5], "10": [1, 6, 10, 21, 27], "kali": [1, 15], "2019": 1, "howev": 1, "minor": [1, 5], "becaus": [1, 15], "we": [1, 31], "activ": 1, "develop": 1, "platform": 1, "bug": [1, 5], "pleas": 1, "tell": 1, "u": 1, "readm": 1, "detail": [1, 19, 22], "furthermor": 1, "gui": 1, "right": [1, 15], "awai": 1, "without": [1, 22, 26, 27, 37], "knowledg": 1, "base": [1, 5, 6, 7, 15, 16, 19, 21, 23, 24, 28, 30, 31, 33, 36, 37, 40], "concept": 1, "extractor": [1, 13], "featur": 1, "function": [1, 6, 12, 14, 21, 28, 30, 37, 43], "ins": 1, "found": [1, 5, 9, 12, 15, 26], "": [1, 13, 15, 30, 37], "manual": 1, "sinc": 1, "cover": 1, "almost": 1, "our": 1, "document": [1, 7, 40], "There": [1, 15, 31], "wai": 1, "write": 1, "own": 1, "repositori": 1, "under": [1, 22], "favorit": 1, "licens": [1, 22], "It": [1, 5, 6, 7, 30, 31, 40], "ad": [1, 5, 21, 40], "local": [1, 30], "git": 1, "submodul": 1, "would": [1, 5, 30], "love": 1, "hear": 1, "go": 1, "welcom": 1, "improv": 1, "fact_cor": [1, 5, 15], "guidelin": [1, 43], "befor": [1, 21, 37], "creat": [1, 13, 18, 19, 21, 24, 43], "pull": [1, 33], "request": [1, 7, 12, 24, 27, 40, 43], "No": [1, 37], "matter": 1, "how": [1, 5], "question": 1, "hesit": 1, "ask": 1, "follow": [1, 7, 37], "twitter": 1, "fandctool": 1, "get": [1, 9, 10, 13, 21, 26, 27, 28, 30, 31, 37, 43], "mail": 1, "fraunhof": [1, 22], "fkie": [1, 15, 22], "commun": [1, 12], "partli": 1, "financ": 1, "german": 1, "feder": 1, "offic": 1, "inform": [1, 5, 6, 18, 30, 36, 37, 43], "bsi": 1, "board": 1, "live": 1, "github": [1, 15], "With": 2, "releas": [2, 31], "0": [2, 7, 10, 13, 21, 30, 37], "wa": [2, 5, 6, 10, 12, 21, 27, 30], "switch": 2, "mongodb": [2, 27, 43], "postgresql": 2, "To": 2, "simpli": [2, 37], "rerun": 2, "python3": 2, "src": [2, 13], "py": 2, "old": [2, 21], "migrat": 2, "mongod": 2, "config": [2, 13, 28, 34, 35, 36, 37], "conf": 2, "Then": 2, "migrate_db_to_postgresql": 2, "after": [2, 6, 12, 15, 16, 27, 30, 36, 37], "should": [2, 5, 7, 15, 21, 22, 30, 37], "normal": [2, 7], "find": [2, 15], "data": [2, 5, 10, 14, 24, 25, 30, 31, 43], "doe": [2, 7, 15, 21], "anymor": 2, "mai": [2, 5, 6, 10, 15, 21, 23, 31, 33, 37], "uninstal": 2, "m": [2, 22], "pip": [2, 15, 33], "pymongo": 2, "sudo": [2, 15], "apt": [2, 33], "remov": [2, 9, 13, 15], "org": [2, 22], "plugin": [3, 6, 7, 8, 30, 31, 34, 35, 37, 43], "analysisfailederror": [3, 4, 5], "analysispluginv0": [3, 4, 5, 7, 36], "metadata": [3, 4, 5, 30], "schema": [3, 4, 5], "get_analysi": [3, 4, 5], "get_tag": [3, 4, 5], "summar": [3, 4, 5], "tag": [3, 4, 5, 8, 29, 30, 31], "color": [3, 4, 5, 16, 23, 27, 30, 31], "name": [3, 4, 5, 6, 7, 12, 15, 21, 22, 24, 27, 30, 31, 36, 37, 43], "propag": [3, 4, 5, 30, 31, 37], "valu": [3, 4, 5, 10, 15, 21, 27, 28, 30, 31, 36, 37, 43], "descript": [4, 5, 22, 37], "mime_blacklist": [4, 5, 37], "mime_whitelist": [4, 5, 37], "system_vers": [4, 5], "timeout": [4, 5, 7, 12, 15, 21, 35, 36], "except": [5, 8, 12, 15, 21, 28, 30, 33, 36, 37], "class": [5, 6, 7, 15, 16, 21, 23, 27, 28, 30, 31, 33, 36, 37, 40], "object": [5, 9, 10, 13, 14, 15, 16, 18, 23, 24, 27, 28, 33, 36, 37, 40], "abstract": 5, "inherit": [5, 30], "mustn": 5, "t": [5, 6, 7, 15, 17, 33], "paramet": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 27, 28, 30, 31, 33, 36, 37, 40, 43], "arg": [5, 6, 7, 12, 21, 22, 36, 40], "kwarg": [5, 6, 7, 12, 15, 21, 31, 36, 40], "basemodel": [5, 6, 7, 36, 40], "describ": 5, "return": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 36, 37, 40, 43], "type": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 24, 25, 26, 27, 28, 30, 31, 36, 37, 40, 43], "str": [5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 21, 24, 25, 26, 27, 28, 30, 31, 33, 36, 37, 43], "mimetyp": 5, "option": [5, 15, 21, 22, 28, 30, 31, 37], "none": [5, 6, 10, 16, 21, 24, 26, 27, 28, 30, 31, 33, 37, 40, 43], "back": [5, 10, 15], "e": [5, 9, 10, 13, 15, 21, 25, 27, 30, 37], "g": [5, 9, 10, 21, 25, 27, 37], "yara": [5, 28], "int": [5, 6, 10, 12, 21, 27, 36, 37, 43], "300": [5, 12], "expect": [5, 7, 15], "take": [5, 30], "longer": 5, "than": [5, 33], "second": [5, 14, 21, 27, 36], "given": [5, 7, 15, 19, 27, 28, 30, 37], "abort": [5, 36], "reach": [5, 12, 21], "semver": 5, "here": 5, "quick": 5, "summari": [5, 30], "relat": [5, 13, 30, 33], "major": 5, "didn": 5, "patch": [5, 6, 7], "crash": 5, "note": 5, "reschedul": 5, "But": 5, "backward": 5, "compat": [5, 16, 27], "still": 5, "shown": [5, 37], "frontend": [5, 6, 7], "file_handl": 5, "virtual_file_path": [5, 8, 29, 30, 35, 36], "analys": [5, 37], "noth": 5, "io": 5, "fileio": 5, "dict": [5, 6, 7, 10, 24, 26, 27, 28, 30, 31, 36, 37, 40, 43], "virtual": [5, 15, 26, 27, 30, 31, 36], "path": [5, 6, 13, 15, 19, 26, 27, 30, 31, 35, 36], "fileobject": [5, 10, 18, 26, 29, 30, 31, 36, 37], "pydant": [5, 36], "dictionari": [5, 10, 18, 31, 36, 37, 43], "anyth": [5, 10, 33], "final": 5, "categori": 5, "group": [5, 21, 31], "view": 5, "includ": [5, 15, 28, 30, 31, 37, 43], "exampl": [5, 7, 15], "busybox": 5, "1": [5, 30, 37], "29": 5, "linux": 5, "kernel": [5, 31], "250": 5, "sqlite": 5, "8": [5, 22], "11": 5, "software_compon": 5, "applic": 5, "zip": 5, "text": [5, 16], "plain": 5, "file_typ": 5, "Will": 5, "onli": [5, 6, 9, 25, 26, 28, 30, 37], "call": [5, 6, 7, 19, 33, 37, 40], "did": 5, "dataclass": 5, "conveni": [5, 12], "structur": [5, 30], "defin": [5, 7, 16, 30, 31], "doc": [5, 21], "analysis_tag": [5, 29, 30, 31], "helperfunct": [5, 31], "tagcolor": [5, 8, 23, 31], "bool": [5, 6, 7, 9, 10, 12, 13, 15, 21, 25, 27, 28, 33, 37, 43], "fals": [5, 7, 9, 10, 12, 13, 15, 21, 25, 27, 28, 33, 40], "whether": [5, 7, 12, 15, 27, 33], "parent": [5, 26, 29, 30], "addit": 5, "tooltip": 5, "backend": [6, 7, 21, 30], "common": [6, 7], "binarysearch": 6, "max_strings_per_match": 6, "plugindefault": 6, "base_port": 6, "delai": 6, "float": [6, 21, 27, 30, 36], "max_depth": 6, "memory_limit": 6, "2048": 6, "throttle_limit": 6, "whitelist": [6, 30, 31, 37], "binary_search": 6, "block_delai": 6, "collector_worker_count": 6, "2": [6, 30, 37], "firmware_file_storage_directori": [6, 7], "intercom_poll_delai": 6, "plugin_default": 6, "scheduling_worker_count": 6, "ssdeep_ignor": 6, "throw_except": [6, 21], "analysispreset": 6, "log": [6, 8, 12, 15, 21], "file_backend": 6, "tmp": 6, "fact_backend": 6, "file_databas": 6, "fact_databas": 6, "file_frontend": 6, "fact_frontend": 6, "level": [6, 16, 30], "warn": [6, 8, 16, 23], "postgr": 6, "admin_pw": 6, "admin_us": 6, "del_pw": 6, "del_us": 6, "port": 6, "ro_pw": 6, "ro_us": 6, "rw_pw": 6, "rw_user": 6, "server": 6, "test_databas": 6, "redi": 6, "fact_db": 6, "host": [6, 15, 30], "test_db": 6, "analysis_preset": 6, "docker_mount_base_dir": [6, 7], "temp_dir_path": 6, "authent": 6, "enabl": 6, "password_salt": 6, "user_databas": 6, "hasura": 6, "admin_secret": 6, "33333": 6, "ajax_stats_reload_tim": 6, "communication_timeout": 6, "60": 6, "max_elements_per_chart": 6, "number_of_latest_firmwares_to_displai": 6, "radare2_url": 6, "results_per_pag": 6, "proxi": 6, "neither": 6, "nor": 6, "load": [6, 30, 37], "locat": 6, "toml": 6, "read": [6, 15], "These": [6, 13], "access": [6, 21], "via": 6, "import": [6, 31], "reason": [6, 43], "test": [6, 7, 40], "alreadi": [6, 15, 24, 27], "up": [6, 22, 30], "runtim": [6, 37], "blog": 6, "entri": [6, 30, 31, 37], "analysisplugintestconfig": 7, "configur": [7, 15, 21, 28, 37, 40], "analysis_plugin": 7, "fixtur": [7, 40], "init_kwarg": 7, "keyword": [7, 12, 15], "argument": [7, 15], "plugin_class": 7, "constructor": 7, "Not": [7, 30, 31], "most": [7, 43], "probabl": [7, 30], "analysisplugin": 7, "alia": [7, 40], "analysisbaseplugin": 7, "start_process": 7, "worker": [7, 21, 34, 35, 36], "_patch_config": 7, "suppli": 7, "marker": [7, 40], "same": [7, 21, 31], "fit": [7, 22], "necessari": [7, 10, 15], "pytest": 7, "def": 7, "my_fancy_plugin": 7, "make": [7, 15, 21], "sure": 7, "assert": 7, "isinst": 7, "myfancyplugin": 7, "custom": 7, "thing": 7, "db_interfac": [7, 37], "customdbmock": 7, "yield": 7, "set": [7, 15, 21, 22, 25, 26, 28, 30, 31, 37], "true": [7, 9, 10, 13, 15, 16, 21, 25, 27, 28, 30, 40], "modifi": [7, 22], "put": [7, 36], "mark": 7, "actual": [7, 37], "don": [7, 15], "my_fancy_test": 7, "monkeypatch": [7, 40], "now": 7, "backend_config": 7, "common_config": 7, "frontend_config": 7, "compare_set": 8, "iter_element_and_rest": [8, 9], "remove_duplicates_from_list": [8, 9], "substring_is_in_list": [8, 9], "data_convers": 8, "convert_compare_id_to_list": [8, 10], "convert_str_to_bool": [8, 10], "convert_time_to_str": [8, 10], "convert_uid_list_to_compare_id": [8, 10], "get_value_of_first_kei": [8, 10], "make_byt": [8, 10], "make_unicode_str": [8, 10], "none_to_non": [8, 10], "normalize_compare_id": [8, 10], "get_shared_sess": [8, 11], "docker": [8, 19, 33], "run_docker_contain": [8, 12], "filesystem": [8, 30], "file_is_empti": [8, 13], "get_config_dir": [8, 13], "get_relative_object_path": [8, 13], "get_src_dir": [8, 13], "get_template_dir": [8, 13], "hash": [8, 27, 30, 37], "get_hash": [8, 14], "get_md5": [8, 14], "get_sha256": [8, 14], "get_tlsh_comparison": [8, 14], "normalize_lief_item": [8, 14], "installationerror": [8, 15], "operateindirectori": [8, 15], "apt_install_packag": [8, 15], "apt_remove_packag": [8, 15], "apt_update_sourc": [8, 15], "check_distribut": [8, 15, 33], "check_if_command_in_path": [8, 15], "dnf_install_packag": [8, 15], "dnf_remove_packag": [8, 15], "dnf_update_sourc": [8, 15], "install_github_project": [8, 15], "install_pip_packag": [8, 15, 32, 33], "is_virtualenv": [8, 15], "log_current_packag": [8, 15], "read_package_list_from_fil": [8, 15], "remove_fold": [8, 15], "run_cmd_with_log": [8, 15], "coloringformatt": [8, 16], "log_level_color": [8, 16], "terminalcolor": [8, 16], "blue": [8, 16, 23, 27], "bold": [8, 16], "endc": [8, 16], "fail": [8, 10, 12, 15, 16, 43], "green": [8, 16, 23, 27], "header": [8, 16], "okblu": [8, 16], "okgreen": [8, 16], "purpl": [8, 16], "red": [8, 16, 23], "underlin": [8, 16], "yellow": [8, 16, 27], "color_str": [8, 16], "merge_gener": 8, "shuffl": [8, 17, 37], "object_convers": 8, "create_meta_dict": [8, 18], "pdf": 8, "build_pdf_report": [8, 19], "discover_analysis_plugin": [8, 20], "discover_compare_plugin": [8, 20], "exceptionsafeprocess": [8, 21], "run": [8, 12, 15, 21, 30, 34, 35, 36, 37], "check_worker_except": [8, 21], "complete_shutdown": [8, 21], "new_worker_was_start": [8, 21], "start_single_work": [8, 21], "stop_process": [8, 21], "terminate_process_and_children": [8, 21], "program_setup": 8, "setup_argpars": [8, 22], "setup_log": [8, 22], "dark": [8, 23], "grai": [8, 23, 31], "light": [8, 23], "light_blu": [8, 23], "orang": [8, 23], "task_convers": 8, "convert_analysis_task_to_fw_obj": [8, 24], "create_analysis_task": [8, 24], "create_re_analyze_task": [8, 24], "get_file_name_and_binary_from_request": [8, 24], "uid": [8, 10, 24, 26, 28, 29, 30, 31, 40], "create_uid": [8, 25], "is_list_of_uid": [8, 25], "is_uid": [8, 25], "filter_vpf_dict": [8, 26], "get_paths_for_all_par": [8, 26], "get_some_vfp": [8, 26], "web_interfac": 8, "apply_filters_to_queri": [8, 27], "cap_length_of_el": [8, 27], "filter_out_illegal_charact": [8, 27], "format_tim": [8, 27], "get_alternating_color_list": [8, 27], "get_color_list": [8, 27], "get_template_as_str": [8, 27], "password_is_leg": [8, 27], "yara_binary_search": 8, "yarabinarysearchscann": [8, 28], "get_binary_search_result": [8, 28, 38, 39, 40], "get_yara_error": [8, 28], "is_valid_yara_rule_fil": [8, 28], "iter": [9, 10, 15, 21, 37], "over": [9, 21], "element": [9, 25, 27], "also": [9, 30, 40], "other": [9, 16, 26, 31, 33], "remain": [9, 12], "_t": 9, "gener": [9, 19, 22, 25, 30, 37], "tupl": [9, 15, 16, 21, 24, 28, 30, 43], "item": 9, "list_": 9, "duplic": [9, 26], "input": [9, 10, 25], "possibli": 9, "uniqu": [9, 10, 24, 25, 28, 30], "string": [9, 10, 14, 16, 25, 27, 28, 30, 31, 43], "substring_list": 9, "substr": 9, "otherwis": [9, 10, 13, 21, 25, 27, 28], "compare_id": [10, 40], "convert": [10, 14, 24], "id": 10, "accord": 10, "boolean": [10, 15, 37, 43], "y": 10, "replac": 10, "distutil": 10, "strtobool": 10, "deprec": 10, "python": [10, 15, 21, 22], "time_obj": 10, "datetim": 10, "date": [10, 31], "els": 10, "output": [10, 16], "default": [10, 22, 30, 31, 37, 43], "1970": [10, 31], "01": [10, 31], "convers": 10, "uid_list": 10, "consist": [10, 30], "separ": [10, 30, 31], "semi": 10, "colon": 10, "input_dict": 10, "empti": [10, 13, 15, 19, 31], "_kt": 10, "_vt": 10, "anystr": [10, 25], "sort": 10, "arbitrari": [10, 30], "input_data": [10, 25], "word": 10, "come": 10, "interfac": [10, 27], "nonetyp": 10, "reorder": 10, "databaseinterfac": 11, "abstractcontextmanag": 11, "imag": [12, 30, 31, 33], "logging_label": 12, "combine_stderr_stdout": 12, "subprocess": [12, 15, 21], "completedprocess": 12, "command": [12, 15], "ran": [12, 37], "pass": [12, 15, 21, 31, 37], "label": [12, 21], "cancel": 12, "combin": [12, 26], "stderr": [12, 15], "stdout": 12, "rais": [12, 15, 21], "error": [12, 15, 16, 27, 28, 30, 43], "imagenotfound": 12, "readtimeout": 12, "apierror": 12, "file_path": [13, 29, 30], "ha": [13, 30, 33, 36, 37], "size": [13, 29, 30], "absolut": 13, "directori": [13, 15, 27, 33], "offset_path": 13, "extract": [13, 30, 31, 37], "temporari": [13, 30], "offset": [13, 43], "rel": 13, "root": [13, 30, 31, 37], "addition": [13, 30, 31], "intermedi": 13, "fact_extract": 13, "retriev": [13, 21, 24, 43], "templat": [13, 19, 27], "hash_funct": 14, "binari": [14, 25, 29, 30, 31], "hashlib": 14, "arrai": [14, 17, 36], "integ": [14, 43], "hex": [14, 27], "shorthand": [14, 40], "repres": [15, 27, 30, 31, 37, 43], "happen": [15, 21], "dure": [15, 21, 30, 31], "remot": 15, "target_directori": 15, "context": [15, 30, 37], "manag": [15, 33], "allow": [15, 21, 26, 28], "number": [15, 27, 30], "On": 15, "exit": 15, "work": 15, "its": [15, 21, 30, 31, 37], "previou": 15, "indic": 15, "packag": [15, 33], "mint": 15, "updat": [15, 24, 27, 37, 43], "allow_unsupport": 15, "distribut": [15, 22, 33], "codenam": 15, "current": [15, 21, 30, 36, 37, 43], "fedora": 15, "redhat": 15, "cent": 15, "project_path": 15, "project": [15, 33], "clone": 15, "cad": 15, "ghusernam": 15, "c": [15, 22], "style": [15, 16], "package_fil": 15, "through": [15, 33], "one": [15, 19, 30], "per": 15, "line": 15, "comment": [15, 29, 30], "environ": 15, "affect": 15, "distinguish": 15, "folder_nam": 15, "equival": 15, "rm": 15, "rf": 15, "administr": 15, "effect": [15, 37], "fall": 15, "cmd": 15, "raise_error": 15, "shell": 15, "silent": 15, "non": 15, "zero": 15, "returncod": 15, "fmt": 16, "datefmt": 16, "valid": [16, 25, 28], "formatt": 16, "subclass": [16, 33], "print": 16, "respect": [16, 21], "x1b": 16, "95m": 16, "info": [16, 23], "94m": 16, "93m": 16, "91m": 16, "critic": 16, "1m": 16, "record": 16, "specifi": [16, 31], "logrecord": 16, "termin": [16, 21], "stop": [16, 21], "0m": 16, "92m": 16, "4m": 16, "sequenc": 17, "copi": [17, 22], "fo": [18, 37], "meta": [18, 30, 31, 43], "folder": [19, 31], "fact_pdf_report": 19, "jinja2": 19, "engin": 19, "render": 19, "latex": 19, "build": [19, 22, 32, 33], "overview": 19, "technic": 19, "refer": [19, 37], "insid": [19, 30, 37], "rerais": 21, "subtyp": 21, "multiprocess": [21, 37], "handl": [21, 33, 37], "oppos": 21, "what": [21, 40], "suggest": 21, "impervi": 21, "instead": 21, "reconstruct": 21, "properti": [21, 30, 40], "occur": [21, 30, 37], "stack": 21, "trace": 21, "yet": 21, "process_list": 21, "worker_label": 21, "worker_funct": 21, "children": [21, 30, 37], "restart": [21, 37], "alwai": [21, 30, 37], "callabl": [21, 37], "messag": [21, 28, 30, 43], "shutdown": [21, 34, 35, 36, 37, 38, 39, 40], "send": 21, "signal": 21, "displai": [21, 27], "new_process": 21, "old_process": 21, "match": [21, 28], "process_index": 21, "schedul": [21, 30], "singl": [21, 28, 30, 37], "gracefulli": 21, "until": [21, 37], "kill": 21, "parallel": 21, "join": 21, "child": [21, 30, 33, 36], "copyright": 22, "2015": 22, "2024": 22, "free": 22, "redistribut": 22, "term": 22, "gnu": 22, "public": [22, 28, 33], "publish": 22, "foundat": 22, "later": 22, "hope": 22, "warranti": 22, "even": 22, "impli": 22, "merchant": 22, "FOR": 22, "particular": 22, "purpos": [22, 30], "receiv": 22, "along": [22, 30], "http": [22, 43], "www": 22, "command_line_opt": 22, "opt": 22, "hostedtoolcach": 22, "x64": 22, "bin": 22, "sphinx": 22, "html": [22, 27], "_build": 22, "w": 22, "dev": 22, "argumentpars": 22, "flag": [22, 43], "pars": [22, 43], "popul": 22, "namespac": 22, "parse_arg": 22, "secondari": 23, "primari": [23, 30], "success": [23, 43], "danger": 23, "analysis_task": 24, "base_fw": 24, "flask": [24, 27], "content": [24, 27, 28, 30], "sha256_siz": 25, "input_list": 25, "input_str": 25, "vfp_dict": 26, "parent_uid": 26, "vfp": [26, 30], "param": [26, 28], "filter": [26, 27, 30, 31], "typic": 26, "just": 26, "random": 26, "queri": [27, 31, 43], "add": [27, 30, 37, 40], "select": [27, 37], "vendor": [27, 29, 31], "json": [27, 30, 31], "hid_el": 27, "maximum": 27, "55": 27, "limit": [27, 43], "length": [27, 30], "hid": 27, "witch": 27, "cap": 27, "illeg": 27, "charact": 27, "durat": 27, "altern": 27, "begin": 27, "hexadecim": 27, "00ff00": 27, "view_nam": 27, "pw": 27, "erron": 27, "caus": [27, 28], "unexpect": 27, "behavior": 27, "accept": 27, "scan": 28, "method": [28, 33, 36], "perform": 28, "yara_rul": 28, "rule": 28, "rules_fil": 28, "compil": 28, "add_included_fil": [29, 30], "analysis_except": [29, 30], "create_binary_from_path": [29, 30], "depth": [29, 30], "file_nam": [29, 30], "files_includ": [29, 30], "from_json": [29, 30, 31], "get_hid": [29, 30, 31], "get_virtual_paths_for_all_uid": [29, 30], "list_of_all_included_fil": [29, 30], "parent_firmware_uid": [29, 30], "processed_analysi": [29, 30], "root_uid": [29, 30, 31, 37, 40], "scheduled_analysi": [29, 30], "set_binari": [29, 30, 31], "sha256": [29, 30], "temporary_data": [29, 30], "to_json": [29, 30, 31], "device_class": [29, 31], "device_nam": [29, 31], "release_d": [29, 31], "set_part_nam": [29, 31], "set_tag": [29, 31], "hold": [30, 31], "intern": 30, "represent": [30, 31], "file_object": [30, 36], "care": 30, "field": 30, "increment": 30, "being": [30, 37], "this_files_current_vfp": 30, "child_path": 30, "placehold": 30, "tag_nam": 30, "while": [30, 31], "total": 30, "been": 30, "made": [30, 37], "outer": 30, "everi": [30, 40], "squashf": 30, "tar": 30, "archiv": 30, "f": [30, 31], "similar": 30, "carv": 30, "usual": 30, "recurs": [30, 37], "lower": 30, "classmethod": [30, 31], "json_dict": 30, "human": 30, "readabl": 30, "That": 30, "mean": 30, "themselv": [30, 37], "expens": 30, "aggreg": 30, "memori": 30, "belong": 30, "direct": 30, "predecessor": 30, "thu": 30, "close": [30, 37], "tree": [30, 31], "necessarili": 30, "pair": 30, "plugin_nam": 30, "result_dict": 30, "analysis_d": 30, "unix": [30, 31, 43], "plugin_vers": 30, "associ": [30, 31], "db": 30, "comput": 30, "storag": 30, "persist": 30, "di": 30, "cycl": 30, "vfp_parent_filt": [30, 31], "form": [30, 37], "hash_length": 30, "machin": 30, "full": 30, "itself": 30, "pack": 30, "firmware_uid": 30, "fs_uid": 30, "etc": [30, 31], "pipe": 30, "sign": 30, "symlink": 30, "upload": 31, "special": 31, "supplementari": 31, "branch": 31, "leaf": 31, "var": 31, "passwd": 31, "correspond": 31, "embed": 31, "user": [31, 37], "advanc": 31, "categor": 31, "understand": 31, "said": 31, "applianc": 31, "ip": 31, "camera": 31, "entertain": 31, "printer": 31, "plethora": 31, "noqa": 31, "e501": 31, "requir": 31, "attribut": 31, "mandatori": [31, 37], "freeli": 31, "never": 31, "preset": 31, "frequent": 31, "bootload": 31, "assum": [31, 33], "assign": 31, "iso": 31, "8601": 31, "yyyi": 31, "mm": 31, "dd": 31, "epoch": 31, "specif": [31, 43], "setter": 31, "self": [31, 33, 36], "part_nam": 31, "save": 31, "abstractplugininstal": [32, 33], "base_path": [32, 33], "install_docker_imag": [32, 33], "install_fil": [32, 33], "install_other_packag": [32, 33], "install_system_packag": [32, 33], "skip_dock": 33, "overwrit": 33, "cwd": 33, "caller": [33, 36], "ensur": [33, 36], "overwritten": 33, "variabl": 33, "download": 33, "dnf": 33, "analysisexceptionerror": [34, 35, 36], "pluginrunn": [34, 35, 36], "get_active_worker_count": [34, 35, 36], "get_queue_len": [34, 35, 36], "out_queu": [34, 35, 36], "queue_analysi": [34, 35, 36], "crashederror": [34, 35, 36], "sigterm_timeout": [34, 35, 36], "timeouterror": [34, 35, 36], "is_work": [34, 35, 36], "analysisschedul": [34, 35, 37], "cancel_analysi": [34, 35, 37, 38, 39, 40], "check_except": [34, 35, 37], "get_combined_analysis_workload": [34, 35, 37], "get_plugin_dict": [34, 35, 37], "get_scheduled_workload": [34, 35, 37], "start_analysis_of_object": [34, 35, 37], "update_analysis_of_object_and_children": [34, 35, 37], "update_analysis_of_single_object": [34, 35, 37], "process_count": [35, 36], "scheduler_st": [35, 36], "schemata": 36, "runner": [36, 37], "pluginwork": 36, "disk": 36, "amount": 36, "queue": [36, 37], "_plugin": 36, "fulfil": 36, "worker_config": 36, "in_queu": 36, "stat": 36, "stats_count": 36, "stats_idx": 36, "mp": 36, "5": 36, "sub": 36, "overridden": 36, "post_analysi": 37, "unpacking_lock": 37, "respons": [37, 43], "initi": 37, "decis": 37, "built": 37, "decid": 37, "skip": 37, "mostli": 37, "attach": 37, "point": 37, "offer": [37, 43], "introspect": 37, "three": 37, "sent": 37, "independ": 37, "trigger": 37, "between": 37, "consid": 37, "consider": 37, "stage": 37, "order": 37, "preserv": 37, "balanc": 37, "ye": 37, "forc": [37, 40], "unchang": 37, "black": 37, "done": 37, "fill": 37, "add_job": 37, "collector": 37, "scope": 37, "backenddbinterfac": 37, "unpackinglockmanag": 37, "regist": 37, "state": 37, "regard": 37, "plugin_set": 37, "thread": 37, "pre": 37, "workload": 37, "progress": 37, "recent": 37, "analysis_main_schedul": 37, "current_analys": 37, "recently_finished_analys": 37, "statist": 37, "notifi": 37, "impend": 37, "onc": 37, "safe": 37, "statu": [37, 40, 43], "track": 37, "repeat": 37, "side": 37, "unit": [38, 40], "conftest": [38, 39], "commonintercommock": [38, 39, 40], "add_analysis_task": [38, 39, 40], "add_binary_search_request": [38, 39, 40], "add_compare_task": [38, 39, 40], "add_re_analyze_task": [38, 39, 40], "get_available_analysis_plugin": [38, 39, 40], "get_binary_and_filenam": [38, 39, 40], "get_repacked_binary_and_file_nam": [38, 39, 40], "peek_in_binari": [38, 39, 40], "task_list": [38, 39, 40], "frontenddatabasemock": [38, 39, 40], "statusinterfacemock": [38, 39, 40], "get_analysis_statu": [38, 39, 40], "set_analysis_statu": [38, 39, 40], "webinterfaceunittestconfig": [38, 39, 40], "database_mock_class": [38, 39, 40], "intercom_mock_class": [38, 39, 40], "status_mock_class": [38, 39, 40], "intercom_task_list": [38, 39, 40], "test_client": [38, 39, 40], "web_frontend": [38, 39, 40], "_": 40, "__": 40, "static": 40, "db_mock": 40, "mock": 40, "frontenddatabas": 40, "commondatabasemock": 40, "intercomfrontendbind": 40, "redisstatusinterfac": 40, "inspect": 40, "app": 40, "webfrontend": 40, "helper": [41, 42], "error_messag": [41, 42, 43], "get_boolean_from_request": [41, 42, 43], "get_current_gmt": [41, 42, 43], "get_pag": [41, 42, 43], "get_queri": [41, 42, 43], "get_upd": [41, 42, 43], "success_messag": [41, 42, 43], "neat": 43, "wrapper": 43, "endpoint": 43, "target": 43, "targeted_url": 43, "request_data": 43, "return_cod": 43, "400": 43, "why": 43, "url": 43, "bad": 43, "adher": 43, "request_paramet": 43, "immutablemultidict": 43, "ntp": 43, "timestamp": 43, "whose": 43, "200": 43, "ok": 43}, "objects": {"analysis.plugin": [[5, 0, 0, "-", "plugin"]], "analysis.plugin.plugin": [[5, 1, 1, "", "AnalysisFailedError"], [5, 2, 1, "", "AnalysisPluginV0"], [5, 2, 1, "", "Tag"]], "analysis.plugin.plugin.AnalysisPluginV0": [[5, 2, 1, "", "MetaData"], [5, 3, 1, "", "Schema"], [5, 4, 1, "", "analyze"], [5, 4, 1, "", "get_analysis"], [5, 4, 1, "", "get_tags"], [5, 4, 1, "", "summarize"]], "analysis.plugin.plugin.AnalysisPluginV0.MetaData": [[5, 3, 1, "", "Schema"], [5, 3, 1, "", "dependencies"], [5, 3, 1, "", "description"], [5, 3, 1, "", "mime_blacklist"], [5, 3, 1, "", "mime_whitelist"], [5, 3, 1, "", "name"], [5, 3, 1, "", "system_version"], [5, 3, 1, "", "timeout"], [5, 3, 1, "", "version"]], "analysis.plugin.plugin.Tag": [[5, 3, 1, "", "color"], [5, 3, 1, "", "name"], [5, 3, 1, "", "propagate"], [5, 3, 1, "", "value"]], "": [[6, 0, 0, "-", "config"], [7, 0, 0, "-", "conftest"]], "config": [[6, 2, 1, "", "Backend"], [6, 2, 1, "", "Common"], [6, 2, 1, "", "Frontend"], [6, 5, 1, "", "backend"], [6, 5, 1, "", "common"], [6, 5, 1, "", "frontend"], [6, 5, 1, "", "load"]], "config.Backend": [[6, 2, 1, "", "BinarySearch"], [6, 2, 1, "", "Plugin"], [6, 2, 1, "", "PluginDefaults"], [6, 2, 1, "", "Unpacking"], [6, 3, 1, "", "binary_search"], [6, 3, 1, "", "block_delay"], [6, 3, 1, "", "collector_worker_count"], [6, 3, 1, "", "firmware_file_storage_directory"], [6, 3, 1, "", "intercom_poll_delay"], [6, 3, 1, "", "plugin"], [6, 3, 1, "", "plugin_defaults"], [6, 3, 1, "", "scheduling_worker_count"], [6, 3, 1, "", "ssdeep_ignore"], [6, 3, 1, "", "throw_exceptions"], [6, 3, 1, "", "unpacking"]], "config.Backend.BinarySearch": [[6, 3, 1, "", "max_strings_per_match"]], "config.Backend.Plugin": [[6, 3, 1, "", "name"]], "config.Backend.PluginDefaults": [[6, 3, 1, "", "processes"]], "config.Backend.Unpacking": [[6, 3, 1, "", "base_port"], [6, 3, 1, "", "delay"], [6, 3, 1, "", "max_depth"], [6, 3, 1, "", "memory_limit"], [6, 3, 1, "", "processes"], [6, 3, 1, "", "throttle_limit"], [6, 3, 1, "", "whitelist"]], "config.Common": [[6, 2, 1, "", "AnalysisPreset"], [6, 2, 1, "", "Logging"], [6, 2, 1, "", "Postgres"], [6, 2, 1, "", "Redis"], [6, 3, 1, "", "analysis_preset"], [6, 3, 1, "", "docker_mount_base_dir"], [6, 3, 1, "", "logging"], [6, 3, 1, "", "postgres"], [6, 3, 1, "", "redis"], [6, 3, 1, "", "temp_dir_path"]], "config.Common.AnalysisPreset": [[6, 3, 1, "", "name"], [6, 3, 1, "", "plugins"]], "config.Common.Logging": [[6, 3, 1, "", "file_backend"], [6, 3, 1, "", "file_database"], [6, 3, 1, "", "file_frontend"], [6, 3, 1, "", "level"]], "config.Common.Postgres": [[6, 3, 1, "", "admin_pw"], [6, 3, 1, "", "admin_user"], [6, 3, 1, "", "database"], [6, 3, 1, "", "del_pw"], [6, 3, 1, "", "del_user"], [6, 3, 1, "", "port"], [6, 3, 1, "", "ro_pw"], [6, 3, 1, "", "ro_user"], [6, 3, 1, "", "rw_pw"], [6, 3, 1, "", "rw_user"], [6, 3, 1, "", "server"], [6, 3, 1, "", "test_database"]], "config.Common.Redis": [[6, 3, 1, "", "fact_db"], [6, 3, 1, "", "host"], [6, 3, 1, "", "password"], [6, 3, 1, "", "port"], [6, 3, 1, "", "test_db"]], "config.Frontend": [[6, 2, 1, "", "Authentication"], [6, 2, 1, "", "Hasura"], [6, 3, 1, "", "ajax_stats_reload_time"], [6, 3, 1, "", "authentication"], [6, 3, 1, "", "communication_timeout"], [6, 3, 1, "", "hasura"], [6, 3, 1, "", "max_elements_per_chart"], [6, 3, 1, "", "number_of_latest_firmwares_to_display"], [6, 3, 1, "", "radare2_url"], [6, 3, 1, "", "results_per_page"]], "config.Frontend.Authentication": [[6, 3, 1, "", "enabled"], [6, 3, 1, "", "password_salt"], [6, 3, 1, "", "user_database"]], "config.Frontend.Hasura": [[6, 3, 1, "", "admin_secret"], [6, 3, 1, "", "port"]], "conftest": [[7, 2, 1, "", "AnalysisPluginTestConfig"], [7, 5, 1, "", "analysis_plugin"], [7, 5, 1, "", "backend_config"], [7, 5, 1, "", "common_config"], [7, 5, 1, "", "docker_mount_base_dir"], [7, 5, 1, "", "firmware_file_storage_directory"], [7, 5, 1, "", "frontend_config"]], "conftest.AnalysisPluginTestConfig": [[7, 3, 1, "", "init_kwargs"], [7, 3, 1, "", "plugin_class"], [7, 3, 1, "", "start_processes"]], "helperFunctions": [[9, 0, 0, "-", "compare_sets"], [10, 0, 0, "-", "data_conversion"], [11, 0, 0, "-", "database"], [12, 0, 0, "-", "docker"], [13, 0, 0, "-", "fileSystem"], [14, 0, 0, "-", "hash"], [15, 0, 0, "-", "install"], [16, 0, 0, "-", "logging"], [17, 0, 0, "-", "merge_generators"], [18, 0, 0, "-", "object_conversion"], [19, 0, 0, "-", "pdf"], [20, 0, 0, "-", "plugin"], [21, 0, 0, "-", "process"], [22, 0, 0, "-", "program_setup"], [23, 0, 0, "-", "tag"], [24, 0, 0, "-", "task_conversion"], [25, 0, 0, "-", "uid"], [26, 0, 0, "-", "virtual_file_path"], [27, 0, 0, "-", "web_interface"], [28, 0, 0, "-", "yara_binary_search"]], "helperFunctions.compare_sets": [[9, 5, 1, "", "iter_element_and_rest"], [9, 5, 1, "", "remove_duplicates_from_list"], [9, 5, 1, "", "substring_is_in_list"]], "helperFunctions.data_conversion": [[10, 5, 1, "", "convert_compare_id_to_list"], [10, 5, 1, "", "convert_str_to_bool"], [10, 5, 1, "", "convert_time_to_str"], [10, 5, 1, "", "convert_uid_list_to_compare_id"], [10, 5, 1, "", "get_value_of_first_key"], [10, 5, 1, "", "make_bytes"], [10, 5, 1, "", "make_unicode_string"], [10, 5, 1, "", "none_to_none"], [10, 5, 1, "", "normalize_compare_id"]], "helperFunctions.database": [[11, 5, 1, "", "get_shared_session"]], "helperFunctions.docker": [[12, 5, 1, "", "run_docker_container"]], "helperFunctions.fileSystem": [[13, 5, 1, "", "file_is_empty"], [13, 5, 1, "", "get_config_dir"], [13, 5, 1, "", "get_relative_object_path"], [13, 5, 1, "", "get_src_dir"], [13, 5, 1, "", "get_template_dir"]], "helperFunctions.hash": [[14, 5, 1, "", "get_hash"], [14, 5, 1, "", "get_md5"], [14, 5, 1, "", "get_sha256"], [14, 5, 1, "", "get_tlsh_comparison"], [14, 5, 1, "", "normalize_lief_items"]], "helperFunctions.install": [[15, 1, 1, "", "InstallationError"], [15, 2, 1, "", "OperateInDirectory"], [15, 5, 1, "", "apt_install_packages"], [15, 5, 1, "", "apt_remove_packages"], [15, 5, 1, "", "apt_update_sources"], [15, 5, 1, "", "check_distribution"], [15, 5, 1, "", "check_if_command_in_path"], [15, 5, 1, "", "dnf_install_packages"], [15, 5, 1, "", "dnf_remove_packages"], [15, 5, 1, "", "dnf_update_sources"], [15, 5, 1, "", "install_github_project"], [15, 5, 1, "", "install_pip_packages"], [15, 5, 1, "", "is_virtualenv"], [15, 5, 1, "", "log_current_packages"], [15, 5, 1, "", "read_package_list_from_file"], [15, 5, 1, "", "remove_folder"], [15, 5, 1, "", "run_cmd_with_logging"]], "helperFunctions.logging": [[16, 2, 1, "", "ColoringFormatter"], [16, 2, 1, "", "TerminalColors"], [16, 5, 1, "", "color_string"]], "helperFunctions.logging.ColoringFormatter": [[16, 3, 1, "", "LOG_LEVEL_COLORS"], [16, 4, 1, "", "format"]], "helperFunctions.logging.TerminalColors": [[16, 3, 1, "", "BLUE"], [16, 3, 1, "", "BOLD"], [16, 3, 1, "", "ENDC"], [16, 3, 1, "", "FAIL"], [16, 3, 1, "", "GREEN"], [16, 3, 1, "", "HEADER"], [16, 3, 1, "", "OKBLUE"], [16, 3, 1, "", "OKGREEN"], [16, 3, 1, "", "PURPLE"], [16, 3, 1, "", "RED"], [16, 3, 1, "", "UNDERLINE"], [16, 3, 1, "", "WARNING"], [16, 3, 1, "", "YELLOW"]], "helperFunctions.merge_generators": [[17, 5, 1, "", "shuffled"]], "helperFunctions.object_conversion": [[18, 5, 1, "", "create_meta_dict"]], "helperFunctions.pdf": [[19, 5, 1, "", "build_pdf_report"]], "helperFunctions.plugin": [[20, 5, 1, "", "discover_analysis_plugins"], [20, 5, 1, "", "discover_compare_plugins"]], "helperFunctions.process": [[21, 2, 1, "", "ExceptionSafeProcess"], [21, 5, 1, "", "check_worker_exceptions"], [21, 5, 1, "", "complete_shutdown"], [21, 5, 1, "", "new_worker_was_started"], [21, 5, 1, "", "start_single_worker"], [21, 5, 1, "", "stop_process"], [21, 5, 1, "", "stop_processes"], [21, 5, 1, "", "terminate_process_and_children"]], "helperFunctions.process.ExceptionSafeProcess": [[21, 6, 1, "", "exception"], [21, 4, 1, "", "run"]], "helperFunctions.program_setup": [[22, 5, 1, "", "setup_argparser"], [22, 5, 1, "", "setup_logging"]], "helperFunctions.tag": [[23, 2, 1, "", "TagColor"]], "helperFunctions.tag.TagColor": [[23, 3, 1, "", "ALL"], [23, 3, 1, "", "BLUE"], [23, 3, 1, "", "DARK"], [23, 3, 1, "", "GRAY"], [23, 3, 1, "", "GREEN"], [23, 3, 1, "", "LIGHT"], [23, 3, 1, "", "LIGHT_BLUE"], [23, 3, 1, "", "ORANGE"], [23, 3, 1, "", "RED"]], "helperFunctions.task_conversion": [[24, 5, 1, "", "convert_analysis_task_to_fw_obj"], [24, 5, 1, "", "create_analysis_task"], [24, 5, 1, "", "create_re_analyze_task"], [24, 5, 1, "", "get_file_name_and_binary_from_request"]], "helperFunctions.uid": [[25, 5, 1, "", "create_uid"], [25, 5, 1, "", "is_list_of_uids"], [25, 5, 1, "", "is_uid"]], "helperFunctions.virtual_file_path": [[26, 5, 1, "", "filter_vpf_dict"], [26, 5, 1, "", "get_paths_for_all_parents"], [26, 5, 1, "", "get_some_vfp"]], "helperFunctions.web_interface": [[27, 5, 1, "", "apply_filters_to_query"], [27, 5, 1, "", "cap_length_of_element"], [27, 5, 1, "", "filter_out_illegal_characters"], [27, 5, 1, "", "format_time"], [27, 5, 1, "", "get_alternating_color_list"], [27, 5, 1, "", "get_color_list"], [27, 5, 1, "", "get_template_as_string"], [27, 5, 1, "", "password_is_legal"]], "helperFunctions.yara_binary_search": [[28, 2, 1, "", "YaraBinarySearchScanner"], [28, 5, 1, "", "get_yara_error"], [28, 5, 1, "", "is_valid_yara_rule_file"]], "helperFunctions.yara_binary_search.YaraBinarySearchScanner": [[28, 4, 1, "", "get_binary_search_result"]], "objects": [[30, 0, 0, "-", "file"], [31, 0, 0, "-", "firmware"]], "objects.file": [[30, 2, 1, "", "FileObject"]], "objects.file.FileObject": [[30, 4, 1, "", "add_included_file"], [30, 3, 1, "", "analysis_exception"], [30, 3, 1, "", "analysis_tags"], [30, 3, 1, "", "binary"], [30, 3, 1, "", "comments"], [30, 4, 1, "", "create_binary_from_path"], [30, 3, 1, "", "depth"], [30, 3, 1, "", "file_name"], [30, 3, 1, "", "file_path"], [30, 3, 1, "", "files_included"], [30, 4, 1, "", "from_json"], [30, 4, 1, "", "get_hid"], [30, 4, 1, "", "get_virtual_paths_for_all_uids"], [30, 3, 1, "", "list_of_all_included_files"], [30, 3, 1, "", "parent_firmware_uids"], [30, 3, 1, "", "parents"], [30, 3, 1, "", "processed_analysis"], [30, 3, 1, "", "root_uid"], [30, 3, 1, "", "scheduled_analysis"], [30, 4, 1, "", "set_binary"], [30, 3, 1, "", "sha256"], [30, 3, 1, "", "size"], [30, 3, 1, "", "temporary_data"], [30, 4, 1, "", "to_json"], [30, 6, 1, "", "uid"], [30, 3, 1, "", "virtual_file_path"]], "objects.firmware": [[31, 2, 1, "", "Firmware"]], "objects.firmware.Firmware": [[31, 3, 1, "", "device_class"], [31, 3, 1, "", "device_name"], [31, 4, 1, "", "from_json"], [31, 4, 1, "", "get_hid"], [31, 3, 1, "", "part"], [31, 3, 1, "", "release_date"], [31, 4, 1, "", "set_binary"], [31, 4, 1, "", "set_part_name"], [31, 4, 1, "", "set_tag"], [31, 3, 1, "", "tags"], [31, 4, 1, "", "to_json"], [31, 3, 1, "", "vendor"], [31, 3, 1, "", "version"]], "plugins": [[33, 0, 0, "-", "installer"]], "plugins.installer": [[33, 2, 1, "", "AbstractPluginInstaller"]], "plugins.installer.AbstractPluginInstaller": [[33, 3, 1, "", "base_path"], [33, 4, 1, "", "build"], [33, 4, 1, "", "install"], [33, 4, 1, "", "install_docker_images"], [33, 4, 1, "", "install_files"], [33, 4, 1, "", "install_other_packages"], [33, 4, 1, "", "install_pip_packages"], [33, 4, 1, "", "install_system_packages"]], "scheduler.analysis": [[36, 0, 0, "-", "plugin"], [37, 0, 0, "-", "scheduler"]], "scheduler.analysis.plugin": [[36, 1, 1, "", "AnalysisExceptionError"], [36, 2, 1, "", "PluginRunner"], [36, 2, 1, "", "Worker"]], "scheduler.analysis.plugin.PluginRunner": [[36, 2, 1, "", "Config"], [36, 2, 1, "", "Task"], [36, 4, 1, "", "get_active_worker_count"], [36, 4, 1, "", "get_queue_len"], [36, 3, 1, "", "out_queue"], [36, 4, 1, "", "queue_analysis"], [36, 4, 1, "", "shutdown"], [36, 4, 1, "", "start"]], "scheduler.analysis.plugin.PluginRunner.Config": [[36, 3, 1, "", "process_count"], [36, 3, 1, "", "timeout"]], "scheduler.analysis.plugin.PluginRunner.Task": [[36, 3, 1, "", "dependencies"], [36, 3, 1, "", "path"], [36, 3, 1, "", "scheduler_state"], [36, 3, 1, "", "virtual_file_path"]], "scheduler.analysis.plugin.Worker": [[36, 2, 1, "", "Config"], [36, 1, 1, "", "CrashedError"], [36, 3, 1, "", "SIGTERM_TIMEOUT"], [36, 1, 1, "", "TimeoutError"], [36, 4, 1, "", "is_working"], [36, 4, 1, "", "run"]], "scheduler.analysis.plugin.Worker.Config": [[36, 3, 1, "", "timeout"]], "scheduler.analysis.scheduler": [[37, 2, 1, "", "AnalysisScheduler"]], "scheduler.analysis.scheduler.AnalysisScheduler": [[37, 4, 1, "", "cancel_analysis"], [37, 4, 1, "", "check_exceptions"], [37, 4, 1, "", "get_combined_analysis_workload"], [37, 4, 1, "", "get_plugin_dict"], [37, 4, 1, "", "get_scheduled_workload"], [37, 4, 1, "", "shutdown"], [37, 4, 1, "", "start"], [37, 4, 1, "", "start_analysis_of_object"], [37, 4, 1, "", "update_analysis_of_object_and_children"], [37, 4, 1, "", "update_analysis_of_single_object"]], "test.unit": [[40, 0, 0, "-", "conftest"]], "test.unit.conftest": [[40, 2, 1, "", "CommonIntercomMock"], [40, 2, 1, "", "FrontendDatabaseMock"], [40, 2, 1, "", "StatusInterfaceMock"], [40, 2, 1, "", "WebInterfaceUnitTestConfig"], [40, 5, 1, "", "intercom_task_list"], [40, 5, 1, "", "test_client"], [40, 5, 1, "", "web_frontend"]], "test.unit.conftest.CommonIntercomMock": [[40, 4, 1, "", "add_analysis_task"], [40, 4, 1, "", "add_binary_search_request"], [40, 4, 1, "", "add_compare_task"], [40, 4, 1, "", "add_re_analyze_task"], [40, 4, 1, "", "cancel_analysis"], [40, 4, 1, "", "get_available_analysis_plugins"], [40, 4, 1, "", "get_binary_and_filename"], [40, 4, 1, "", "get_binary_search_result"], [40, 4, 1, "", "get_repacked_binary_and_file_name"], [40, 4, 1, "", "peek_in_binary"], [40, 4, 1, "", "shutdown"], [40, 3, 1, "", "task_list"]], "test.unit.conftest.StatusInterfaceMock": [[40, 4, 1, "", "get_analysis_status"], [40, 4, 1, "", "set_analysis_status"]], "test.unit.conftest.WebInterfaceUnitTestConfig": [[40, 3, 1, "", "database_mock_class"], [40, 3, 1, "", "intercom_mock_class"], [40, 3, 1, "", "status_mock_class"]], "web_interface.rest": [[43, 0, 0, "-", "helper"]], "web_interface.rest.helper": [[43, 5, 1, "", "error_message"], [43, 5, 1, "", "get_boolean_from_request"], [43, 5, 1, "", "get_current_gmt"], [43, 5, 1, "", "get_paging"], [43, 5, 1, "", "get_query"], [43, 5, 1, "", "get_update"], [43, 5, 1, "", "success_message"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:class", "3": "py:attribute", "4": "py:method", "5": "py:function", "6": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "method", "Python method"], "5": ["py", "function", "Python function"], "6": ["py", "property", "Python property"]}, "titleterms": {"about": [0, 19], "content": 0, "indic": 0, "tabl": 0, "challeng": 1, "firmwar": [1, 31], "extract": 1, "initi": 1, "analysi": [1, 3, 4, 5, 35, 36, 37], "comparison": 1, "find": 1, "other": 1, "affect": 1, "imag": 1, "easi": 1, "instal": [1, 15, 33], "us": 1, "extend": 1, "integr": 1, "screenshot": 1, "contribut": 1, "latest": 1, "new": 1, "contact": 1, "author": 1, "acknowledg": 1, "sourc": 1, "code": 1, "upgrad": 2, "fact": 2, "from": 2, "3": 2, "4": 2, "plugin": [4, 5, 20, 32, 33, 36], "config": 6, "conftest": [7, 40], "helperfunct": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "compare_set": 9, "modul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 33, 43], "data_convers": 10, "databas": 11, "docker": 12, "filesystem": 13, "hash": 14, "log": 16, "merge_gener": 17, "object_convers": 18, "pdf": 19, "report": 19, "process": 21, "program_setup": 22, "tag": 23, "task_convers": 24, "uid": [25, 27], "virtual_file_path": 26, "web_interfac": [27, 41, 42, 43], "yara_binary_search": 28, "object": [29, 30, 31], "file": 30, "schedul": [34, 35, 36, 37], "test": [38, 39], "unit": 39, "rest": [42, 43], "helper": 43}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About": [[0, "about"]], "Contents": [[0, "contents"]], "Indices and tables": [[0, "indices-and-tables"]], "Challenges": [[1, "challenges"]], "Challenge: Firmware Extraction": [[1, "challenge-firmware-extraction"]], "Challenge: Initial Firmware Analysis": [[1, "challenge-initial-firmware-analysis"]], "Challenge: Firmware Comparison": [[1, "challenge-firmware-comparison"]], "Challenge: Find other affected Firmware Images": [[1, "challenge-find-other-affected-firmware-images"]], "Easy to Install! Easy to Use!": [[1, "easy-to-install-easy-to-use"]], "Easy to Extend! Easy to Integrate!": [[1, "easy-to-extend-easy-to-integrate"]], "Screenshots": [[1, "screenshots"]], "Contributing": [[1, "contributing"]], "Latest News and Contact": [[1, "latest-news-and-contact"]], "Authors and Acknowledgment": [[1, "authors-and-acknowledgment"]], "Source Code": [[1, "source-code"]], "Upgrading FACT from 3 to 4": [[2, "upgrading-fact-from-3-to-4"]], "analysis": [[3, "analysis"]], "analysis.plugin": [[4, "analysis-plugin"]], "analysis.plugin.plugin": [[5, "module-analysis.plugin.plugin"]], "config": [[6, "module-config"]], "conftest": [[7, "module-conftest"], [40, "module-test.unit.conftest"]], "helperFunctions": [[8, "helperfunctions"]], "helperFunctions.compare_sets module": [[9, "module-helperFunctions.compare_sets"]], "helperFunctions.data_conversion module": [[10, "module-helperFunctions.data_conversion"]], "helperFunctions.database module": [[11, "module-helperFunctions.database"]], "helperFunctions.docker module": [[12, "module-helperFunctions.docker"]], "helperFunctions.fileSystem module": [[13, "module-helperFunctions.fileSystem"]], "helperFunctions.hash module": [[14, "module-helperFunctions.hash"]], "helperFunctions.install module": [[15, "module-helperFunctions.install"]], "helperFunctions.logging module": [[16, "module-helperFunctions.logging"]], "helperFunctions.merge_generators module": [[17, "module-helperFunctions.merge_generators"]], "helperFunctions.object_conversion module": [[18, "module-helperFunctions.object_conversion"]], "helperFunctions.pdf module": [[19, "module-helperFunctions.pdf"]], "About the pdf report": [[19, null]], "helperFunctions.plugin module": [[20, "module-helperFunctions.plugin"]], "helperFunctions.process module": [[21, "module-helperFunctions.process"]], "helperFunctions.program_setup module": [[22, "module-helperFunctions.program_setup"]], "helperFunctions.tag module": [[23, "module-helperFunctions.tag"]], "helperFunctions.task_conversion module": [[24, "module-helperFunctions.task_conversion"]], "helperFunctions.uid module": [[25, "module-helperFunctions.uid"]], "helperFunctions.virtual_file_path module": [[26, "module-helperFunctions.virtual_file_path"]], "helperFunctions.uid web_interface": [[27, "module-helperFunctions.web_interface"]], "helperFunctions.yara_binary_search module": [[28, "module-helperFunctions.yara_binary_search"]], "objects": [[29, "objects"]], "objects.file module": [[30, "module-objects.file"]], "objects.firmware module": [[31, "module-objects.firmware"]], "plugins": [[32, "plugins"]], "plugins.installer module": [[33, "module-plugins.installer"]], "scheduler": [[34, "scheduler"]], "scheduler.analysis": [[35, "scheduler-analysis"]], "scheduler.analysis.plugin": [[36, "module-scheduler.analysis.plugin"]], "scheduler.analysis.scheduler": [[37, "module-scheduler.analysis.scheduler"]], "test": [[38, "test"]], "test.unit": [[39, "test-unit"]], "web_interface": [[41, "web-interface"]], "web_interface.rest": [[42, "web-interface-rest"]], "web_interface.rest.helper module": [[43, "module-web_interface.rest.helper"]]}, "indexentries": {"analysisfailederror": [[5, "analysis.plugin.plugin.AnalysisFailedError"]], "analysispluginv0 (class in analysis.plugin.plugin)": [[5, "analysis.plugin.plugin.AnalysisPluginV0"]], "analysispluginv0.metadata (class in analysis.plugin.plugin)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData"]], "schema (analysis.plugin.plugin.analysispluginv0 attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.Schema"]], "schema (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.Schema"]], "tag (class in analysis.plugin.plugin)": [[5, "analysis.plugin.plugin.Tag"]], "analysis.plugin.plugin": [[5, "module-analysis.plugin.plugin"]], "analyze() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.analyze"]], "color (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.color"]], "dependencies (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.dependencies"]], "description (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.description"]], "get_analysis() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.get_analysis"]], "get_tags() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.get_tags"]], "mime_blacklist (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.mime_blacklist"]], "mime_whitelist (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.mime_whitelist"]], "module": [[5, "module-analysis.plugin.plugin"], [6, "module-config"], [7, "module-conftest"], [9, "module-helperFunctions.compare_sets"], [10, "module-helperFunctions.data_conversion"], [11, "module-helperFunctions.database"], [12, "module-helperFunctions.docker"], [13, "module-helperFunctions.fileSystem"], [14, "module-helperFunctions.hash"], [15, "module-helperFunctions.install"], [16, "module-helperFunctions.logging"], [17, "module-helperFunctions.merge_generators"], [18, "module-helperFunctions.object_conversion"], [19, "module-helperFunctions.pdf"], [20, "module-helperFunctions.plugin"], [21, "module-helperFunctions.process"], [22, "module-helperFunctions.program_setup"], [23, "module-helperFunctions.tag"], [24, "module-helperFunctions.task_conversion"], [25, "module-helperFunctions.uid"], [26, "module-helperFunctions.virtual_file_path"], [27, "module-helperFunctions.web_interface"], [28, "module-helperFunctions.yara_binary_search"], [30, "module-objects.file"], [31, "module-objects.firmware"], [33, "module-plugins.installer"], [36, "module-scheduler.analysis.plugin"], [37, "module-scheduler.analysis.scheduler"], [40, "module-test.unit.conftest"], [43, "module-web_interface.rest.helper"]], "name (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.name"]], "name (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.name"]], "propagate (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.propagate"]], "summarize() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.summarize"]], "system_version (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.system_version"]], "timeout (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.timeout"]], "value (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.value"]], "version (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.version"]], "backend (class in config)": [[6, "config.Backend"]], "backend.binarysearch (class in config)": [[6, "config.Backend.BinarySearch"]], "backend.plugin (class in config)": [[6, "config.Backend.Plugin"]], "backend.plugindefaults (class in config)": [[6, "config.Backend.PluginDefaults"]], "backend.unpacking (class in config)": [[6, "config.Backend.Unpacking"]], "common (class in config)": [[6, "config.Common"]], "common.analysispreset (class in config)": [[6, "config.Common.AnalysisPreset"]], "common.logging (class in config)": [[6, "config.Common.Logging"]], "common.postgres (class in config)": [[6, "config.Common.Postgres"]], "common.redis (class in config)": [[6, "config.Common.Redis"]], "frontend (class in config)": [[6, "config.Frontend"]], "frontend.authentication (class in config)": [[6, "config.Frontend.Authentication"]], "frontend.hasura (class in config)": [[6, "config.Frontend.Hasura"]], "admin_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.admin_pw"]], "admin_secret (config.frontend.hasura attribute)": [[6, "config.Frontend.Hasura.admin_secret"]], "admin_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.admin_user"]], "ajax_stats_reload_time (config.frontend attribute)": [[6, "config.Frontend.ajax_stats_reload_time"]], "analysis_preset (config.common attribute)": [[6, "config.Common.analysis_preset"]], "authentication (config.frontend attribute)": [[6, "config.Frontend.authentication"]], "backend() (in module config)": [[6, "config.backend"]], "base_port (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.base_port"]], "binary_search (config.backend attribute)": [[6, "config.Backend.binary_search"]], "block_delay (config.backend attribute)": [[6, "config.Backend.block_delay"]], "collector_worker_count (config.backend attribute)": [[6, "config.Backend.collector_worker_count"]], "common() (in module config)": [[6, "config.common"]], "communication_timeout (config.frontend attribute)": [[6, "config.Frontend.communication_timeout"]], "config": [[6, "module-config"]], "database (config.common.postgres attribute)": [[6, "config.Common.Postgres.database"]], "del_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.del_pw"]], "del_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.del_user"]], "delay (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.delay"]], "docker_mount_base_dir (config.common attribute)": [[6, "config.Common.docker_mount_base_dir"]], "enabled (config.frontend.authentication attribute)": [[6, "config.Frontend.Authentication.enabled"]], "fact_db (config.common.redis attribute)": [[6, "config.Common.Redis.fact_db"]], "file_backend (config.common.logging attribute)": [[6, "config.Common.Logging.file_backend"]], "file_database (config.common.logging attribute)": [[6, "config.Common.Logging.file_database"]], "file_frontend (config.common.logging attribute)": [[6, "config.Common.Logging.file_frontend"]], "firmware_file_storage_directory (config.backend attribute)": [[6, "config.Backend.firmware_file_storage_directory"]], "frontend() (in module config)": [[6, "config.frontend"]], "hasura (config.frontend attribute)": [[6, "config.Frontend.hasura"]], "host (config.common.redis attribute)": [[6, "config.Common.Redis.host"]], "intercom_poll_delay (config.backend attribute)": [[6, "config.Backend.intercom_poll_delay"]], "level (config.common.logging attribute)": [[6, "config.Common.Logging.level"]], "load() (in module config)": [[6, "config.load"]], "logging (config.common attribute)": [[6, "config.Common.logging"]], "max_depth (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.max_depth"]], "max_elements_per_chart (config.frontend attribute)": [[6, "config.Frontend.max_elements_per_chart"]], "max_strings_per_match (config.backend.binarysearch attribute)": [[6, "config.Backend.BinarySearch.max_strings_per_match"]], "memory_limit (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.memory_limit"]], "name (config.backend.plugin attribute)": [[6, "config.Backend.Plugin.name"]], "name (config.common.analysispreset attribute)": [[6, "config.Common.AnalysisPreset.name"]], "number_of_latest_firmwares_to_display (config.frontend attribute)": [[6, "config.Frontend.number_of_latest_firmwares_to_display"]], "password (config.common.redis attribute)": [[6, "config.Common.Redis.password"]], "password_salt (config.frontend.authentication attribute)": [[6, "config.Frontend.Authentication.password_salt"]], "plugin (config.backend attribute)": [[6, "config.Backend.plugin"]], "plugin_defaults (config.backend attribute)": [[6, "config.Backend.plugin_defaults"]], "plugins (config.common.analysispreset attribute)": [[6, "config.Common.AnalysisPreset.plugins"]], "port (config.common.postgres attribute)": [[6, "config.Common.Postgres.port"]], "port (config.common.redis attribute)": [[6, "config.Common.Redis.port"]], "port (config.frontend.hasura attribute)": [[6, "config.Frontend.Hasura.port"]], "postgres (config.common attribute)": [[6, "config.Common.postgres"]], "processes (config.backend.plugindefaults attribute)": [[6, "config.Backend.PluginDefaults.processes"]], "processes (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.processes"]], "radare2_url (config.frontend attribute)": [[6, "config.Frontend.radare2_url"]], "redis (config.common attribute)": [[6, "config.Common.redis"]], "results_per_page (config.frontend attribute)": [[6, "config.Frontend.results_per_page"]], "ro_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.ro_pw"]], "ro_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.ro_user"]], "rw_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.rw_pw"]], "rw_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.rw_user"]], "scheduling_worker_count (config.backend attribute)": [[6, "config.Backend.scheduling_worker_count"]], "server (config.common.postgres attribute)": [[6, "config.Common.Postgres.server"]], "ssdeep_ignore (config.backend attribute)": [[6, "config.Backend.ssdeep_ignore"]], "temp_dir_path (config.common attribute)": [[6, "config.Common.temp_dir_path"]], "test_database (config.common.postgres attribute)": [[6, "config.Common.Postgres.test_database"]], "test_db (config.common.redis attribute)": [[6, "config.Common.Redis.test_db"]], "throttle_limit (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.throttle_limit"]], "throw_exceptions (config.backend attribute)": [[6, "config.Backend.throw_exceptions"]], "unpacking (config.backend attribute)": [[6, "config.Backend.unpacking"]], "user_database (config.frontend.authentication attribute)": [[6, "config.Frontend.Authentication.user_database"]], "whitelist (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.whitelist"]], "analysisplugintestconfig (class in conftest)": [[7, "conftest.AnalysisPluginTestConfig"]], "analysis_plugin() (in module conftest)": [[7, "conftest.analysis_plugin"]], "backend_config() (in module conftest)": [[7, "conftest.backend_config"]], "common_config() (in module conftest)": [[7, "conftest.common_config"]], "conftest": [[7, "module-conftest"]], "docker_mount_base_dir() (in module conftest)": [[7, "conftest.docker_mount_base_dir"]], "firmware_file_storage_directory() (in module conftest)": [[7, "conftest.firmware_file_storage_directory"]], "frontend_config() (in module conftest)": [[7, "conftest.frontend_config"]], "init_kwargs (conftest.analysisplugintestconfig attribute)": [[7, "conftest.AnalysisPluginTestConfig.init_kwargs"]], "plugin_class (conftest.analysisplugintestconfig attribute)": [[7, "conftest.AnalysisPluginTestConfig.plugin_class"]], "start_processes (conftest.analysisplugintestconfig attribute)": [[7, "conftest.AnalysisPluginTestConfig.start_processes"]], "helperfunctions.compare_sets": [[9, "module-helperFunctions.compare_sets"]], "iter_element_and_rest() (in module helperfunctions.compare_sets)": [[9, "helperFunctions.compare_sets.iter_element_and_rest"]], "remove_duplicates_from_list() (in module helperfunctions.compare_sets)": [[9, "helperFunctions.compare_sets.remove_duplicates_from_list"]], "substring_is_in_list() (in module helperfunctions.compare_sets)": [[9, "helperFunctions.compare_sets.substring_is_in_list"]], "convert_compare_id_to_list() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_compare_id_to_list"]], "convert_str_to_bool() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_str_to_bool"]], "convert_time_to_str() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_time_to_str"]], "convert_uid_list_to_compare_id() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_uid_list_to_compare_id"]], "get_value_of_first_key() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.get_value_of_first_key"]], "helperfunctions.data_conversion": [[10, "module-helperFunctions.data_conversion"]], "make_bytes() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.make_bytes"]], "make_unicode_string() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.make_unicode_string"]], "none_to_none() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.none_to_none"]], "normalize_compare_id() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.normalize_compare_id"]], "get_shared_session() (in module helperfunctions.database)": [[11, "helperFunctions.database.get_shared_session"]], "helperfunctions.database": [[11, "module-helperFunctions.database"]], "helperfunctions.docker": [[12, "module-helperFunctions.docker"]], "run_docker_container() (in module helperfunctions.docker)": [[12, "helperFunctions.docker.run_docker_container"]], "file_is_empty() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.file_is_empty"]], "get_config_dir() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_config_dir"]], "get_relative_object_path() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_relative_object_path"]], "get_src_dir() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_src_dir"]], "get_template_dir() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_template_dir"]], "helperfunctions.filesystem": [[13, "module-helperFunctions.fileSystem"]], "get_hash() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_hash"]], "get_md5() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_md5"]], "get_sha256() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_sha256"]], "get_tlsh_comparison() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_tlsh_comparison"]], "helperfunctions.hash": [[14, "module-helperFunctions.hash"]], "normalize_lief_items() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.normalize_lief_items"]], "installationerror": [[15, "helperFunctions.install.InstallationError"]], "operateindirectory (class in helperfunctions.install)": [[15, "helperFunctions.install.OperateInDirectory"]], "apt_install_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.apt_install_packages"]], "apt_remove_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.apt_remove_packages"]], "apt_update_sources() (in module helperfunctions.install)": [[15, "helperFunctions.install.apt_update_sources"]], "check_distribution() (in module helperfunctions.install)": [[15, "helperFunctions.install.check_distribution"]], "check_if_command_in_path() (in module helperfunctions.install)": [[15, "helperFunctions.install.check_if_command_in_path"]], "dnf_install_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.dnf_install_packages"]], "dnf_remove_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.dnf_remove_packages"]], "dnf_update_sources() (in module helperfunctions.install)": [[15, "helperFunctions.install.dnf_update_sources"]], "helperfunctions.install": [[15, "module-helperFunctions.install"]], "install_github_project() (in module helperfunctions.install)": [[15, "helperFunctions.install.install_github_project"]], "install_pip_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.install_pip_packages"]], "is_virtualenv() (in module helperfunctions.install)": [[15, "helperFunctions.install.is_virtualenv"]], "log_current_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.log_current_packages"]], "read_package_list_from_file() (in module helperfunctions.install)": [[15, "helperFunctions.install.read_package_list_from_file"]], "remove_folder() (in module helperfunctions.install)": [[15, "helperFunctions.install.remove_folder"]], "run_cmd_with_logging() (in module helperfunctions.install)": [[15, "helperFunctions.install.run_cmd_with_logging"]], "blue (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.BLUE"]], "bold (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.BOLD"]], "coloringformatter (class in helperfunctions.logging)": [[16, "helperFunctions.logging.ColoringFormatter"]], "endc (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.ENDC"]], "fail (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.FAIL"]], "green (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.GREEN"]], "header (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.HEADER"]], "log_level_colors (helperfunctions.logging.coloringformatter attribute)": [[16, "helperFunctions.logging.ColoringFormatter.LOG_LEVEL_COLORS"]], "okblue (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.OKBLUE"]], "okgreen (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.OKGREEN"]], "purple (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.PURPLE"]], "red (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.RED"]], "terminalcolors (class in helperfunctions.logging)": [[16, "helperFunctions.logging.TerminalColors"]], "underline (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.UNDERLINE"]], "warning (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.WARNING"]], "yellow (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.YELLOW"]], "color_string() (in module helperfunctions.logging)": [[16, "helperFunctions.logging.color_string"]], "format() (helperfunctions.logging.coloringformatter method)": [[16, "helperFunctions.logging.ColoringFormatter.format"]], "helperfunctions.logging": [[16, "module-helperFunctions.logging"]], "helperfunctions.merge_generators": [[17, "module-helperFunctions.merge_generators"]], "shuffled() (in module helperfunctions.merge_generators)": [[17, "helperFunctions.merge_generators.shuffled"]], "create_meta_dict() (in module helperfunctions.object_conversion)": [[18, "helperFunctions.object_conversion.create_meta_dict"]], "helperfunctions.object_conversion": [[18, "module-helperFunctions.object_conversion"]], "build_pdf_report() (in module helperfunctions.pdf)": [[19, "helperFunctions.pdf.build_pdf_report"]], "helperfunctions.pdf": [[19, "module-helperFunctions.pdf"]], "discover_analysis_plugins() (in module helperfunctions.plugin)": [[20, "helperFunctions.plugin.discover_analysis_plugins"]], "discover_compare_plugins() (in module helperfunctions.plugin)": [[20, "helperFunctions.plugin.discover_compare_plugins"]], "helperfunctions.plugin": [[20, "module-helperFunctions.plugin"]], "exceptionsafeprocess (class in helperfunctions.process)": [[21, "helperFunctions.process.ExceptionSafeProcess"]], "check_worker_exceptions() (in module helperfunctions.process)": [[21, "helperFunctions.process.check_worker_exceptions"]], "complete_shutdown() (in module helperfunctions.process)": [[21, "helperFunctions.process.complete_shutdown"]], "exception (helperfunctions.process.exceptionsafeprocess property)": [[21, "helperFunctions.process.ExceptionSafeProcess.exception"]], "helperfunctions.process": [[21, "module-helperFunctions.process"]], "new_worker_was_started() (in module helperfunctions.process)": [[21, "helperFunctions.process.new_worker_was_started"]], "run() (helperfunctions.process.exceptionsafeprocess method)": [[21, "helperFunctions.process.ExceptionSafeProcess.run"]], "start_single_worker() (in module helperfunctions.process)": [[21, "helperFunctions.process.start_single_worker"]], "stop_process() (in module helperfunctions.process)": [[21, "helperFunctions.process.stop_process"]], "stop_processes() (in module helperfunctions.process)": [[21, "helperFunctions.process.stop_processes"]], "terminate_process_and_children() (in module helperfunctions.process)": [[21, "helperFunctions.process.terminate_process_and_children"]], "helperfunctions.program_setup": [[22, "module-helperFunctions.program_setup"]], "setup_argparser() (in module helperfunctions.program_setup)": [[22, "helperFunctions.program_setup.setup_argparser"]], "setup_logging() (in module helperfunctions.program_setup)": [[22, "helperFunctions.program_setup.setup_logging"]], "all (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.ALL"]], "blue (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.BLUE"]], "dark (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.DARK"]], "gray (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.GRAY"]], "green (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.GREEN"]], "light (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.LIGHT"]], "light_blue (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.LIGHT_BLUE"]], "orange (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.ORANGE"]], "red (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.RED"]], "tagcolor (class in helperfunctions.tag)": [[23, "helperFunctions.tag.TagColor"]], "helperfunctions.tag": [[23, "module-helperFunctions.tag"]], "convert_analysis_task_to_fw_obj() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.convert_analysis_task_to_fw_obj"]], "create_analysis_task() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.create_analysis_task"]], "create_re_analyze_task() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.create_re_analyze_task"]], "get_file_name_and_binary_from_request() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.get_file_name_and_binary_from_request"]], "helperfunctions.task_conversion": [[24, "module-helperFunctions.task_conversion"]], "create_uid() (in module helperfunctions.uid)": [[25, "helperFunctions.uid.create_uid"]], "helperfunctions.uid": [[25, "module-helperFunctions.uid"]], "is_list_of_uids() (in module helperfunctions.uid)": [[25, "helperFunctions.uid.is_list_of_uids"]], "is_uid() (in module helperfunctions.uid)": [[25, "helperFunctions.uid.is_uid"]], "filter_vpf_dict() (in module helperfunctions.virtual_file_path)": [[26, "helperFunctions.virtual_file_path.filter_vpf_dict"]], "get_paths_for_all_parents() (in module helperfunctions.virtual_file_path)": [[26, "helperFunctions.virtual_file_path.get_paths_for_all_parents"]], "get_some_vfp() (in module helperfunctions.virtual_file_path)": [[26, "helperFunctions.virtual_file_path.get_some_vfp"]], "helperfunctions.virtual_file_path": [[26, "module-helperFunctions.virtual_file_path"]], "apply_filters_to_query() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.apply_filters_to_query"]], "cap_length_of_element() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.cap_length_of_element"]], "filter_out_illegal_characters() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.filter_out_illegal_characters"]], "format_time() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.format_time"]], "get_alternating_color_list() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.get_alternating_color_list"]], "get_color_list() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.get_color_list"]], "get_template_as_string() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.get_template_as_string"]], "helperfunctions.web_interface": [[27, "module-helperFunctions.web_interface"]], "password_is_legal() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.password_is_legal"]], "yarabinarysearchscanner (class in helperfunctions.yara_binary_search)": [[28, "helperFunctions.yara_binary_search.YaraBinarySearchScanner"]], "get_binary_search_result() (helperfunctions.yara_binary_search.yarabinarysearchscanner method)": [[28, "helperFunctions.yara_binary_search.YaraBinarySearchScanner.get_binary_search_result"]], "get_yara_error() (in module helperfunctions.yara_binary_search)": [[28, "helperFunctions.yara_binary_search.get_yara_error"]], "helperfunctions.yara_binary_search": [[28, "module-helperFunctions.yara_binary_search"]], "is_valid_yara_rule_file() (in module helperfunctions.yara_binary_search)": [[28, "helperFunctions.yara_binary_search.is_valid_yara_rule_file"]], "fileobject (class in objects.file)": [[30, "objects.file.FileObject"]], "add_included_file() (objects.file.fileobject method)": [[30, "objects.file.FileObject.add_included_file"]], "analysis_exception (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.analysis_exception"]], "analysis_tags (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.analysis_tags"]], "binary (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.binary"]], "comments (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.comments"]], "create_binary_from_path() (objects.file.fileobject method)": [[30, "objects.file.FileObject.create_binary_from_path"]], "depth (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.depth"]], "file_name (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.file_name"]], "file_path (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.file_path"]], "files_included (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.files_included"]], "from_json() (objects.file.fileobject class method)": [[30, "objects.file.FileObject.from_json"]], "get_hid() (objects.file.fileobject method)": [[30, "objects.file.FileObject.get_hid"]], "get_virtual_paths_for_all_uids() (objects.file.fileobject method)": [[30, "objects.file.FileObject.get_virtual_paths_for_all_uids"]], "list_of_all_included_files (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.list_of_all_included_files"]], "objects.file": [[30, "module-objects.file"]], "parent_firmware_uids (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.parent_firmware_uids"]], "parents (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.parents"]], "processed_analysis (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.processed_analysis"]], "root_uid (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.root_uid"]], "scheduled_analysis (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.scheduled_analysis"]], "set_binary() (objects.file.fileobject method)": [[30, "objects.file.FileObject.set_binary"]], "sha256 (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.sha256"]], "size (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.size"]], "temporary_data (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.temporary_data"]], "to_json() (objects.file.fileobject method)": [[30, "objects.file.FileObject.to_json"]], "uid (objects.file.fileobject property)": [[30, "objects.file.FileObject.uid"]], "virtual_file_path (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.virtual_file_path"]], "firmware (class in objects.firmware)": [[31, "objects.firmware.Firmware"]], "device_class (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.device_class"]], "device_name (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.device_name"]], "from_json() (objects.firmware.firmware class method)": [[31, "objects.firmware.Firmware.from_json"]], "get_hid() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.get_hid"]], "objects.firmware": [[31, "module-objects.firmware"]], "part (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.part"]], "release_date (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.release_date"]], "set_binary() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.set_binary"]], "set_part_name() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.set_part_name"]], "set_tag() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.set_tag"]], "tags (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.tags"]], "to_json() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.to_json"]], "vendor (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.vendor"]], "version (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.version"]], "abstractplugininstaller (class in plugins.installer)": [[33, "plugins.installer.AbstractPluginInstaller"]], "base_path (plugins.installer.abstractplugininstaller attribute)": [[33, "plugins.installer.AbstractPluginInstaller.base_path"]], "build() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.build"]], "install() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install"]], "install_docker_images() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_docker_images"]], "install_files() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_files"]], "install_other_packages() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_other_packages"]], "install_pip_packages() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_pip_packages"]], "install_system_packages() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_system_packages"]], "plugins.installer": [[33, "module-plugins.installer"]], "analysisexceptionerror": [[36, "scheduler.analysis.plugin.AnalysisExceptionError"]], "pluginrunner (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.PluginRunner"]], "pluginrunner.config (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.PluginRunner.Config"]], "pluginrunner.task (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.PluginRunner.Task"]], "sigterm_timeout (scheduler.analysis.plugin.worker attribute)": [[36, "scheduler.analysis.plugin.Worker.SIGTERM_TIMEOUT"]], "worker (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.Worker"]], "worker.config (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.Worker.Config"]], "worker.crashederror": [[36, "scheduler.analysis.plugin.Worker.CrashedError"]], "worker.timeouterror": [[36, "scheduler.analysis.plugin.Worker.TimeoutError"]], "dependencies (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.dependencies"]], "get_active_worker_count() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.get_active_worker_count"]], "get_queue_len() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.get_queue_len"]], "is_working() (scheduler.analysis.plugin.worker method)": [[36, "scheduler.analysis.plugin.Worker.is_working"]], "out_queue (scheduler.analysis.plugin.pluginrunner attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.out_queue"]], "path (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.path"]], "process_count (scheduler.analysis.plugin.pluginrunner.config attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Config.process_count"]], "queue_analysis() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.queue_analysis"]], "run() (scheduler.analysis.plugin.worker method)": [[36, "scheduler.analysis.plugin.Worker.run"]], "scheduler.analysis.plugin": [[36, "module-scheduler.analysis.plugin"]], "scheduler_state (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.scheduler_state"]], "shutdown() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.shutdown"]], "start() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.start"]], "timeout (scheduler.analysis.plugin.pluginrunner.config attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Config.timeout"]], "timeout (scheduler.analysis.plugin.worker.config attribute)": [[36, "scheduler.analysis.plugin.Worker.Config.timeout"]], "virtual_file_path (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.virtual_file_path"]], "analysisscheduler (class in scheduler.analysis.scheduler)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler"]], "cancel_analysis() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.cancel_analysis"]], "check_exceptions() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.check_exceptions"]], "get_combined_analysis_workload() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.get_combined_analysis_workload"]], "get_plugin_dict() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.get_plugin_dict"]], "get_scheduled_workload() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.get_scheduled_workload"]], "scheduler.analysis.scheduler": [[37, "module-scheduler.analysis.scheduler"]], "shutdown() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.shutdown"]], "start() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.start"]], "start_analysis_of_object() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.start_analysis_of_object"]], "update_analysis_of_object_and_children() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.update_analysis_of_object_and_children"]], "update_analysis_of_single_object() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.update_analysis_of_single_object"]], "commonintercommock (class in test.unit.conftest)": [[40, "test.unit.conftest.CommonIntercomMock"]], "frontenddatabasemock (class in test.unit.conftest)": [[40, "test.unit.conftest.FrontendDatabaseMock"]], "statusinterfacemock (class in test.unit.conftest)": [[40, "test.unit.conftest.StatusInterfaceMock"]], "webinterfaceunittestconfig (class in test.unit.conftest)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig"]], "add_analysis_task() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.add_analysis_task"]], "add_binary_search_request() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.add_binary_search_request"]], "add_compare_task() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.add_compare_task"]], "add_re_analyze_task() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.add_re_analyze_task"]], "cancel_analysis() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.cancel_analysis"]], "database_mock_class (test.unit.conftest.webinterfaceunittestconfig attribute)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig.database_mock_class"]], "get_analysis_status() (test.unit.conftest.statusinterfacemock method)": [[40, "test.unit.conftest.StatusInterfaceMock.get_analysis_status"]], "get_available_analysis_plugins() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.get_available_analysis_plugins"]], "get_binary_and_filename() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.get_binary_and_filename"]], "get_binary_search_result() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.get_binary_search_result"]], "get_repacked_binary_and_file_name() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.get_repacked_binary_and_file_name"]], "intercom_mock_class (test.unit.conftest.webinterfaceunittestconfig attribute)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig.intercom_mock_class"]], "intercom_task_list() (in module test.unit.conftest)": [[40, "test.unit.conftest.intercom_task_list"]], "peek_in_binary() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.peek_in_binary"]], "set_analysis_status() (test.unit.conftest.statusinterfacemock method)": [[40, "test.unit.conftest.StatusInterfaceMock.set_analysis_status"]], "shutdown() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.shutdown"]], "status_mock_class (test.unit.conftest.webinterfaceunittestconfig attribute)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig.status_mock_class"]], "task_list (test.unit.conftest.commonintercommock attribute)": [[40, "test.unit.conftest.CommonIntercomMock.task_list"]], "test.unit.conftest": [[40, "module-test.unit.conftest"]], "test_client() (in module test.unit.conftest)": [[40, "test.unit.conftest.test_client"]], "web_frontend() (in module test.unit.conftest)": [[40, "test.unit.conftest.web_frontend"]], "error_message() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.error_message"]], "get_boolean_from_request() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_boolean_from_request"]], "get_current_gmt() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_current_gmt"]], "get_paging() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_paging"]], "get_query() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_query"]], "get_update() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_update"]], "success_message() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.success_message"]], "web_interface.rest.helper": [[43, "module-web_interface.rest.helper"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "main", "migration", "modules/analysis", "modules/analysis.plugin", "modules/analysis.plugin.plugin", "modules/config", "modules/conftest", "modules/helperFunctions", "modules/helperFunctions.compare_sets", "modules/helperFunctions.data_conversion", "modules/helperFunctions.database", "modules/helperFunctions.docker", "modules/helperFunctions.fileSystem", "modules/helperFunctions.hash", "modules/helperFunctions.install", "modules/helperFunctions.logging", "modules/helperFunctions.merge_generators", "modules/helperFunctions.object_conversion", "modules/helperFunctions.pdf", "modules/helperFunctions.plugin", "modules/helperFunctions.process", "modules/helperFunctions.program_setup", "modules/helperFunctions.tag", "modules/helperFunctions.task_conversion", "modules/helperFunctions.uid", "modules/helperFunctions.virtual_file_path", "modules/helperFunctions.web_interface", "modules/helperFunctions.yara_binary_search", "modules/objects", "modules/objects.file", "modules/objects.firmware", "modules/plugins", "modules/plugins.installer", "modules/scheduler", "modules/scheduler.analysis", "modules/scheduler.analysis.plugin", "modules/scheduler.analysis.scheduler", "modules/test", "modules/test.unit", "modules/test.unit.conftest", "modules/web_interface", "modules/web_interface.rest", "modules/web_interface.rest.helper"], "filenames": ["index.rst", "main.rst", "migration.rst", "modules/analysis.rst", "modules/analysis.plugin.rst", "modules/analysis.plugin.plugin.rst", "modules/config.rst", "modules/conftest.rst", "modules/helperFunctions.rst", "modules/helperFunctions.compare_sets.rst", "modules/helperFunctions.data_conversion.rst", "modules/helperFunctions.database.rst", "modules/helperFunctions.docker.rst", "modules/helperFunctions.fileSystem.rst", "modules/helperFunctions.hash.rst", "modules/helperFunctions.install.rst", "modules/helperFunctions.logging.rst", "modules/helperFunctions.merge_generators.rst", "modules/helperFunctions.object_conversion.rst", "modules/helperFunctions.pdf.rst", "modules/helperFunctions.plugin.rst", "modules/helperFunctions.process.rst", "modules/helperFunctions.program_setup.rst", "modules/helperFunctions.tag.rst", "modules/helperFunctions.task_conversion.rst", "modules/helperFunctions.uid.rst", "modules/helperFunctions.virtual_file_path.rst", "modules/helperFunctions.web_interface.rst", "modules/helperFunctions.yara_binary_search.rst", "modules/objects.rst", "modules/objects.file.rst", "modules/objects.firmware.rst", "modules/plugins.rst", "modules/plugins.installer.rst", "modules/scheduler.rst", "modules/scheduler.analysis.rst", "modules/scheduler.analysis.plugin.rst", "modules/scheduler.analysis.scheduler.rst", "modules/test.rst", "modules/test.unit.rst", "modules/test.unit.conftest.rst", "modules/web_interface.rst", "modules/web_interface.rest.rst", "modules/web_interface.rest.helper.rst"], "titles": ["About", "Challenges", "Upgrading FACT from 3 to 4", "analysis", "analysis.plugin", "analysis.plugin.plugin", "config", "conftest", "helperFunctions", "helperFunctions.compare_sets module", "helperFunctions.data_conversion module", "helperFunctions.database module", "helperFunctions.docker module", "helperFunctions.fileSystem module", "helperFunctions.hash module", "helperFunctions.install module", "helperFunctions.logging module", "helperFunctions.merge_generators module", "helperFunctions.object_conversion module", "helperFunctions.pdf module", "helperFunctions.plugin module", "helperFunctions.process module", "helperFunctions.program_setup module", "helperFunctions.tag module", "helperFunctions.task_conversion module", "helperFunctions.uid module", "helperFunctions.virtual_file_path module", "helperFunctions.uid web_interface", "helperFunctions.yara_binary_search module", "objects", "objects.file module", "objects.firmware module", "plugins", "plugins.installer module", "scheduler", "scheduler.analysis", "scheduler.analysis.plugin", "scheduler.analysis.scheduler", "test", "test.unit", "conftest", "web_interface", "web_interface.rest", "web_interface.rest.helper module"], "terms": {"The": [0, 1, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 19, 21, 22, 24, 27, 28, 30, 31, 33, 36, 37, 40, 43], "firmwar": [0, 5, 10, 13, 19, 22, 24, 28, 29, 30, 37], "analysi": [0, 2, 19, 20, 21, 22, 24, 30, 31, 34, 43], "comparison": [0, 2, 10, 22], "tool": [0, 1, 19, 22], "fact": [0, 1, 10, 13, 15, 21, 22, 28, 30, 31, 43], "i": [0, 1, 2, 5, 6, 7, 9, 10, 12, 13, 15, 16, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31, 33, 36, 37, 43], "intend": 0, "autom": [0, 1], "secur": [0, 1], "router": [0, 31], "iot": 0, "uefi": 0, "webcam": 0, "drone": 0, "therebi": 0, "shall": [0, 31, 43], "easi": 0, "us": [0, 2, 5, 6, 10, 12, 14, 15, 16, 21, 22, 30, 31, 33, 37, 40, 43], "web": [0, 1, 10, 27, 37], "ui": [0, 30, 37], "extend": 0, "plug": [0, 1], "system": [0, 5, 15, 31, 43], "integr": 0, "rest": [0, 1, 9, 37, 41], "api": [0, 1, 37, 43], "challeng": 0, "instal": [0, 2, 8, 32], "screenshot": 0, "contribut": 0, "latest": 0, "new": [0, 2, 9, 21, 30, 37], "contact": 0, "author": [0, 30], "acknowledg": 0, "sourc": 0, "code": [0, 5, 6, 10, 14, 43], "upgrad": [0, 15], "from": [0, 5, 6, 9, 10, 13, 15, 16, 22, 24, 26, 27, 30, 31, 43], "3": [0, 5, 10, 22, 37], "4": [0, 1, 5, 6, 22], "index": [0, 21], "modul": [0, 6, 8, 29, 32, 37, 41, 42], "search": [0, 1, 28], "page": [0, 19, 43], "tough": 1, "lot": [1, 30], "task": [1, 24, 28, 34, 35, 36, 37, 40], "mani": 1, "can": [1, 2, 5, 6, 7, 10, 22, 27, 30, 31, 33, 36, 37, 40], "either": [1, 14, 15, 22, 28, 30], "approach": 1, "incorpor": 1, "exist": [1, 2, 24, 37], "so": [1, 10, 27, 30, 37], "analyst": 1, "focu": [1, 28], "hi": 1, "main": 1, "analyz": [1, 3, 4, 5, 31, 36, 37], "vulner": 1, "implement": [1, 19], "thi": [1, 2, 5, 6, 7, 12, 15, 16, 21, 22, 28, 30, 31, 33, 36, 37, 40, 43], "lead": [1, 5], "more": [1, 5, 6, 14, 22], "complet": [1, 2, 31, 33, 37], "well": 1, "massiv": 1, "speedup": 1, "hunt": 1, "see": [1, 5, 6, 7, 14, 21, 22, 31, 33, 36, 37, 40], "pictur": 1, "blow": 1, "veri": 1, "time": [1, 10, 30, 31, 43], "consum": 1, "At": 1, "first": [1, 2, 10, 14, 30], "you": [1, 2, 5, 6, 7, 22, 30, 33], "have": [1, 2, 7, 13, 15, 22, 23, 30, 37], "identifi": [1, 10, 15, 24, 25, 27, 30, 31, 43], "contain": [1, 5, 9, 12, 15, 16, 18, 19, 21, 23, 24, 25, 26, 28, 30, 31, 36, 37, 43], "format": [1, 8, 16, 27, 31], "afterward": [1, 15, 37], "need": [1, 2, 7, 13, 36, 37], "an": [1, 5, 6, 7, 9, 13, 15, 17, 19, 20, 21, 22, 24, 27, 28, 30, 31, 37, 40], "appropri": 1, "unpack": [1, 6, 13, 21, 30, 37, 40], "If": [1, 7, 10, 12, 15, 21, 22, 27, 30, 33], "avail": 1, "might": [1, 5, 27, 30, 37, 43], "try": [1, 21, 28], "file": [1, 5, 6, 13, 15, 18, 19, 24, 26, 27, 28, 29, 31, 33, 36, 37], "carver": 1, "like": [1, 7, 30], "binwalk": 1, "least": [1, 30], "some": [1, 5, 6, 10, 13, 22, 26, 30], "compon": [1, 21, 22], "when": [1, 2, 6, 15], "finish": [1, 36, 37], "must": [1, 5, 6, 16, 33], "re": [1, 21], "do": [1, 33], "each": [1, 9, 15, 20, 30, 31, 37], "layer": [1, 30], "multipl": [1, 15, 30], "whole": 1, "process": [1, 5, 6, 7, 8, 36, 37], "next": [1, 30], "out": [1, 15, 26, 27, 37], "much": 1, "about": 1, "possibl": [1, 9], "potenti": 1, "risk": 1, "A": [1, 5, 7, 9, 10, 12, 15, 16, 17, 21, 22, 23, 24, 26, 27, 28, 30, 33, 36, 37, 40], "few": 1, "solv": 1, "ar": [1, 5, 6, 12, 15, 21, 25, 26, 28, 30, 31, 36, 37], "list": [1, 5, 6, 9, 10, 14, 15, 16, 17, 20, 21, 23, 25, 26, 27, 28, 30, 37, 40, 43], "below": 1, "softwar": [1, 22], "identif": 1, "which": [1, 2, 5, 7, 10, 12, 15, 19, 27, 31, 33, 36, 37], "o": 1, "program": [1, 15, 22], "present": [1, 27, 30, 31, 37], "version": [1, 2, 4, 5, 22, 29, 30, 31, 37], "servic": 1, "start": [1, 2, 7, 15, 21, 31, 34, 35, 36, 37], "boot": 1, "ani": [1, 5, 6, 7, 9, 10, 16, 21, 22, 24, 27, 30, 33, 36, 37, 40], "known": 1, "cve": 1, "login": 1, "credenti": 1, "especi": 1, "hard": 1, "password": [1, 6, 27], "crypto": 1, "materi": 1, "detect": 1, "privat": 1, "kei": [1, 10, 30, 36], "certif": 1, "cpu": 1, "architectur": 1, "emul": 1, "disassembl": 1, "check": [1, 9, 13, 15, 21, 25, 27, 28, 37], "execut": [1, 12, 15, 21, 33, 36, 37], "util": [1, 10], "qemu": 1, "fuzz": 1, "debug": [1, 16, 30], "look": [1, 6, 30], "flaw": 1, "cwe": 1, "In": [1, 5, 21, 31], "case": [1, 15, 21, 24], "want": [1, 2, 7], "compar": [1, 10, 20, 21], "sampl": 1, "For": [1, 15, 19, 30, 31], "instanc": [1, 5, 6, 7, 12, 21, 31, 37, 40], "know": 1, "where": [1, 5, 20, 37, 40], "manufactur": 1, "fix": [1, 5], "issu": 1, "Or": 1, "your": [1, 2, 7, 22], "devic": [1, 27, 31], "origin": 1, "provid": [1, 9, 28, 31, 37, 40], "thei": [1, 5, 37], "differ": [1, 23, 27, 37], "part": [1, 6, 29, 30, 31], "chang": [1, 5, 15], "further": [1, 37], "investig": 1, "again": 1, "abl": [1, 2], "equal": 1, "share": 1, "therefor": 1, "store": [1, 24, 30, 31, 37], "all": [1, 2, 5, 8, 9, 12, 15, 19, 21, 23, 25, 26, 28, 30, 31, 36, 37], "result": [1, 2, 5, 19, 28, 30, 37, 43], "searchabl": 1, "databas": [1, 2, 6, 8, 24, 28, 30, 31, 37], "byte": [1, 10, 13, 14, 24, 25, 28, 30, 31], "pattern": [1, 28], "kind": 1, "script": [1, 2], "ubuntu": [1, 15], "18": [1, 22], "04": 1, "depend": [1, 2, 4, 5, 35, 36, 37, 43], "automat": [1, 16], "support": [1, 7, 15], "19": 1, "debian": [1, 15], "9": [1, 5], "10": [1, 6, 10, 21, 27], "kali": [1, 15], "2019": 1, "howev": 1, "minor": [1, 5], "becaus": [1, 15], "we": [1, 31], "activ": 1, "develop": 1, "platform": 1, "bug": [1, 5], "pleas": 1, "tell": 1, "u": 1, "readm": 1, "detail": [1, 19, 22], "furthermor": 1, "gui": 1, "right": [1, 15], "awai": 1, "without": [1, 22, 26, 27, 37], "knowledg": 1, "base": [1, 5, 6, 7, 15, 16, 19, 21, 23, 24, 28, 30, 31, 33, 36, 37, 40], "concept": 1, "extractor": [1, 13], "featur": 1, "function": [1, 6, 12, 14, 21, 28, 30, 37, 43], "ins": 1, "found": [1, 5, 9, 12, 15, 26], "": [1, 13, 15, 30, 37], "manual": 1, "sinc": 1, "cover": 1, "almost": 1, "our": 1, "document": [1, 7, 40], "There": [1, 15, 31], "wai": 1, "write": 1, "own": 1, "repositori": 1, "under": [1, 22], "favorit": 1, "licens": [1, 22], "It": [1, 5, 6, 7, 30, 31, 40], "ad": [1, 5, 21, 40], "local": [1, 30], "git": 1, "submodul": 1, "would": [1, 5, 30], "love": 1, "hear": 1, "go": 1, "welcom": 1, "improv": 1, "fact_cor": [1, 5, 15], "guidelin": [1, 43], "befor": [1, 21, 37], "creat": [1, 13, 18, 19, 21, 24, 43], "pull": [1, 33], "request": [1, 7, 12, 24, 27, 40, 43], "No": [1, 37], "matter": 1, "how": [1, 5], "question": 1, "hesit": 1, "ask": 1, "follow": [1, 7, 37], "twitter": 1, "fandctool": 1, "get": [1, 9, 10, 13, 21, 26, 27, 28, 30, 31, 37, 43], "mail": 1, "fraunhof": [1, 22], "fkie": [1, 15, 22], "commun": [1, 12], "partli": 1, "financ": 1, "german": 1, "feder": 1, "offic": 1, "inform": [1, 5, 6, 18, 30, 36, 37, 43], "bsi": 1, "board": 1, "live": 1, "github": [1, 15], "With": 2, "releas": [2, 31], "0": [2, 7, 10, 13, 21, 30, 37], "wa": [2, 5, 6, 10, 12, 21, 27, 30], "switch": 2, "mongodb": [2, 27, 43], "postgresql": 2, "To": 2, "simpli": [2, 37], "rerun": 2, "python3": 2, "src": [2, 13], "py": 2, "old": [2, 21], "migrat": 2, "mongod": 2, "config": [2, 13, 28, 34, 35, 36, 37], "conf": 2, "Then": 2, "migrate_db_to_postgresql": 2, "after": [2, 6, 12, 15, 16, 27, 30, 36, 37], "should": [2, 5, 7, 15, 21, 22, 30, 37], "normal": [2, 7], "find": [2, 15], "data": [2, 5, 10, 14, 24, 25, 30, 31, 43], "doe": [2, 7, 15, 21], "anymor": 2, "mai": [2, 5, 6, 10, 15, 21, 23, 31, 33, 37], "uninstal": 2, "m": [2, 22], "pip": [2, 15, 33], "pymongo": 2, "sudo": [2, 15], "apt": [2, 33], "remov": [2, 9, 13, 15], "org": [2, 22], "plugin": [3, 6, 7, 8, 30, 31, 34, 35, 37, 43], "analysisfailederror": [3, 4, 5], "analysispluginv0": [3, 4, 5, 7, 36], "metadata": [3, 4, 5, 30], "schema": [3, 4, 5], "get_analysi": [3, 4, 5], "get_tag": [3, 4, 5], "summar": [3, 4, 5], "tag": [3, 4, 5, 8, 29, 30, 31], "color": [3, 4, 5, 16, 23, 27, 30, 31], "name": [3, 4, 5, 6, 7, 12, 15, 21, 22, 24, 27, 30, 31, 36, 37, 43], "propag": [3, 4, 5, 30, 31, 37], "valu": [3, 4, 5, 10, 15, 21, 27, 28, 30, 31, 36, 37, 43], "descript": [4, 5, 22, 37], "mime_blacklist": [4, 5, 37], "mime_whitelist": [4, 5, 37], "system_vers": [4, 5], "timeout": [4, 5, 7, 12, 15, 21, 35, 36], "except": [5, 8, 12, 15, 21, 28, 30, 33, 36, 37], "class": [5, 6, 7, 15, 16, 21, 23, 27, 28, 30, 31, 33, 36, 37, 40], "object": [5, 9, 10, 13, 14, 15, 16, 18, 23, 24, 27, 28, 33, 36, 37, 40], "abstract": 5, "inherit": [5, 30], "mustn": 5, "t": [5, 6, 7, 15, 17, 33], "paramet": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 27, 28, 30, 31, 33, 36, 37, 40, 43], "arg": [5, 6, 7, 12, 21, 22, 36, 40], "kwarg": [5, 6, 7, 12, 15, 21, 31, 36, 40], "basemodel": [5, 6, 7, 36, 40], "describ": 5, "return": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 36, 37, 40, 43], "type": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 24, 25, 26, 27, 28, 30, 31, 36, 37, 40, 43], "str": [5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 21, 24, 25, 26, 27, 28, 30, 31, 33, 36, 37, 43], "mimetyp": 5, "option": [5, 15, 21, 22, 28, 30, 31, 37], "none": [5, 6, 10, 16, 21, 24, 26, 27, 28, 30, 31, 33, 37, 40, 43], "back": [5, 10, 15], "e": [5, 9, 10, 13, 15, 21, 25, 27, 30, 37], "g": [5, 9, 10, 21, 25, 27, 37], "yara": [5, 28], "int": [5, 6, 10, 12, 21, 27, 36, 37, 43], "300": [5, 12], "expect": [5, 7, 15], "take": [5, 30], "longer": 5, "than": [5, 33], "second": [5, 14, 21, 27, 36], "given": [5, 7, 15, 19, 27, 28, 30, 37], "abort": [5, 36], "reach": [5, 12, 21], "semver": 5, "here": 5, "quick": 5, "summari": [5, 30], "relat": [5, 13, 30, 33], "major": 5, "didn": 5, "patch": [5, 6, 7], "crash": 5, "note": 5, "reschedul": 5, "But": 5, "backward": 5, "compat": [5, 16, 27], "still": 5, "shown": [5, 37], "frontend": [5, 6, 7], "file_handl": 5, "virtual_file_path": [5, 8, 29, 30, 35, 36], "analys": [5, 37], "noth": 5, "io": 5, "fileio": 5, "dict": [5, 6, 7, 10, 24, 26, 27, 28, 30, 31, 36, 37, 40, 43], "virtual": [5, 15, 26, 27, 30, 31, 36], "path": [5, 6, 13, 15, 19, 26, 27, 30, 31, 35, 36], "fileobject": [5, 10, 18, 26, 29, 30, 31, 36, 37], "pydant": [5, 36], "dictionari": [5, 10, 18, 31, 36, 37, 43], "anyth": [5, 10, 33], "final": 5, "categori": 5, "group": [5, 21, 31], "view": 5, "includ": [5, 15, 28, 30, 31, 37, 43], "exampl": [5, 7, 15], "busybox": 5, "1": [5, 30, 37], "29": 5, "linux": 5, "kernel": [5, 31], "250": 5, "sqlite": 5, "8": [5, 22], "11": 5, "software_compon": 5, "applic": 5, "zip": 5, "text": [5, 16], "plain": 5, "file_typ": 5, "Will": 5, "onli": [5, 6, 9, 25, 26, 28, 30, 37], "call": [5, 6, 7, 19, 33, 37, 40], "did": 5, "dataclass": 5, "conveni": [5, 12], "structur": [5, 30], "defin": [5, 7, 16, 30, 31], "doc": [5, 21], "analysis_tag": [5, 29, 30, 31], "helperfunct": [5, 31], "tagcolor": [5, 8, 23, 31], "bool": [5, 6, 7, 9, 10, 12, 13, 15, 21, 25, 27, 28, 33, 37, 43], "fals": [5, 7, 9, 10, 12, 13, 15, 21, 25, 27, 28, 33, 40], "whether": [5, 7, 12, 15, 27, 33], "parent": [5, 26, 29, 30], "addit": 5, "tooltip": 5, "backend": [6, 7, 21, 30], "common": [6, 7], "binarysearch": 6, "max_strings_per_match": 6, "plugindefault": 6, "base_port": 6, "delai": 6, "float": [6, 21, 27, 30, 36], "max_depth": 6, "memory_limit": 6, "2048": 6, "throttle_limit": 6, "whitelist": [6, 30, 31, 37], "analysis_status_update_interv": 6, "5": [6, 36], "binary_search": 6, "block_delai": 6, "collector_worker_count": 6, "2": [6, 30, 37], "firmware_file_storage_directori": [6, 7], "intercom_poll_delai": 6, "plugin_default": 6, "scheduling_worker_count": 6, "ssdeep_ignor": 6, "throw_except": [6, 21], "analysispreset": 6, "log": [6, 8, 12, 15, 21], "file_backend": 6, "tmp": 6, "fact_backend": 6, "file_databas": 6, "fact_databas": 6, "file_frontend": 6, "fact_frontend": 6, "level": [6, 16, 30], "warn": [6, 8, 16, 23], "postgr": 6, "admin_pw": 6, "admin_us": 6, "del_pw": 6, "del_us": 6, "port": 6, "ro_pw": 6, "ro_us": 6, "rw_pw": 6, "rw_user": 6, "server": 6, "test_databas": 6, "redi": 6, "fact_db": 6, "host": [6, 15, 30], "test_db": 6, "analysis_preset": 6, "docker_mount_base_dir": [6, 7], "temp_dir_path": 6, "authent": 6, "enabl": 6, "password_salt": 6, "user_databas": 6, "hasura": 6, "admin_secret": 6, "33333": 6, "ajax_stats_reload_tim": 6, "communication_timeout": 6, "60": 6, "max_elements_per_chart": 6, "number_of_latest_firmwares_to_displai": 6, "radare2_url": 6, "results_per_pag": 6, "proxi": 6, "neither": 6, "nor": 6, "load": [6, 30, 37], "locat": 6, "toml": 6, "read": [6, 15], "These": [6, 13], "access": [6, 21], "via": 6, "import": [6, 31], "reason": [6, 43], "test": [6, 7, 40], "alreadi": [6, 15, 24, 27], "up": [6, 22, 30], "runtim": [6, 37], "blog": 6, "entri": [6, 30, 31, 37], "analysisplugintestconfig": 7, "configur": [7, 15, 21, 28, 37, 40], "analysis_plugin": 7, "fixtur": [7, 40], "init_kwarg": 7, "keyword": [7, 12, 15], "argument": [7, 15], "plugin_class": 7, "constructor": 7, "Not": [7, 30, 31], "most": [7, 43], "probabl": [7, 30], "analysisplugin": 7, "alia": [7, 40], "analysisbaseplugin": 7, "start_process": 7, "worker": [7, 21, 34, 35, 36], "_patch_config": 7, "suppli": 7, "marker": [7, 40], "same": [7, 21, 31], "fit": [7, 22], "necessari": [7, 10, 15], "pytest": 7, "def": 7, "my_fancy_plugin": 7, "make": [7, 15, 21], "sure": 7, "assert": 7, "isinst": 7, "myfancyplugin": 7, "custom": 7, "thing": 7, "db_interfac": [7, 37], "customdbmock": 7, "yield": 7, "set": [7, 15, 21, 22, 25, 26, 28, 30, 31, 37], "true": [7, 9, 10, 13, 15, 16, 21, 25, 27, 28, 30, 40], "modifi": [7, 22], "put": [7, 36], "mark": 7, "actual": [7, 37], "don": [7, 15], "my_fancy_test": 7, "monkeypatch": [7, 40], "now": 7, "backend_config": 7, "common_config": 7, "frontend_config": 7, "compare_set": 8, "iter_element_and_rest": [8, 9], "remove_duplicates_from_list": [8, 9], "substring_is_in_list": [8, 9], "data_convers": 8, "convert_compare_id_to_list": [8, 10], "convert_str_to_bool": [8, 10], "convert_time_to_str": [8, 10], "convert_uid_list_to_compare_id": [8, 10], "get_value_of_first_kei": [8, 10], "make_byt": [8, 10], "make_unicode_str": [8, 10], "none_to_non": [8, 10], "normalize_compare_id": [8, 10], "get_shared_sess": [8, 11], "docker": [8, 19, 33], "run_docker_contain": [8, 12], "filesystem": [8, 30], "file_is_empti": [8, 13], "get_config_dir": [8, 13], "get_relative_object_path": [8, 13], "get_src_dir": [8, 13], "get_template_dir": [8, 13], "hash": [8, 27, 30, 37], "get_hash": [8, 14], "get_md5": [8, 14], "get_sha256": [8, 14], "get_tlsh_comparison": [8, 14], "normalize_lief_item": [8, 14], "installationerror": [8, 15], "operateindirectori": [8, 15], "apt_install_packag": [8, 15], "apt_remove_packag": [8, 15], "apt_update_sourc": [8, 15], "check_distribut": [8, 15, 33], "check_if_command_in_path": [8, 15], "dnf_install_packag": [8, 15], "dnf_remove_packag": [8, 15], "dnf_update_sourc": [8, 15], "install_github_project": [8, 15], "install_pip_packag": [8, 15, 32, 33], "is_virtualenv": [8, 15], "log_current_packag": [8, 15], "read_package_list_from_fil": [8, 15], "remove_fold": [8, 15], "run_cmd_with_log": [8, 15], "coloringformatt": [8, 16], "log_level_color": [8, 16], "terminalcolor": [8, 16], "blue": [8, 16, 23, 27], "bold": [8, 16], "endc": [8, 16], "fail": [8, 10, 12, 15, 16, 43], "green": [8, 16, 23, 27], "header": [8, 16], "okblu": [8, 16], "okgreen": [8, 16], "purpl": [8, 16], "red": [8, 16, 23], "underlin": [8, 16], "yellow": [8, 16, 27], "color_str": [8, 16], "merge_gener": 8, "shuffl": [8, 17, 37], "object_convers": 8, "create_meta_dict": [8, 18], "pdf": 8, "build_pdf_report": [8, 19], "discover_analysis_plugin": [8, 20], "discover_compare_plugin": [8, 20], "exceptionsafeprocess": [8, 21], "run": [8, 12, 15, 21, 30, 34, 35, 36, 37], "check_worker_except": [8, 21], "complete_shutdown": [8, 21], "new_worker_was_start": [8, 21], "start_single_work": [8, 21], "stop_process": [8, 21], "terminate_process_and_children": [8, 21], "program_setup": 8, "setup_argpars": [8, 22], "setup_log": [8, 22], "dark": [8, 23], "grai": [8, 23, 31], "light": [8, 23], "light_blu": [8, 23], "orang": [8, 23], "task_convers": 8, "convert_analysis_task_to_fw_obj": [8, 24], "create_analysis_task": [8, 24], "create_re_analyze_task": [8, 24], "get_file_name_and_binary_from_request": [8, 24], "uid": [8, 10, 24, 26, 28, 29, 30, 31, 40], "create_uid": [8, 25], "is_list_of_uid": [8, 25], "is_uid": [8, 25], "filter_vpf_dict": [8, 26], "get_paths_for_all_par": [8, 26], "get_some_vfp": [8, 26], "web_interfac": 8, "apply_filters_to_queri": [8, 27], "cap_length_of_el": [8, 27], "filter_out_illegal_charact": [8, 27], "format_tim": [8, 27], "get_alternating_color_list": [8, 27], "get_color_list": [8, 27], "get_template_as_str": [8, 27], "password_is_leg": [8, 27], "yara_binary_search": 8, "yarabinarysearchscann": [8, 28], "get_binary_search_result": [8, 28, 38, 39, 40], "get_yara_error": [8, 28], "is_valid_yara_rule_fil": [8, 28], "iter": [9, 10, 15, 21, 37], "over": [9, 21], "element": [9, 25, 27], "also": [9, 30, 40], "other": [9, 16, 26, 31, 33], "remain": [9, 12], "_t": 9, "gener": [9, 19, 22, 25, 30, 37], "tupl": [9, 15, 16, 21, 24, 28, 30, 43], "item": 9, "list_": 9, "duplic": [9, 26], "input": [9, 10, 25], "possibli": 9, "uniqu": [9, 10, 24, 25, 28, 30], "string": [9, 10, 14, 16, 25, 27, 28, 30, 31, 43], "substring_list": 9, "substr": 9, "otherwis": [9, 10, 13, 21, 25, 27, 28], "compare_id": [10, 40], "convert": [10, 14, 24], "id": 10, "accord": 10, "boolean": [10, 15, 37, 43], "y": 10, "replac": 10, "distutil": 10, "strtobool": 10, "deprec": 10, "python": [10, 15, 21, 22], "time_obj": 10, "datetim": 10, "date": [10, 31], "els": 10, "output": [10, 16], "default": [10, 22, 30, 31, 37, 43], "1970": [10, 31], "01": [10, 31], "convers": 10, "uid_list": 10, "consist": [10, 30], "separ": [10, 30, 31], "semi": 10, "colon": 10, "input_dict": 10, "empti": [10, 13, 15, 19, 31], "_kt": 10, "_vt": 10, "anystr": [10, 25], "sort": 10, "arbitrari": [10, 30], "input_data": [10, 25], "word": 10, "come": 10, "interfac": [10, 27], "nonetyp": 10, "reorder": 10, "databaseinterfac": 11, "abstractcontextmanag": 11, "imag": [12, 30, 31, 33], "logging_label": 12, "combine_stderr_stdout": 12, "subprocess": [12, 15, 21], "completedprocess": 12, "command": [12, 15], "ran": [12, 37], "pass": [12, 15, 21, 31, 37], "label": [12, 21], "cancel": 12, "combin": [12, 26], "stderr": [12, 15], "stdout": 12, "rais": [12, 15, 21], "error": [12, 15, 16, 27, 28, 30, 43], "imagenotfound": 12, "readtimeout": 12, "apierror": 12, "file_path": [13, 29, 30], "ha": [13, 30, 33, 36, 37], "size": [13, 29, 30], "absolut": 13, "directori": [13, 15, 27, 33], "offset_path": 13, "extract": [13, 30, 31, 37], "temporari": [13, 30], "offset": [13, 43], "rel": 13, "root": [13, 30, 31, 37], "addition": [13, 30, 31], "intermedi": 13, "fact_extract": 13, "retriev": [13, 21, 24, 43], "templat": [13, 19, 27], "hash_funct": 14, "binari": [14, 25, 29, 30, 31], "hashlib": 14, "arrai": [14, 17, 36], "integ": [14, 43], "hex": [14, 27], "shorthand": [14, 40], "repres": [15, 27, 30, 31, 37, 43], "happen": [15, 21], "dure": [15, 21, 30, 31], "remot": 15, "target_directori": 15, "context": [15, 30, 37], "manag": [15, 33], "allow": [15, 21, 26, 28], "number": [15, 27, 30], "On": 15, "exit": 15, "work": 15, "its": [15, 21, 30, 31, 37], "previou": 15, "indic": 15, "packag": [15, 33], "mint": 15, "updat": [15, 24, 27, 37, 43], "allow_unsupport": 15, "distribut": [15, 22, 33], "codenam": 15, "current": [15, 21, 30, 36, 37, 43], "fedora": 15, "redhat": 15, "cent": 15, "project_path": 15, "project": [15, 33], "clone": 15, "cad": 15, "ghusernam": 15, "c": [15, 22], "style": [15, 16], "package_fil": 15, "through": [15, 33], "one": [15, 19, 30], "per": 15, "line": 15, "comment": [15, 29, 30], "environ": 15, "affect": 15, "distinguish": 15, "folder_nam": 15, "equival": 15, "rm": 15, "rf": 15, "administr": 15, "effect": [15, 37], "fall": 15, "cmd": 15, "raise_error": 15, "shell": 15, "silent": 15, "non": 15, "zero": 15, "returncod": 15, "fmt": 16, "datefmt": 16, "valid": [16, 25, 28], "formatt": 16, "subclass": [16, 33], "print": 16, "respect": [16, 21], "x1b": 16, "95m": 16, "info": [16, 23], "94m": 16, "93m": 16, "91m": 16, "critic": 16, "1m": 16, "record": 16, "specifi": [16, 31], "logrecord": 16, "termin": [16, 21], "stop": [16, 21], "0m": 16, "92m": 16, "4m": 16, "sequenc": 17, "copi": [17, 22], "fo": [18, 37], "meta": [18, 30, 31, 43], "folder": [19, 31], "fact_pdf_report": 19, "jinja2": 19, "engin": 19, "render": 19, "latex": 19, "build": [19, 22, 32, 33], "overview": 19, "technic": 19, "refer": [19, 37], "insid": [19, 30, 37], "rerais": 21, "subtyp": 21, "multiprocess": [21, 37], "handl": [21, 33, 37], "oppos": 21, "what": [21, 40], "suggest": 21, "impervi": 21, "instead": 21, "reconstruct": 21, "properti": [21, 30, 40], "occur": [21, 30, 37], "stack": 21, "trace": 21, "yet": 21, "process_list": 21, "worker_label": 21, "worker_funct": 21, "children": [21, 30, 37], "restart": [21, 37], "alwai": [21, 30, 37], "callabl": [21, 37], "messag": [21, 28, 30, 43], "shutdown": [21, 34, 35, 36, 37, 38, 39, 40], "send": 21, "signal": 21, "displai": [21, 27], "new_process": 21, "old_process": 21, "match": [21, 28], "process_index": 21, "schedul": [21, 30], "singl": [21, 28, 30, 37], "gracefulli": 21, "until": [21, 37], "kill": 21, "parallel": 21, "join": 21, "child": [21, 30, 33, 36], "copyright": 22, "2015": 22, "2024": 22, "free": 22, "redistribut": 22, "term": 22, "gnu": 22, "public": [22, 28, 33], "publish": 22, "foundat": 22, "later": 22, "hope": 22, "warranti": 22, "even": 22, "impli": 22, "merchant": 22, "FOR": 22, "particular": 22, "purpos": [22, 30], "receiv": 22, "along": [22, 30], "http": [22, 43], "www": 22, "command_line_opt": 22, "opt": 22, "hostedtoolcach": 22, "x64": 22, "bin": 22, "sphinx": 22, "html": [22, 27], "_build": 22, "w": 22, "dev": 22, "argumentpars": 22, "flag": [22, 43], "pars": [22, 43], "popul": 22, "namespac": 22, "parse_arg": 22, "secondari": 23, "primari": [23, 30], "success": [23, 43], "danger": 23, "analysis_task": 24, "base_fw": 24, "flask": [24, 27], "content": [24, 27, 28, 30], "sha256_siz": 25, "input_list": 25, "input_str": 25, "vfp_dict": 26, "parent_uid": 26, "vfp": [26, 30], "param": [26, 28], "filter": [26, 27, 30, 31], "typic": 26, "just": 26, "random": 26, "queri": [27, 31, 43], "add": [27, 30, 37, 40], "select": [27, 37], "vendor": [27, 29, 31], "json": [27, 30, 31], "hid_el": 27, "maximum": 27, "55": 27, "limit": [27, 43], "length": [27, 30], "hid": 27, "witch": 27, "cap": 27, "illeg": 27, "charact": 27, "durat": 27, "altern": 27, "begin": 27, "hexadecim": 27, "00ff00": 27, "view_nam": 27, "pw": 27, "erron": 27, "caus": [27, 28], "unexpect": 27, "behavior": 27, "accept": 27, "scan": 28, "method": [28, 33, 36], "perform": 28, "yara_rul": 28, "rule": 28, "rules_fil": 28, "compil": 28, "add_included_fil": [29, 30], "analysis_except": [29, 30], "create_binary_from_path": [29, 30], "depth": [29, 30], "file_nam": [29, 30], "files_includ": [29, 30], "from_json": [29, 30, 31], "get_hid": [29, 30, 31], "get_virtual_paths_for_all_uid": [29, 30], "list_of_all_included_fil": [29, 30], "parent_firmware_uid": [29, 30], "processed_analysi": [29, 30], "root_uid": [29, 30, 31, 37, 40], "scheduled_analysi": [29, 30], "set_binari": [29, 30, 31], "sha256": [29, 30], "temporary_data": [29, 30], "to_json": [29, 30, 31], "device_class": [29, 31], "device_nam": [29, 31], "release_d": [29, 31], "set_part_nam": [29, 31], "set_tag": [29, 31], "hold": [30, 31], "intern": 30, "represent": [30, 31], "file_object": [30, 36], "care": 30, "field": 30, "increment": 30, "being": [30, 37], "this_files_current_vfp": 30, "child_path": 30, "placehold": 30, "tag_nam": 30, "while": [30, 31], "total": 30, "been": 30, "made": [30, 37], "outer": 30, "everi": [30, 40], "squashf": 30, "tar": 30, "archiv": 30, "f": [30, 31], "similar": 30, "carv": 30, "usual": 30, "recurs": [30, 37], "lower": 30, "classmethod": [30, 31], "json_dict": 30, "human": 30, "readabl": 30, "That": 30, "mean": 30, "themselv": [30, 37], "expens": 30, "aggreg": 30, "memori": 30, "belong": 30, "direct": 30, "predecessor": 30, "thu": 30, "close": [30, 37], "tree": [30, 31], "necessarili": 30, "pair": 30, "plugin_nam": 30, "result_dict": 30, "analysis_d": 30, "unix": [30, 31, 43], "plugin_vers": 30, "associ": [30, 31], "db": 30, "comput": 30, "storag": 30, "persist": 30, "di": 30, "cycl": 30, "vfp_parent_filt": [30, 31], "form": [30, 37], "hash_length": 30, "machin": 30, "full": 30, "itself": 30, "pack": 30, "firmware_uid": 30, "fs_uid": 30, "etc": [30, 31], "pipe": 30, "sign": 30, "symlink": 30, "upload": 31, "special": 31, "supplementari": 31, "branch": 31, "leaf": 31, "var": 31, "passwd": 31, "correspond": 31, "embed": 31, "user": [31, 37], "advanc": 31, "categor": 31, "understand": 31, "said": 31, "applianc": 31, "ip": 31, "camera": 31, "entertain": 31, "printer": 31, "plethora": 31, "noqa": 31, "e501": 31, "requir": 31, "attribut": 31, "mandatori": [31, 37], "freeli": 31, "never": 31, "preset": 31, "frequent": 31, "bootload": 31, "assum": [31, 33], "assign": 31, "iso": 31, "8601": 31, "yyyi": 31, "mm": 31, "dd": 31, "epoch": 31, "specif": [31, 43], "setter": 31, "self": [31, 33, 36], "part_nam": 31, "save": 31, "abstractplugininstal": [32, 33], "base_path": [32, 33], "install_docker_imag": [32, 33], "install_fil": [32, 33], "install_other_packag": [32, 33], "install_system_packag": [32, 33], "skip_dock": 33, "overwrit": 33, "cwd": 33, "caller": [33, 36], "ensur": [33, 36], "overwritten": 33, "variabl": 33, "download": 33, "dnf": 33, "analysisexceptionerror": [34, 35, 36], "pluginrunn": [34, 35, 36], "get_active_worker_count": [34, 35, 36], "get_queue_len": [34, 35, 36], "out_queu": [34, 35, 36], "queue_analysi": [34, 35, 36], "crashederror": [34, 35, 36], "sigterm_timeout": [34, 35, 36], "timeouterror": [34, 35, 36], "is_work": [34, 35, 36], "analysisschedul": [34, 35, 37], "cancel_analysi": [34, 35, 37, 38, 39, 40], "check_except": [34, 35, 37], "get_combined_analysis_workload": [34, 35, 37], "get_plugin_dict": [34, 35, 37], "get_scheduled_workload": [34, 35, 37], "start_analysis_of_object": [34, 35, 37], "update_analysis_of_object_and_children": [34, 35, 37], "update_analysis_of_single_object": [34, 35, 37], "process_count": [35, 36], "scheduler_st": [35, 36], "schemata": 36, "runner": [36, 37], "pluginwork": 36, "disk": 36, "amount": 36, "queue": [36, 37], "_plugin": 36, "fulfil": 36, "worker_config": 36, "in_queu": 36, "stat": 36, "stats_count": 36, "stats_idx": 36, "mp": 36, "sub": 36, "overridden": 36, "post_analysi": 37, "unpacking_lock": 37, "respons": [37, 43], "initi": 37, "decis": 37, "built": 37, "decid": 37, "skip": 37, "mostli": 37, "attach": 37, "point": 37, "offer": [37, 43], "introspect": 37, "three": 37, "sent": 37, "independ": 37, "trigger": 37, "between": 37, "consid": 37, "consider": 37, "stage": 37, "order": 37, "preserv": 37, "balanc": 37, "ye": 37, "forc": [37, 40], "unchang": 37, "black": 37, "done": 37, "fill": 37, "add_job": 37, "collector": 37, "scope": 37, "backenddbinterfac": 37, "unpackinglockmanag": 37, "regist": 37, "state": 37, "regard": 37, "plugin_set": 37, "thread": 37, "pre": 37, "workload": 37, "progress": 37, "recent": 37, "analysis_main_schedul": 37, "current_analys": 37, "recently_finished_analys": 37, "statist": 37, "notifi": 37, "impend": 37, "onc": 37, "safe": 37, "statu": [37, 40, 43], "track": 37, "repeat": 37, "side": 37, "unit": [38, 40], "conftest": [38, 39], "commonintercommock": [38, 39, 40], "add_analysis_task": [38, 39, 40], "add_binary_search_request": [38, 39, 40], "add_compare_task": [38, 39, 40], "add_re_analyze_task": [38, 39, 40], "get_available_analysis_plugin": [38, 39, 40], "get_binary_and_filenam": [38, 39, 40], "get_repacked_binary_and_file_nam": [38, 39, 40], "peek_in_binari": [38, 39, 40], "task_list": [38, 39, 40], "frontenddatabasemock": [38, 39, 40], "statusinterfacemock": [38, 39, 40], "get_analysis_statu": [38, 39, 40], "set_analysis_statu": [38, 39, 40], "webinterfaceunittestconfig": [38, 39, 40], "database_mock_class": [38, 39, 40], "intercom_mock_class": [38, 39, 40], "status_mock_class": [38, 39, 40], "intercom_task_list": [38, 39, 40], "test_client": [38, 39, 40], "web_frontend": [38, 39, 40], "_": 40, "__": 40, "static": 40, "db_mock": 40, "mock": 40, "frontenddatabas": 40, "commondatabasemock": 40, "intercomfrontendbind": 40, "redisstatusinterfac": 40, "inspect": 40, "app": 40, "webfrontend": 40, "helper": [41, 42], "error_messag": [41, 42, 43], "get_boolean_from_request": [41, 42, 43], "get_current_gmt": [41, 42, 43], "get_pag": [41, 42, 43], "get_queri": [41, 42, 43], "get_upd": [41, 42, 43], "success_messag": [41, 42, 43], "neat": 43, "wrapper": 43, "endpoint": 43, "target": 43, "targeted_url": 43, "request_data": 43, "return_cod": 43, "400": 43, "why": 43, "url": 43, "bad": 43, "adher": 43, "request_paramet": 43, "immutablemultidict": 43, "ntp": 43, "timestamp": 43, "whose": 43, "200": 43, "ok": 43}, "objects": {"analysis.plugin": [[5, 0, 0, "-", "plugin"]], "analysis.plugin.plugin": [[5, 1, 1, "", "AnalysisFailedError"], [5, 2, 1, "", "AnalysisPluginV0"], [5, 2, 1, "", "Tag"]], "analysis.plugin.plugin.AnalysisPluginV0": [[5, 2, 1, "", "MetaData"], [5, 3, 1, "", "Schema"], [5, 4, 1, "", "analyze"], [5, 4, 1, "", "get_analysis"], [5, 4, 1, "", "get_tags"], [5, 4, 1, "", "summarize"]], "analysis.plugin.plugin.AnalysisPluginV0.MetaData": [[5, 3, 1, "", "Schema"], [5, 3, 1, "", "dependencies"], [5, 3, 1, "", "description"], [5, 3, 1, "", "mime_blacklist"], [5, 3, 1, "", "mime_whitelist"], [5, 3, 1, "", "name"], [5, 3, 1, "", "system_version"], [5, 3, 1, "", "timeout"], [5, 3, 1, "", "version"]], "analysis.plugin.plugin.Tag": [[5, 3, 1, "", "color"], [5, 3, 1, "", "name"], [5, 3, 1, "", "propagate"], [5, 3, 1, "", "value"]], "": [[6, 0, 0, "-", "config"], [7, 0, 0, "-", "conftest"]], "config": [[6, 2, 1, "", "Backend"], [6, 2, 1, "", "Common"], [6, 2, 1, "", "Frontend"], [6, 5, 1, "", "backend"], [6, 5, 1, "", "common"], [6, 5, 1, "", "frontend"], [6, 5, 1, "", "load"]], "config.Backend": [[6, 2, 1, "", "BinarySearch"], [6, 2, 1, "", "Plugin"], [6, 2, 1, "", "PluginDefaults"], [6, 2, 1, "", "Unpacking"], [6, 3, 1, "", "analysis_status_update_interval"], [6, 3, 1, "", "binary_search"], [6, 3, 1, "", "block_delay"], [6, 3, 1, "", "collector_worker_count"], [6, 3, 1, "", "firmware_file_storage_directory"], [6, 3, 1, "", "intercom_poll_delay"], [6, 3, 1, "", "plugin"], [6, 3, 1, "", "plugin_defaults"], [6, 3, 1, "", "scheduling_worker_count"], [6, 3, 1, "", "ssdeep_ignore"], [6, 3, 1, "", "throw_exceptions"], [6, 3, 1, "", "unpacking"]], "config.Backend.BinarySearch": [[6, 3, 1, "", "max_strings_per_match"]], "config.Backend.Plugin": [[6, 3, 1, "", "name"]], "config.Backend.PluginDefaults": [[6, 3, 1, "", "processes"]], "config.Backend.Unpacking": [[6, 3, 1, "", "base_port"], [6, 3, 1, "", "delay"], [6, 3, 1, "", "max_depth"], [6, 3, 1, "", "memory_limit"], [6, 3, 1, "", "processes"], [6, 3, 1, "", "throttle_limit"], [6, 3, 1, "", "whitelist"]], "config.Common": [[6, 2, 1, "", "AnalysisPreset"], [6, 2, 1, "", "Logging"], [6, 2, 1, "", "Postgres"], [6, 2, 1, "", "Redis"], [6, 3, 1, "", "analysis_preset"], [6, 3, 1, "", "docker_mount_base_dir"], [6, 3, 1, "", "logging"], [6, 3, 1, "", "postgres"], [6, 3, 1, "", "redis"], [6, 3, 1, "", "temp_dir_path"]], "config.Common.AnalysisPreset": [[6, 3, 1, "", "name"], [6, 3, 1, "", "plugins"]], "config.Common.Logging": [[6, 3, 1, "", "file_backend"], [6, 3, 1, "", "file_database"], [6, 3, 1, "", "file_frontend"], [6, 3, 1, "", "level"]], "config.Common.Postgres": [[6, 3, 1, "", "admin_pw"], [6, 3, 1, "", "admin_user"], [6, 3, 1, "", "database"], [6, 3, 1, "", "del_pw"], [6, 3, 1, "", "del_user"], [6, 3, 1, "", "port"], [6, 3, 1, "", "ro_pw"], [6, 3, 1, "", "ro_user"], [6, 3, 1, "", "rw_pw"], [6, 3, 1, "", "rw_user"], [6, 3, 1, "", "server"], [6, 3, 1, "", "test_database"]], "config.Common.Redis": [[6, 3, 1, "", "fact_db"], [6, 3, 1, "", "host"], [6, 3, 1, "", "password"], [6, 3, 1, "", "port"], [6, 3, 1, "", "test_db"]], "config.Frontend": [[6, 2, 1, "", "Authentication"], [6, 2, 1, "", "Hasura"], [6, 3, 1, "", "ajax_stats_reload_time"], [6, 3, 1, "", "authentication"], [6, 3, 1, "", "communication_timeout"], [6, 3, 1, "", "hasura"], [6, 3, 1, "", "max_elements_per_chart"], [6, 3, 1, "", "number_of_latest_firmwares_to_display"], [6, 3, 1, "", "radare2_url"], [6, 3, 1, "", "results_per_page"]], "config.Frontend.Authentication": [[6, 3, 1, "", "enabled"], [6, 3, 1, "", "password_salt"], [6, 3, 1, "", "user_database"]], "config.Frontend.Hasura": [[6, 3, 1, "", "admin_secret"], [6, 3, 1, "", "port"]], "conftest": [[7, 2, 1, "", "AnalysisPluginTestConfig"], [7, 5, 1, "", "analysis_plugin"], [7, 5, 1, "", "backend_config"], [7, 5, 1, "", "common_config"], [7, 5, 1, "", "docker_mount_base_dir"], [7, 5, 1, "", "firmware_file_storage_directory"], [7, 5, 1, "", "frontend_config"]], "conftest.AnalysisPluginTestConfig": [[7, 3, 1, "", "init_kwargs"], [7, 3, 1, "", "plugin_class"], [7, 3, 1, "", "start_processes"]], "helperFunctions": [[9, 0, 0, "-", "compare_sets"], [10, 0, 0, "-", "data_conversion"], [11, 0, 0, "-", "database"], [12, 0, 0, "-", "docker"], [13, 0, 0, "-", "fileSystem"], [14, 0, 0, "-", "hash"], [15, 0, 0, "-", "install"], [16, 0, 0, "-", "logging"], [17, 0, 0, "-", "merge_generators"], [18, 0, 0, "-", "object_conversion"], [19, 0, 0, "-", "pdf"], [20, 0, 0, "-", "plugin"], [21, 0, 0, "-", "process"], [22, 0, 0, "-", "program_setup"], [23, 0, 0, "-", "tag"], [24, 0, 0, "-", "task_conversion"], [25, 0, 0, "-", "uid"], [26, 0, 0, "-", "virtual_file_path"], [27, 0, 0, "-", "web_interface"], [28, 0, 0, "-", "yara_binary_search"]], "helperFunctions.compare_sets": [[9, 5, 1, "", "iter_element_and_rest"], [9, 5, 1, "", "remove_duplicates_from_list"], [9, 5, 1, "", "substring_is_in_list"]], "helperFunctions.data_conversion": [[10, 5, 1, "", "convert_compare_id_to_list"], [10, 5, 1, "", "convert_str_to_bool"], [10, 5, 1, "", "convert_time_to_str"], [10, 5, 1, "", "convert_uid_list_to_compare_id"], [10, 5, 1, "", "get_value_of_first_key"], [10, 5, 1, "", "make_bytes"], [10, 5, 1, "", "make_unicode_string"], [10, 5, 1, "", "none_to_none"], [10, 5, 1, "", "normalize_compare_id"]], "helperFunctions.database": [[11, 5, 1, "", "get_shared_session"]], "helperFunctions.docker": [[12, 5, 1, "", "run_docker_container"]], "helperFunctions.fileSystem": [[13, 5, 1, "", "file_is_empty"], [13, 5, 1, "", "get_config_dir"], [13, 5, 1, "", "get_relative_object_path"], [13, 5, 1, "", "get_src_dir"], [13, 5, 1, "", "get_template_dir"]], "helperFunctions.hash": [[14, 5, 1, "", "get_hash"], [14, 5, 1, "", "get_md5"], [14, 5, 1, "", "get_sha256"], [14, 5, 1, "", "get_tlsh_comparison"], [14, 5, 1, "", "normalize_lief_items"]], "helperFunctions.install": [[15, 1, 1, "", "InstallationError"], [15, 2, 1, "", "OperateInDirectory"], [15, 5, 1, "", "apt_install_packages"], [15, 5, 1, "", "apt_remove_packages"], [15, 5, 1, "", "apt_update_sources"], [15, 5, 1, "", "check_distribution"], [15, 5, 1, "", "check_if_command_in_path"], [15, 5, 1, "", "dnf_install_packages"], [15, 5, 1, "", "dnf_remove_packages"], [15, 5, 1, "", "dnf_update_sources"], [15, 5, 1, "", "install_github_project"], [15, 5, 1, "", "install_pip_packages"], [15, 5, 1, "", "is_virtualenv"], [15, 5, 1, "", "log_current_packages"], [15, 5, 1, "", "read_package_list_from_file"], [15, 5, 1, "", "remove_folder"], [15, 5, 1, "", "run_cmd_with_logging"]], "helperFunctions.logging": [[16, 2, 1, "", "ColoringFormatter"], [16, 2, 1, "", "TerminalColors"], [16, 5, 1, "", "color_string"]], "helperFunctions.logging.ColoringFormatter": [[16, 3, 1, "", "LOG_LEVEL_COLORS"], [16, 4, 1, "", "format"]], "helperFunctions.logging.TerminalColors": [[16, 3, 1, "", "BLUE"], [16, 3, 1, "", "BOLD"], [16, 3, 1, "", "ENDC"], [16, 3, 1, "", "FAIL"], [16, 3, 1, "", "GREEN"], [16, 3, 1, "", "HEADER"], [16, 3, 1, "", "OKBLUE"], [16, 3, 1, "", "OKGREEN"], [16, 3, 1, "", "PURPLE"], [16, 3, 1, "", "RED"], [16, 3, 1, "", "UNDERLINE"], [16, 3, 1, "", "WARNING"], [16, 3, 1, "", "YELLOW"]], "helperFunctions.merge_generators": [[17, 5, 1, "", "shuffled"]], "helperFunctions.object_conversion": [[18, 5, 1, "", "create_meta_dict"]], "helperFunctions.pdf": [[19, 5, 1, "", "build_pdf_report"]], "helperFunctions.plugin": [[20, 5, 1, "", "discover_analysis_plugins"], [20, 5, 1, "", "discover_compare_plugins"]], "helperFunctions.process": [[21, 2, 1, "", "ExceptionSafeProcess"], [21, 5, 1, "", "check_worker_exceptions"], [21, 5, 1, "", "complete_shutdown"], [21, 5, 1, "", "new_worker_was_started"], [21, 5, 1, "", "start_single_worker"], [21, 5, 1, "", "stop_process"], [21, 5, 1, "", "stop_processes"], [21, 5, 1, "", "terminate_process_and_children"]], "helperFunctions.process.ExceptionSafeProcess": [[21, 6, 1, "", "exception"], [21, 4, 1, "", "run"]], "helperFunctions.program_setup": [[22, 5, 1, "", "setup_argparser"], [22, 5, 1, "", "setup_logging"]], "helperFunctions.tag": [[23, 2, 1, "", "TagColor"]], "helperFunctions.tag.TagColor": [[23, 3, 1, "", "ALL"], [23, 3, 1, "", "BLUE"], [23, 3, 1, "", "DARK"], [23, 3, 1, "", "GRAY"], [23, 3, 1, "", "GREEN"], [23, 3, 1, "", "LIGHT"], [23, 3, 1, "", "LIGHT_BLUE"], [23, 3, 1, "", "ORANGE"], [23, 3, 1, "", "RED"]], "helperFunctions.task_conversion": [[24, 5, 1, "", "convert_analysis_task_to_fw_obj"], [24, 5, 1, "", "create_analysis_task"], [24, 5, 1, "", "create_re_analyze_task"], [24, 5, 1, "", "get_file_name_and_binary_from_request"]], "helperFunctions.uid": [[25, 5, 1, "", "create_uid"], [25, 5, 1, "", "is_list_of_uids"], [25, 5, 1, "", "is_uid"]], "helperFunctions.virtual_file_path": [[26, 5, 1, "", "filter_vpf_dict"], [26, 5, 1, "", "get_paths_for_all_parents"], [26, 5, 1, "", "get_some_vfp"]], "helperFunctions.web_interface": [[27, 5, 1, "", "apply_filters_to_query"], [27, 5, 1, "", "cap_length_of_element"], [27, 5, 1, "", "filter_out_illegal_characters"], [27, 5, 1, "", "format_time"], [27, 5, 1, "", "get_alternating_color_list"], [27, 5, 1, "", "get_color_list"], [27, 5, 1, "", "get_template_as_string"], [27, 5, 1, "", "password_is_legal"]], "helperFunctions.yara_binary_search": [[28, 2, 1, "", "YaraBinarySearchScanner"], [28, 5, 1, "", "get_yara_error"], [28, 5, 1, "", "is_valid_yara_rule_file"]], "helperFunctions.yara_binary_search.YaraBinarySearchScanner": [[28, 4, 1, "", "get_binary_search_result"]], "objects": [[30, 0, 0, "-", "file"], [31, 0, 0, "-", "firmware"]], "objects.file": [[30, 2, 1, "", "FileObject"]], "objects.file.FileObject": [[30, 4, 1, "", "add_included_file"], [30, 3, 1, "", "analysis_exception"], [30, 3, 1, "", "analysis_tags"], [30, 3, 1, "", "binary"], [30, 3, 1, "", "comments"], [30, 4, 1, "", "create_binary_from_path"], [30, 3, 1, "", "depth"], [30, 3, 1, "", "file_name"], [30, 3, 1, "", "file_path"], [30, 3, 1, "", "files_included"], [30, 4, 1, "", "from_json"], [30, 4, 1, "", "get_hid"], [30, 4, 1, "", "get_virtual_paths_for_all_uids"], [30, 3, 1, "", "list_of_all_included_files"], [30, 3, 1, "", "parent_firmware_uids"], [30, 3, 1, "", "parents"], [30, 3, 1, "", "processed_analysis"], [30, 3, 1, "", "root_uid"], [30, 3, 1, "", "scheduled_analysis"], [30, 4, 1, "", "set_binary"], [30, 3, 1, "", "sha256"], [30, 3, 1, "", "size"], [30, 3, 1, "", "temporary_data"], [30, 4, 1, "", "to_json"], [30, 6, 1, "", "uid"], [30, 3, 1, "", "virtual_file_path"]], "objects.firmware": [[31, 2, 1, "", "Firmware"]], "objects.firmware.Firmware": [[31, 3, 1, "", "device_class"], [31, 3, 1, "", "device_name"], [31, 4, 1, "", "from_json"], [31, 4, 1, "", "get_hid"], [31, 3, 1, "", "part"], [31, 3, 1, "", "release_date"], [31, 4, 1, "", "set_binary"], [31, 4, 1, "", "set_part_name"], [31, 4, 1, "", "set_tag"], [31, 3, 1, "", "tags"], [31, 4, 1, "", "to_json"], [31, 3, 1, "", "vendor"], [31, 3, 1, "", "version"]], "plugins": [[33, 0, 0, "-", "installer"]], "plugins.installer": [[33, 2, 1, "", "AbstractPluginInstaller"]], "plugins.installer.AbstractPluginInstaller": [[33, 3, 1, "", "base_path"], [33, 4, 1, "", "build"], [33, 4, 1, "", "install"], [33, 4, 1, "", "install_docker_images"], [33, 4, 1, "", "install_files"], [33, 4, 1, "", "install_other_packages"], [33, 4, 1, "", "install_pip_packages"], [33, 4, 1, "", "install_system_packages"]], "scheduler.analysis": [[36, 0, 0, "-", "plugin"], [37, 0, 0, "-", "scheduler"]], "scheduler.analysis.plugin": [[36, 1, 1, "", "AnalysisExceptionError"], [36, 2, 1, "", "PluginRunner"], [36, 2, 1, "", "Worker"]], "scheduler.analysis.plugin.PluginRunner": [[36, 2, 1, "", "Config"], [36, 2, 1, "", "Task"], [36, 4, 1, "", "get_active_worker_count"], [36, 4, 1, "", "get_queue_len"], [36, 3, 1, "", "out_queue"], [36, 4, 1, "", "queue_analysis"], [36, 4, 1, "", "shutdown"], [36, 4, 1, "", "start"]], "scheduler.analysis.plugin.PluginRunner.Config": [[36, 3, 1, "", "process_count"], [36, 3, 1, "", "timeout"]], "scheduler.analysis.plugin.PluginRunner.Task": [[36, 3, 1, "", "dependencies"], [36, 3, 1, "", "path"], [36, 3, 1, "", "scheduler_state"], [36, 3, 1, "", "virtual_file_path"]], "scheduler.analysis.plugin.Worker": [[36, 2, 1, "", "Config"], [36, 1, 1, "", "CrashedError"], [36, 3, 1, "", "SIGTERM_TIMEOUT"], [36, 1, 1, "", "TimeoutError"], [36, 4, 1, "", "is_working"], [36, 4, 1, "", "run"]], "scheduler.analysis.plugin.Worker.Config": [[36, 3, 1, "", "timeout"]], "scheduler.analysis.scheduler": [[37, 2, 1, "", "AnalysisScheduler"]], "scheduler.analysis.scheduler.AnalysisScheduler": [[37, 4, 1, "", "cancel_analysis"], [37, 4, 1, "", "check_exceptions"], [37, 4, 1, "", "get_combined_analysis_workload"], [37, 4, 1, "", "get_plugin_dict"], [37, 4, 1, "", "get_scheduled_workload"], [37, 4, 1, "", "shutdown"], [37, 4, 1, "", "start"], [37, 4, 1, "", "start_analysis_of_object"], [37, 4, 1, "", "update_analysis_of_object_and_children"], [37, 4, 1, "", "update_analysis_of_single_object"]], "test.unit": [[40, 0, 0, "-", "conftest"]], "test.unit.conftest": [[40, 2, 1, "", "CommonIntercomMock"], [40, 2, 1, "", "FrontendDatabaseMock"], [40, 2, 1, "", "StatusInterfaceMock"], [40, 2, 1, "", "WebInterfaceUnitTestConfig"], [40, 5, 1, "", "intercom_task_list"], [40, 5, 1, "", "test_client"], [40, 5, 1, "", "web_frontend"]], "test.unit.conftest.CommonIntercomMock": [[40, 4, 1, "", "add_analysis_task"], [40, 4, 1, "", "add_binary_search_request"], [40, 4, 1, "", "add_compare_task"], [40, 4, 1, "", "add_re_analyze_task"], [40, 4, 1, "", "cancel_analysis"], [40, 4, 1, "", "get_available_analysis_plugins"], [40, 4, 1, "", "get_binary_and_filename"], [40, 4, 1, "", "get_binary_search_result"], [40, 4, 1, "", "get_repacked_binary_and_file_name"], [40, 4, 1, "", "peek_in_binary"], [40, 4, 1, "", "shutdown"], [40, 3, 1, "", "task_list"]], "test.unit.conftest.StatusInterfaceMock": [[40, 4, 1, "", "get_analysis_status"], [40, 4, 1, "", "set_analysis_status"]], "test.unit.conftest.WebInterfaceUnitTestConfig": [[40, 3, 1, "", "database_mock_class"], [40, 3, 1, "", "intercom_mock_class"], [40, 3, 1, "", "status_mock_class"]], "web_interface.rest": [[43, 0, 0, "-", "helper"]], "web_interface.rest.helper": [[43, 5, 1, "", "error_message"], [43, 5, 1, "", "get_boolean_from_request"], [43, 5, 1, "", "get_current_gmt"], [43, 5, 1, "", "get_paging"], [43, 5, 1, "", "get_query"], [43, 5, 1, "", "get_update"], [43, 5, 1, "", "success_message"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:class", "3": "py:attribute", "4": "py:method", "5": "py:function", "6": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "method", "Python method"], "5": ["py", "function", "Python function"], "6": ["py", "property", "Python property"]}, "titleterms": {"about": [0, 19], "content": 0, "indic": 0, "tabl": 0, "challeng": 1, "firmwar": [1, 31], "extract": 1, "initi": 1, "analysi": [1, 3, 4, 5, 35, 36, 37], "comparison": 1, "find": 1, "other": 1, "affect": 1, "imag": 1, "easi": 1, "instal": [1, 15, 33], "us": 1, "extend": 1, "integr": 1, "screenshot": 1, "contribut": 1, "latest": 1, "new": 1, "contact": 1, "author": 1, "acknowledg": 1, "sourc": 1, "code": 1, "upgrad": 2, "fact": 2, "from": 2, "3": 2, "4": 2, "plugin": [4, 5, 20, 32, 33, 36], "config": 6, "conftest": [7, 40], "helperfunct": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "compare_set": 9, "modul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 33, 43], "data_convers": 10, "databas": 11, "docker": 12, "filesystem": 13, "hash": 14, "log": 16, "merge_gener": 17, "object_convers": 18, "pdf": 19, "report": 19, "process": 21, "program_setup": 22, "tag": 23, "task_convers": 24, "uid": [25, 27], "virtual_file_path": 26, "web_interfac": [27, 41, 42, 43], "yara_binary_search": 28, "object": [29, 30, 31], "file": 30, "schedul": [34, 35, 36, 37], "test": [38, 39], "unit": 39, "rest": [42, 43], "helper": 43}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About": [[0, "about"]], "Contents": [[0, "contents"]], "Indices and tables": [[0, "indices-and-tables"]], "Challenges": [[1, "challenges"]], "Challenge: Firmware Extraction": [[1, "challenge-firmware-extraction"]], "Challenge: Initial Firmware Analysis": [[1, "challenge-initial-firmware-analysis"]], "Challenge: Firmware Comparison": [[1, "challenge-firmware-comparison"]], "Challenge: Find other affected Firmware Images": [[1, "challenge-find-other-affected-firmware-images"]], "Easy to Install! Easy to Use!": [[1, "easy-to-install-easy-to-use"]], "Easy to Extend! Easy to Integrate!": [[1, "easy-to-extend-easy-to-integrate"]], "Screenshots": [[1, "screenshots"]], "Contributing": [[1, "contributing"]], "Latest News and Contact": [[1, "latest-news-and-contact"]], "Authors and Acknowledgment": [[1, "authors-and-acknowledgment"]], "Source Code": [[1, "source-code"]], "Upgrading FACT from 3 to 4": [[2, "upgrading-fact-from-3-to-4"]], "analysis": [[3, "analysis"]], "analysis.plugin": [[4, "analysis-plugin"]], "analysis.plugin.plugin": [[5, "module-analysis.plugin.plugin"]], "config": [[6, "module-config"]], "conftest": [[7, "module-conftest"], [40, "module-test.unit.conftest"]], "helperFunctions": [[8, "helperfunctions"]], "helperFunctions.compare_sets module": [[9, "module-helperFunctions.compare_sets"]], "helperFunctions.data_conversion module": [[10, "module-helperFunctions.data_conversion"]], "helperFunctions.database module": [[11, "module-helperFunctions.database"]], "helperFunctions.docker module": [[12, "module-helperFunctions.docker"]], "helperFunctions.fileSystem module": [[13, "module-helperFunctions.fileSystem"]], "helperFunctions.hash module": [[14, "module-helperFunctions.hash"]], "helperFunctions.install module": [[15, "module-helperFunctions.install"]], "helperFunctions.logging module": [[16, "module-helperFunctions.logging"]], "helperFunctions.merge_generators module": [[17, "module-helperFunctions.merge_generators"]], "helperFunctions.object_conversion module": [[18, "module-helperFunctions.object_conversion"]], "helperFunctions.pdf module": [[19, "module-helperFunctions.pdf"]], "About the pdf report": [[19, null]], "helperFunctions.plugin module": [[20, "module-helperFunctions.plugin"]], "helperFunctions.process module": [[21, "module-helperFunctions.process"]], "helperFunctions.program_setup module": [[22, "module-helperFunctions.program_setup"]], "helperFunctions.tag module": [[23, "module-helperFunctions.tag"]], "helperFunctions.task_conversion module": [[24, "module-helperFunctions.task_conversion"]], "helperFunctions.uid module": [[25, "module-helperFunctions.uid"]], "helperFunctions.virtual_file_path module": [[26, "module-helperFunctions.virtual_file_path"]], "helperFunctions.uid web_interface": [[27, "module-helperFunctions.web_interface"]], "helperFunctions.yara_binary_search module": [[28, "module-helperFunctions.yara_binary_search"]], "objects": [[29, "objects"]], "objects.file module": [[30, "module-objects.file"]], "objects.firmware module": [[31, "module-objects.firmware"]], "plugins": [[32, "plugins"]], "plugins.installer module": [[33, "module-plugins.installer"]], "scheduler": [[34, "scheduler"]], "scheduler.analysis": [[35, "scheduler-analysis"]], "scheduler.analysis.plugin": [[36, "module-scheduler.analysis.plugin"]], "scheduler.analysis.scheduler": [[37, "module-scheduler.analysis.scheduler"]], "test": [[38, "test"]], "test.unit": [[39, "test-unit"]], "web_interface": [[41, "web-interface"]], "web_interface.rest": [[42, "web-interface-rest"]], "web_interface.rest.helper module": [[43, "module-web_interface.rest.helper"]]}, "indexentries": {"analysisfailederror": [[5, "analysis.plugin.plugin.AnalysisFailedError"]], "analysispluginv0 (class in analysis.plugin.plugin)": [[5, "analysis.plugin.plugin.AnalysisPluginV0"]], "analysispluginv0.metadata (class in analysis.plugin.plugin)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData"]], "schema (analysis.plugin.plugin.analysispluginv0 attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.Schema"]], "schema (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.Schema"]], "tag (class in analysis.plugin.plugin)": [[5, "analysis.plugin.plugin.Tag"]], "analysis.plugin.plugin": [[5, "module-analysis.plugin.plugin"]], "analyze() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.analyze"]], "color (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.color"]], "dependencies (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.dependencies"]], "description (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.description"]], "get_analysis() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.get_analysis"]], "get_tags() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.get_tags"]], "mime_blacklist (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.mime_blacklist"]], "mime_whitelist (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.mime_whitelist"]], "module": [[5, "module-analysis.plugin.plugin"], [6, "module-config"], [7, "module-conftest"], [9, "module-helperFunctions.compare_sets"], [10, "module-helperFunctions.data_conversion"], [11, "module-helperFunctions.database"], [12, "module-helperFunctions.docker"], [13, "module-helperFunctions.fileSystem"], [14, "module-helperFunctions.hash"], [15, "module-helperFunctions.install"], [16, "module-helperFunctions.logging"], [17, "module-helperFunctions.merge_generators"], [18, "module-helperFunctions.object_conversion"], [19, "module-helperFunctions.pdf"], [20, "module-helperFunctions.plugin"], [21, "module-helperFunctions.process"], [22, "module-helperFunctions.program_setup"], [23, "module-helperFunctions.tag"], [24, "module-helperFunctions.task_conversion"], [25, "module-helperFunctions.uid"], [26, "module-helperFunctions.virtual_file_path"], [27, "module-helperFunctions.web_interface"], [28, "module-helperFunctions.yara_binary_search"], [30, "module-objects.file"], [31, "module-objects.firmware"], [33, "module-plugins.installer"], [36, "module-scheduler.analysis.plugin"], [37, "module-scheduler.analysis.scheduler"], [40, "module-test.unit.conftest"], [43, "module-web_interface.rest.helper"]], "name (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.name"]], "name (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.name"]], "propagate (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.propagate"]], "summarize() (analysis.plugin.plugin.analysispluginv0 method)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.summarize"]], "system_version (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.system_version"]], "timeout (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.timeout"]], "value (analysis.plugin.plugin.tag attribute)": [[5, "analysis.plugin.plugin.Tag.value"]], "version (analysis.plugin.plugin.analysispluginv0.metadata attribute)": [[5, "analysis.plugin.plugin.AnalysisPluginV0.MetaData.version"]], "backend (class in config)": [[6, "config.Backend"]], "backend.binarysearch (class in config)": [[6, "config.Backend.BinarySearch"]], "backend.plugin (class in config)": [[6, "config.Backend.Plugin"]], "backend.plugindefaults (class in config)": [[6, "config.Backend.PluginDefaults"]], "backend.unpacking (class in config)": [[6, "config.Backend.Unpacking"]], "common (class in config)": [[6, "config.Common"]], "common.analysispreset (class in config)": [[6, "config.Common.AnalysisPreset"]], "common.logging (class in config)": [[6, "config.Common.Logging"]], "common.postgres (class in config)": [[6, "config.Common.Postgres"]], "common.redis (class in config)": [[6, "config.Common.Redis"]], "frontend (class in config)": [[6, "config.Frontend"]], "frontend.authentication (class in config)": [[6, "config.Frontend.Authentication"]], "frontend.hasura (class in config)": [[6, "config.Frontend.Hasura"]], "admin_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.admin_pw"]], "admin_secret (config.frontend.hasura attribute)": [[6, "config.Frontend.Hasura.admin_secret"]], "admin_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.admin_user"]], "ajax_stats_reload_time (config.frontend attribute)": [[6, "config.Frontend.ajax_stats_reload_time"]], "analysis_preset (config.common attribute)": [[6, "config.Common.analysis_preset"]], "analysis_status_update_interval (config.backend attribute)": [[6, "config.Backend.analysis_status_update_interval"]], "authentication (config.frontend attribute)": [[6, "config.Frontend.authentication"]], "backend() (in module config)": [[6, "config.backend"]], "base_port (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.base_port"]], "binary_search (config.backend attribute)": [[6, "config.Backend.binary_search"]], "block_delay (config.backend attribute)": [[6, "config.Backend.block_delay"]], "collector_worker_count (config.backend attribute)": [[6, "config.Backend.collector_worker_count"]], "common() (in module config)": [[6, "config.common"]], "communication_timeout (config.frontend attribute)": [[6, "config.Frontend.communication_timeout"]], "config": [[6, "module-config"]], "database (config.common.postgres attribute)": [[6, "config.Common.Postgres.database"]], "del_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.del_pw"]], "del_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.del_user"]], "delay (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.delay"]], "docker_mount_base_dir (config.common attribute)": [[6, "config.Common.docker_mount_base_dir"]], "enabled (config.frontend.authentication attribute)": [[6, "config.Frontend.Authentication.enabled"]], "fact_db (config.common.redis attribute)": [[6, "config.Common.Redis.fact_db"]], "file_backend (config.common.logging attribute)": [[6, "config.Common.Logging.file_backend"]], "file_database (config.common.logging attribute)": [[6, "config.Common.Logging.file_database"]], "file_frontend (config.common.logging attribute)": [[6, "config.Common.Logging.file_frontend"]], "firmware_file_storage_directory (config.backend attribute)": [[6, "config.Backend.firmware_file_storage_directory"]], "frontend() (in module config)": [[6, "config.frontend"]], "hasura (config.frontend attribute)": [[6, "config.Frontend.hasura"]], "host (config.common.redis attribute)": [[6, "config.Common.Redis.host"]], "intercom_poll_delay (config.backend attribute)": [[6, "config.Backend.intercom_poll_delay"]], "level (config.common.logging attribute)": [[6, "config.Common.Logging.level"]], "load() (in module config)": [[6, "config.load"]], "logging (config.common attribute)": [[6, "config.Common.logging"]], "max_depth (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.max_depth"]], "max_elements_per_chart (config.frontend attribute)": [[6, "config.Frontend.max_elements_per_chart"]], "max_strings_per_match (config.backend.binarysearch attribute)": [[6, "config.Backend.BinarySearch.max_strings_per_match"]], "memory_limit (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.memory_limit"]], "name (config.backend.plugin attribute)": [[6, "config.Backend.Plugin.name"]], "name (config.common.analysispreset attribute)": [[6, "config.Common.AnalysisPreset.name"]], "number_of_latest_firmwares_to_display (config.frontend attribute)": [[6, "config.Frontend.number_of_latest_firmwares_to_display"]], "password (config.common.redis attribute)": [[6, "config.Common.Redis.password"]], "password_salt (config.frontend.authentication attribute)": [[6, "config.Frontend.Authentication.password_salt"]], "plugin (config.backend attribute)": [[6, "config.Backend.plugin"]], "plugin_defaults (config.backend attribute)": [[6, "config.Backend.plugin_defaults"]], "plugins (config.common.analysispreset attribute)": [[6, "config.Common.AnalysisPreset.plugins"]], "port (config.common.postgres attribute)": [[6, "config.Common.Postgres.port"]], "port (config.common.redis attribute)": [[6, "config.Common.Redis.port"]], "port (config.frontend.hasura attribute)": [[6, "config.Frontend.Hasura.port"]], "postgres (config.common attribute)": [[6, "config.Common.postgres"]], "processes (config.backend.plugindefaults attribute)": [[6, "config.Backend.PluginDefaults.processes"]], "processes (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.processes"]], "radare2_url (config.frontend attribute)": [[6, "config.Frontend.radare2_url"]], "redis (config.common attribute)": [[6, "config.Common.redis"]], "results_per_page (config.frontend attribute)": [[6, "config.Frontend.results_per_page"]], "ro_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.ro_pw"]], "ro_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.ro_user"]], "rw_pw (config.common.postgres attribute)": [[6, "config.Common.Postgres.rw_pw"]], "rw_user (config.common.postgres attribute)": [[6, "config.Common.Postgres.rw_user"]], "scheduling_worker_count (config.backend attribute)": [[6, "config.Backend.scheduling_worker_count"]], "server (config.common.postgres attribute)": [[6, "config.Common.Postgres.server"]], "ssdeep_ignore (config.backend attribute)": [[6, "config.Backend.ssdeep_ignore"]], "temp_dir_path (config.common attribute)": [[6, "config.Common.temp_dir_path"]], "test_database (config.common.postgres attribute)": [[6, "config.Common.Postgres.test_database"]], "test_db (config.common.redis attribute)": [[6, "config.Common.Redis.test_db"]], "throttle_limit (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.throttle_limit"]], "throw_exceptions (config.backend attribute)": [[6, "config.Backend.throw_exceptions"]], "unpacking (config.backend attribute)": [[6, "config.Backend.unpacking"]], "user_database (config.frontend.authentication attribute)": [[6, "config.Frontend.Authentication.user_database"]], "whitelist (config.backend.unpacking attribute)": [[6, "config.Backend.Unpacking.whitelist"]], "analysisplugintestconfig (class in conftest)": [[7, "conftest.AnalysisPluginTestConfig"]], "analysis_plugin() (in module conftest)": [[7, "conftest.analysis_plugin"]], "backend_config() (in module conftest)": [[7, "conftest.backend_config"]], "common_config() (in module conftest)": [[7, "conftest.common_config"]], "conftest": [[7, "module-conftest"]], "docker_mount_base_dir() (in module conftest)": [[7, "conftest.docker_mount_base_dir"]], "firmware_file_storage_directory() (in module conftest)": [[7, "conftest.firmware_file_storage_directory"]], "frontend_config() (in module conftest)": [[7, "conftest.frontend_config"]], "init_kwargs (conftest.analysisplugintestconfig attribute)": [[7, "conftest.AnalysisPluginTestConfig.init_kwargs"]], "plugin_class (conftest.analysisplugintestconfig attribute)": [[7, "conftest.AnalysisPluginTestConfig.plugin_class"]], "start_processes (conftest.analysisplugintestconfig attribute)": [[7, "conftest.AnalysisPluginTestConfig.start_processes"]], "helperfunctions.compare_sets": [[9, "module-helperFunctions.compare_sets"]], "iter_element_and_rest() (in module helperfunctions.compare_sets)": [[9, "helperFunctions.compare_sets.iter_element_and_rest"]], "remove_duplicates_from_list() (in module helperfunctions.compare_sets)": [[9, "helperFunctions.compare_sets.remove_duplicates_from_list"]], "substring_is_in_list() (in module helperfunctions.compare_sets)": [[9, "helperFunctions.compare_sets.substring_is_in_list"]], "convert_compare_id_to_list() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_compare_id_to_list"]], "convert_str_to_bool() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_str_to_bool"]], "convert_time_to_str() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_time_to_str"]], "convert_uid_list_to_compare_id() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.convert_uid_list_to_compare_id"]], "get_value_of_first_key() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.get_value_of_first_key"]], "helperfunctions.data_conversion": [[10, "module-helperFunctions.data_conversion"]], "make_bytes() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.make_bytes"]], "make_unicode_string() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.make_unicode_string"]], "none_to_none() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.none_to_none"]], "normalize_compare_id() (in module helperfunctions.data_conversion)": [[10, "helperFunctions.data_conversion.normalize_compare_id"]], "get_shared_session() (in module helperfunctions.database)": [[11, "helperFunctions.database.get_shared_session"]], "helperfunctions.database": [[11, "module-helperFunctions.database"]], "helperfunctions.docker": [[12, "module-helperFunctions.docker"]], "run_docker_container() (in module helperfunctions.docker)": [[12, "helperFunctions.docker.run_docker_container"]], "file_is_empty() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.file_is_empty"]], "get_config_dir() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_config_dir"]], "get_relative_object_path() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_relative_object_path"]], "get_src_dir() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_src_dir"]], "get_template_dir() (in module helperfunctions.filesystem)": [[13, "helperFunctions.fileSystem.get_template_dir"]], "helperfunctions.filesystem": [[13, "module-helperFunctions.fileSystem"]], "get_hash() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_hash"]], "get_md5() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_md5"]], "get_sha256() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_sha256"]], "get_tlsh_comparison() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.get_tlsh_comparison"]], "helperfunctions.hash": [[14, "module-helperFunctions.hash"]], "normalize_lief_items() (in module helperfunctions.hash)": [[14, "helperFunctions.hash.normalize_lief_items"]], "installationerror": [[15, "helperFunctions.install.InstallationError"]], "operateindirectory (class in helperfunctions.install)": [[15, "helperFunctions.install.OperateInDirectory"]], "apt_install_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.apt_install_packages"]], "apt_remove_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.apt_remove_packages"]], "apt_update_sources() (in module helperfunctions.install)": [[15, "helperFunctions.install.apt_update_sources"]], "check_distribution() (in module helperfunctions.install)": [[15, "helperFunctions.install.check_distribution"]], "check_if_command_in_path() (in module helperfunctions.install)": [[15, "helperFunctions.install.check_if_command_in_path"]], "dnf_install_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.dnf_install_packages"]], "dnf_remove_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.dnf_remove_packages"]], "dnf_update_sources() (in module helperfunctions.install)": [[15, "helperFunctions.install.dnf_update_sources"]], "helperfunctions.install": [[15, "module-helperFunctions.install"]], "install_github_project() (in module helperfunctions.install)": [[15, "helperFunctions.install.install_github_project"]], "install_pip_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.install_pip_packages"]], "is_virtualenv() (in module helperfunctions.install)": [[15, "helperFunctions.install.is_virtualenv"]], "log_current_packages() (in module helperfunctions.install)": [[15, "helperFunctions.install.log_current_packages"]], "read_package_list_from_file() (in module helperfunctions.install)": [[15, "helperFunctions.install.read_package_list_from_file"]], "remove_folder() (in module helperfunctions.install)": [[15, "helperFunctions.install.remove_folder"]], "run_cmd_with_logging() (in module helperfunctions.install)": [[15, "helperFunctions.install.run_cmd_with_logging"]], "blue (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.BLUE"]], "bold (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.BOLD"]], "coloringformatter (class in helperfunctions.logging)": [[16, "helperFunctions.logging.ColoringFormatter"]], "endc (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.ENDC"]], "fail (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.FAIL"]], "green (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.GREEN"]], "header (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.HEADER"]], "log_level_colors (helperfunctions.logging.coloringformatter attribute)": [[16, "helperFunctions.logging.ColoringFormatter.LOG_LEVEL_COLORS"]], "okblue (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.OKBLUE"]], "okgreen (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.OKGREEN"]], "purple (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.PURPLE"]], "red (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.RED"]], "terminalcolors (class in helperfunctions.logging)": [[16, "helperFunctions.logging.TerminalColors"]], "underline (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.UNDERLINE"]], "warning (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.WARNING"]], "yellow (helperfunctions.logging.terminalcolors attribute)": [[16, "helperFunctions.logging.TerminalColors.YELLOW"]], "color_string() (in module helperfunctions.logging)": [[16, "helperFunctions.logging.color_string"]], "format() (helperfunctions.logging.coloringformatter method)": [[16, "helperFunctions.logging.ColoringFormatter.format"]], "helperfunctions.logging": [[16, "module-helperFunctions.logging"]], "helperfunctions.merge_generators": [[17, "module-helperFunctions.merge_generators"]], "shuffled() (in module helperfunctions.merge_generators)": [[17, "helperFunctions.merge_generators.shuffled"]], "create_meta_dict() (in module helperfunctions.object_conversion)": [[18, "helperFunctions.object_conversion.create_meta_dict"]], "helperfunctions.object_conversion": [[18, "module-helperFunctions.object_conversion"]], "build_pdf_report() (in module helperfunctions.pdf)": [[19, "helperFunctions.pdf.build_pdf_report"]], "helperfunctions.pdf": [[19, "module-helperFunctions.pdf"]], "discover_analysis_plugins() (in module helperfunctions.plugin)": [[20, "helperFunctions.plugin.discover_analysis_plugins"]], "discover_compare_plugins() (in module helperfunctions.plugin)": [[20, "helperFunctions.plugin.discover_compare_plugins"]], "helperfunctions.plugin": [[20, "module-helperFunctions.plugin"]], "exceptionsafeprocess (class in helperfunctions.process)": [[21, "helperFunctions.process.ExceptionSafeProcess"]], "check_worker_exceptions() (in module helperfunctions.process)": [[21, "helperFunctions.process.check_worker_exceptions"]], "complete_shutdown() (in module helperfunctions.process)": [[21, "helperFunctions.process.complete_shutdown"]], "exception (helperfunctions.process.exceptionsafeprocess property)": [[21, "helperFunctions.process.ExceptionSafeProcess.exception"]], "helperfunctions.process": [[21, "module-helperFunctions.process"]], "new_worker_was_started() (in module helperfunctions.process)": [[21, "helperFunctions.process.new_worker_was_started"]], "run() (helperfunctions.process.exceptionsafeprocess method)": [[21, "helperFunctions.process.ExceptionSafeProcess.run"]], "start_single_worker() (in module helperfunctions.process)": [[21, "helperFunctions.process.start_single_worker"]], "stop_process() (in module helperfunctions.process)": [[21, "helperFunctions.process.stop_process"]], "stop_processes() (in module helperfunctions.process)": [[21, "helperFunctions.process.stop_processes"]], "terminate_process_and_children() (in module helperfunctions.process)": [[21, "helperFunctions.process.terminate_process_and_children"]], "helperfunctions.program_setup": [[22, "module-helperFunctions.program_setup"]], "setup_argparser() (in module helperfunctions.program_setup)": [[22, "helperFunctions.program_setup.setup_argparser"]], "setup_logging() (in module helperfunctions.program_setup)": [[22, "helperFunctions.program_setup.setup_logging"]], "all (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.ALL"]], "blue (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.BLUE"]], "dark (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.DARK"]], "gray (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.GRAY"]], "green (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.GREEN"]], "light (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.LIGHT"]], "light_blue (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.LIGHT_BLUE"]], "orange (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.ORANGE"]], "red (helperfunctions.tag.tagcolor attribute)": [[23, "helperFunctions.tag.TagColor.RED"]], "tagcolor (class in helperfunctions.tag)": [[23, "helperFunctions.tag.TagColor"]], "helperfunctions.tag": [[23, "module-helperFunctions.tag"]], "convert_analysis_task_to_fw_obj() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.convert_analysis_task_to_fw_obj"]], "create_analysis_task() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.create_analysis_task"]], "create_re_analyze_task() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.create_re_analyze_task"]], "get_file_name_and_binary_from_request() (in module helperfunctions.task_conversion)": [[24, "helperFunctions.task_conversion.get_file_name_and_binary_from_request"]], "helperfunctions.task_conversion": [[24, "module-helperFunctions.task_conversion"]], "create_uid() (in module helperfunctions.uid)": [[25, "helperFunctions.uid.create_uid"]], "helperfunctions.uid": [[25, "module-helperFunctions.uid"]], "is_list_of_uids() (in module helperfunctions.uid)": [[25, "helperFunctions.uid.is_list_of_uids"]], "is_uid() (in module helperfunctions.uid)": [[25, "helperFunctions.uid.is_uid"]], "filter_vpf_dict() (in module helperfunctions.virtual_file_path)": [[26, "helperFunctions.virtual_file_path.filter_vpf_dict"]], "get_paths_for_all_parents() (in module helperfunctions.virtual_file_path)": [[26, "helperFunctions.virtual_file_path.get_paths_for_all_parents"]], "get_some_vfp() (in module helperfunctions.virtual_file_path)": [[26, "helperFunctions.virtual_file_path.get_some_vfp"]], "helperfunctions.virtual_file_path": [[26, "module-helperFunctions.virtual_file_path"]], "apply_filters_to_query() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.apply_filters_to_query"]], "cap_length_of_element() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.cap_length_of_element"]], "filter_out_illegal_characters() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.filter_out_illegal_characters"]], "format_time() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.format_time"]], "get_alternating_color_list() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.get_alternating_color_list"]], "get_color_list() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.get_color_list"]], "get_template_as_string() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.get_template_as_string"]], "helperfunctions.web_interface": [[27, "module-helperFunctions.web_interface"]], "password_is_legal() (in module helperfunctions.web_interface)": [[27, "helperFunctions.web_interface.password_is_legal"]], "yarabinarysearchscanner (class in helperfunctions.yara_binary_search)": [[28, "helperFunctions.yara_binary_search.YaraBinarySearchScanner"]], "get_binary_search_result() (helperfunctions.yara_binary_search.yarabinarysearchscanner method)": [[28, "helperFunctions.yara_binary_search.YaraBinarySearchScanner.get_binary_search_result"]], "get_yara_error() (in module helperfunctions.yara_binary_search)": [[28, "helperFunctions.yara_binary_search.get_yara_error"]], "helperfunctions.yara_binary_search": [[28, "module-helperFunctions.yara_binary_search"]], "is_valid_yara_rule_file() (in module helperfunctions.yara_binary_search)": [[28, "helperFunctions.yara_binary_search.is_valid_yara_rule_file"]], "fileobject (class in objects.file)": [[30, "objects.file.FileObject"]], "add_included_file() (objects.file.fileobject method)": [[30, "objects.file.FileObject.add_included_file"]], "analysis_exception (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.analysis_exception"]], "analysis_tags (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.analysis_tags"]], "binary (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.binary"]], "comments (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.comments"]], "create_binary_from_path() (objects.file.fileobject method)": [[30, "objects.file.FileObject.create_binary_from_path"]], "depth (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.depth"]], "file_name (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.file_name"]], "file_path (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.file_path"]], "files_included (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.files_included"]], "from_json() (objects.file.fileobject class method)": [[30, "objects.file.FileObject.from_json"]], "get_hid() (objects.file.fileobject method)": [[30, "objects.file.FileObject.get_hid"]], "get_virtual_paths_for_all_uids() (objects.file.fileobject method)": [[30, "objects.file.FileObject.get_virtual_paths_for_all_uids"]], "list_of_all_included_files (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.list_of_all_included_files"]], "objects.file": [[30, "module-objects.file"]], "parent_firmware_uids (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.parent_firmware_uids"]], "parents (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.parents"]], "processed_analysis (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.processed_analysis"]], "root_uid (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.root_uid"]], "scheduled_analysis (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.scheduled_analysis"]], "set_binary() (objects.file.fileobject method)": [[30, "objects.file.FileObject.set_binary"]], "sha256 (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.sha256"]], "size (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.size"]], "temporary_data (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.temporary_data"]], "to_json() (objects.file.fileobject method)": [[30, "objects.file.FileObject.to_json"]], "uid (objects.file.fileobject property)": [[30, "objects.file.FileObject.uid"]], "virtual_file_path (objects.file.fileobject attribute)": [[30, "objects.file.FileObject.virtual_file_path"]], "firmware (class in objects.firmware)": [[31, "objects.firmware.Firmware"]], "device_class (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.device_class"]], "device_name (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.device_name"]], "from_json() (objects.firmware.firmware class method)": [[31, "objects.firmware.Firmware.from_json"]], "get_hid() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.get_hid"]], "objects.firmware": [[31, "module-objects.firmware"]], "part (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.part"]], "release_date (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.release_date"]], "set_binary() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.set_binary"]], "set_part_name() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.set_part_name"]], "set_tag() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.set_tag"]], "tags (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.tags"]], "to_json() (objects.firmware.firmware method)": [[31, "objects.firmware.Firmware.to_json"]], "vendor (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.vendor"]], "version (objects.firmware.firmware attribute)": [[31, "objects.firmware.Firmware.version"]], "abstractplugininstaller (class in plugins.installer)": [[33, "plugins.installer.AbstractPluginInstaller"]], "base_path (plugins.installer.abstractplugininstaller attribute)": [[33, "plugins.installer.AbstractPluginInstaller.base_path"]], "build() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.build"]], "install() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install"]], "install_docker_images() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_docker_images"]], "install_files() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_files"]], "install_other_packages() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_other_packages"]], "install_pip_packages() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_pip_packages"]], "install_system_packages() (plugins.installer.abstractplugininstaller method)": [[33, "plugins.installer.AbstractPluginInstaller.install_system_packages"]], "plugins.installer": [[33, "module-plugins.installer"]], "analysisexceptionerror": [[36, "scheduler.analysis.plugin.AnalysisExceptionError"]], "pluginrunner (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.PluginRunner"]], "pluginrunner.config (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.PluginRunner.Config"]], "pluginrunner.task (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.PluginRunner.Task"]], "sigterm_timeout (scheduler.analysis.plugin.worker attribute)": [[36, "scheduler.analysis.plugin.Worker.SIGTERM_TIMEOUT"]], "worker (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.Worker"]], "worker.config (class in scheduler.analysis.plugin)": [[36, "scheduler.analysis.plugin.Worker.Config"]], "worker.crashederror": [[36, "scheduler.analysis.plugin.Worker.CrashedError"]], "worker.timeouterror": [[36, "scheduler.analysis.plugin.Worker.TimeoutError"]], "dependencies (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.dependencies"]], "get_active_worker_count() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.get_active_worker_count"]], "get_queue_len() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.get_queue_len"]], "is_working() (scheduler.analysis.plugin.worker method)": [[36, "scheduler.analysis.plugin.Worker.is_working"]], "out_queue (scheduler.analysis.plugin.pluginrunner attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.out_queue"]], "path (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.path"]], "process_count (scheduler.analysis.plugin.pluginrunner.config attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Config.process_count"]], "queue_analysis() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.queue_analysis"]], "run() (scheduler.analysis.plugin.worker method)": [[36, "scheduler.analysis.plugin.Worker.run"]], "scheduler.analysis.plugin": [[36, "module-scheduler.analysis.plugin"]], "scheduler_state (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.scheduler_state"]], "shutdown() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.shutdown"]], "start() (scheduler.analysis.plugin.pluginrunner method)": [[36, "scheduler.analysis.plugin.PluginRunner.start"]], "timeout (scheduler.analysis.plugin.pluginrunner.config attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Config.timeout"]], "timeout (scheduler.analysis.plugin.worker.config attribute)": [[36, "scheduler.analysis.plugin.Worker.Config.timeout"]], "virtual_file_path (scheduler.analysis.plugin.pluginrunner.task attribute)": [[36, "scheduler.analysis.plugin.PluginRunner.Task.virtual_file_path"]], "analysisscheduler (class in scheduler.analysis.scheduler)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler"]], "cancel_analysis() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.cancel_analysis"]], "check_exceptions() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.check_exceptions"]], "get_combined_analysis_workload() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.get_combined_analysis_workload"]], "get_plugin_dict() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.get_plugin_dict"]], "get_scheduled_workload() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.get_scheduled_workload"]], "scheduler.analysis.scheduler": [[37, "module-scheduler.analysis.scheduler"]], "shutdown() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.shutdown"]], "start() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.start"]], "start_analysis_of_object() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.start_analysis_of_object"]], "update_analysis_of_object_and_children() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.update_analysis_of_object_and_children"]], "update_analysis_of_single_object() (scheduler.analysis.scheduler.analysisscheduler method)": [[37, "scheduler.analysis.scheduler.AnalysisScheduler.update_analysis_of_single_object"]], "commonintercommock (class in test.unit.conftest)": [[40, "test.unit.conftest.CommonIntercomMock"]], "frontenddatabasemock (class in test.unit.conftest)": [[40, "test.unit.conftest.FrontendDatabaseMock"]], "statusinterfacemock (class in test.unit.conftest)": [[40, "test.unit.conftest.StatusInterfaceMock"]], "webinterfaceunittestconfig (class in test.unit.conftest)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig"]], "add_analysis_task() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.add_analysis_task"]], "add_binary_search_request() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.add_binary_search_request"]], "add_compare_task() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.add_compare_task"]], "add_re_analyze_task() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.add_re_analyze_task"]], "cancel_analysis() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.cancel_analysis"]], "database_mock_class (test.unit.conftest.webinterfaceunittestconfig attribute)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig.database_mock_class"]], "get_analysis_status() (test.unit.conftest.statusinterfacemock method)": [[40, "test.unit.conftest.StatusInterfaceMock.get_analysis_status"]], "get_available_analysis_plugins() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.get_available_analysis_plugins"]], "get_binary_and_filename() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.get_binary_and_filename"]], "get_binary_search_result() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.get_binary_search_result"]], "get_repacked_binary_and_file_name() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.get_repacked_binary_and_file_name"]], "intercom_mock_class (test.unit.conftest.webinterfaceunittestconfig attribute)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig.intercom_mock_class"]], "intercom_task_list() (in module test.unit.conftest)": [[40, "test.unit.conftest.intercom_task_list"]], "peek_in_binary() (test.unit.conftest.commonintercommock static method)": [[40, "test.unit.conftest.CommonIntercomMock.peek_in_binary"]], "set_analysis_status() (test.unit.conftest.statusinterfacemock method)": [[40, "test.unit.conftest.StatusInterfaceMock.set_analysis_status"]], "shutdown() (test.unit.conftest.commonintercommock method)": [[40, "test.unit.conftest.CommonIntercomMock.shutdown"]], "status_mock_class (test.unit.conftest.webinterfaceunittestconfig attribute)": [[40, "test.unit.conftest.WebInterfaceUnitTestConfig.status_mock_class"]], "task_list (test.unit.conftest.commonintercommock attribute)": [[40, "test.unit.conftest.CommonIntercomMock.task_list"]], "test.unit.conftest": [[40, "module-test.unit.conftest"]], "test_client() (in module test.unit.conftest)": [[40, "test.unit.conftest.test_client"]], "web_frontend() (in module test.unit.conftest)": [[40, "test.unit.conftest.web_frontend"]], "error_message() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.error_message"]], "get_boolean_from_request() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_boolean_from_request"]], "get_current_gmt() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_current_gmt"]], "get_paging() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_paging"]], "get_query() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_query"]], "get_update() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.get_update"]], "success_message() (in module web_interface.rest.helper)": [[43, "web_interface.rest.helper.success_message"]], "web_interface.rest.helper": [[43, "module-web_interface.rest.helper"]]}}) \ No newline at end of file