def create_test_firmware(device_class='Router', device_name='test_router', vendor='test_vendor', bin_path='container/test.zip', all_files_included_set=False, version='0.1'): fw = Firmware(file_path=os.path.join(get_test_data_dir(), bin_path)) fw.set_device_class(device_class) fw.set_device_name(device_name) fw.set_vendor(vendor) fw.set_release_date('1970-01-01') fw.version = version processed_analysis = { 'dummy': { 'summary': ['sum a', 'fw exclusive sum a'], 'content': 'abcd' }, 'unpacker': { 'plugin_used': 'used_unpack_plugin' }, 'file_type': { 'mime': 'test_type', 'full': 'Not a PE file', 'summary': ['a summary'] } } fw.processed_analysis.update(processed_analysis) if all_files_included_set: fw.list_of_all_included_files = list(fw.files_included) fw.list_of_all_included_files.append(fw.uid) return fw
def test_get_hid(input_data, expected_output): test_fw = Firmware(binary=b'foo') test_fw.device_name = 'test_device' test_fw.vendor = 'foo' test_fw.version = '1.0' test_fw.set_part_name(input_data) assert test_fw.get_hid() == expected_output
def _convert_to_firmware(self, entry: dict, analysis_filter: List[str] = None) -> Firmware: firmware = Firmware() firmware.uid = entry['_id'] firmware.size = entry['size'] firmware.file_name = entry['file_name'] firmware.device_name = entry['device_name'] firmware.device_class = entry['device_class'] firmware.release_date = convert_time_to_str(entry['release_date']) firmware.vendor = entry['vendor'] firmware.version = entry['version'] firmware.processed_analysis = self.retrieve_analysis(entry['processed_analysis'], analysis_filter=analysis_filter) firmware.files_included = set(entry['files_included']) firmware.virtual_file_path = entry['virtual_file_path'] firmware.tags = entry['tags'] if 'tags' in entry else dict() firmware.analysis_tags = self._collect_analysis_tags_from_children(firmware.uid) try: # for backwards compatibility firmware.set_part_name(entry['device_part']) except KeyError: firmware.set_part_name('complete') if 'comments' in entry: # for backwards compatibility firmware.comments = entry['comments'] return firmware