示例#1
0
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)
示例#2
0
 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))
示例#3
0
 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))
示例#4
0
 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))
示例#5
0
 def test_get_import_info(self):
     self.assertEqual(pefile_scripts.get_import_info(TEST_EXE),
                      TEST_IMPORT_INFO)