Инструмент для восстановления данных, зашифрованных AES-256-ECB, в случаях, когда ключ генерировался через слабый PRNG (сид на основе системного времени).
Многие разработчики вредоносного ПО совершают критическую ошибку, используя стандартную функцию rand() из системных библиотек Си и сидируя её через srand(time(NULL)).
Поскольку time(NULL) возвращает время в секундах, пространство поиска ключей сужается с
- Кроссплатформенность: Автоматически подгружает нужные либы (
msvcrt.dllдля Windows илиlibc.soдля Linux/macOS). - Auto-Magic Detection: Распознает расшифрованный файл по сигнатурам:
- Документы: PDF
- Исполняемые файлы: EXE (MZ), ELF
- Архивы: ZIP (MS Office), RAR
- Изображения: JPG, PNG
- Smart Search: Перебор сидов в заданном временном окне (по умолчанию +/- 2 минуты от времени файла).
Скрипт требует библиотеку pycryptodome для работы с AES:
pip install pycryptodomeПросто укажите путь к зашифрованному файлу. Скрипт автоматически считает время модификации из метаданных системы и начнет поиск ключа:
python decryptor.py <путь_к_файлу>Когда вы запускаете скрипт, процесс выглядит следующим образом:
Анализ файла: document.pdf.enc
Время модификации: Sat Mar 14 15:30:00 2026 (Timestamp: 1773322200)
Начинаю перебор сидов в диапазоне +/- 120 секунд...
Проверяю сид: 1773322190...
Проверяю сид: 1773322200...
Сид найден: 1773322200
Определен формат: PDF Document (%PDF)
AES Ключ (hex): 5f4dcc3b5aa765d61d8327deb882cf99a8b1...
Расшифровываю основной массив данных...
Удаление PKCS7 паддинга (найдено 12 байт)...
Файл успешно восстановлен: DECRYPTED_document.pdf
Скрипт не просто подбирает ключи, он воспроизводит поведение системного рантайма малвари:
- Бинарная совместимость: Мы используем
ctypes, чтобы вызвать оригинальные функцииsrand()иrand()из системных библиотек (msvcrt.dllна Windows илиlibc.so.6на Linux). Это гарантирует, что генерируемая последовательность байтов будет на 100% идентична той, которую использовал шифровальщик. - Алгоритм атаки (Known Plaintext Attack):
- Скрипт берет временную метку файла.
- В цикле сидирует генератор каждым возможным значением времени из "окна" поиска.
- Пытается расшифровать первый блок данных.
- Сверяет результат со списком "магических байтов" (сигнатур) известных форматов.
- Авто-паддинг: Поддерживается базовая логика удаления PKCS7 паддинга, что позволяет получать чистые файлы на выходе.
Данный инструмент разработан исключительно для образовательных целей и помощи в восстановлении данных в рамках легальной деятельности по анализу вредоносного ПО. Автор не несет ответственности за любое использование данного кода в противоправных целях. Используйте его только на файлах, на которые у вас есть права.