def main(parser): try: if parser.parse_args().compile_time: print('Время компиляции PE-файла: ' + pefile_scripts.get_compile_time( parser.parse_args().compile_time)) elif parser.parse_args().debug_compile_time: print('Время компиляции PE-файла: ' + pefile_scripts.get_debug_compile_time( parser.parse_args().debug_compile_time)) elif parser.parse_args().delphi_compile_time: print('Время компиляции PE-файла: ' + pefile_scripts.get_delphi_compile_time( parser.parse_args().delphi_compile_time)) elif parser.parse_args().section_num: print('Число секций в PE-файле: ' + str(pefile_scripts.get_section_num( parser.parse_args().section_num))) elif parser.parse_args().section_info: for section_entry in pefile_scripts.get_section_info(parser.parse_args().section_info): print(section_entry['name']) print('\tCharacteristics:', section_entry['characteristics']) print('\tMD5-хэш секции:', section_entry['MD5hash']) print('\tЭнтропия секции:', section_entry['entropy']) elif parser.parse_args().dll_num: print('Число импортируемых dll-библиотек: ' + str(pefile_scripts.get_dll_num( parser.parse_args().dll_num))) elif parser.parse_args().imphash: print('Значение imphash секции импорта PE-файла: ' + pefile_scripts.get_imphash(parser.parse_args().imphash)) elif parser.parse_args().import_info: for import_entry in pefile_scripts.get_import_info(parser.parse_args().import_info): print('Из', import_entry['dll'], 'импортируются:') for api_entry in import_entry['api']: print('\t', api_entry) elif parser.parse_args().export_api_num: print('Число экспортируемых функций: ' + str(pefile_scripts.get_export_api_num( parser.parse_args().export_api_num))) elif parser.parse_args().export_dll_name: print('Название библиотеки: ' + pefile_scripts.get_export_dll_name( parser.parse_args().export_dll_name)) elif parser.parse_args().export_info: for export_entry in pefile_scripts.get_export_info(parser.parse_args().export_info): print('Имя экспортируемой функции:', export_entry['api']) print('\t Номер (ординал):', export_entry['ordinal']) print('\t RVA-адрес:', export_entry['rva']) else: parser.print_help() except pefile_scripts.PEfileScriptsError as err: print(err)
def test_get_import_info_file_no_import(self): with self.assertRaises(pefile_scripts.PEfileScriptsError) as context: pefile_scripts.get_import_info(TEST_FILE_NO_IMPORT) self.assertTrue( 'Таблица импорта отсутствует' in str(context.exception))
def test_get_import_info_file_no_pe(self): with self.assertRaises(pefile_scripts.PEfileScriptsError) as context: pefile_scripts.get_import_info(TEST_FILE_NO_PE) self.assertTrue('Файл не является PE-файлом' in str(context.exception))
def test_get_import_info_file_no_found(self): with self.assertRaises(pefile_scripts.PEfileScriptsError) as context: pefile_scripts.get_import_info('') self.assertTrue('Файл не найден' in str(context.exception))
def test_get_import_info(self): self.assertEqual(pefile_scripts.get_import_info(TEST_EXE), TEST_IMPORT_INFO)