В мире мобильных устройств часто возникает необходимость быстро проанализировать набор файлов, определить, какие из них зашифрованы, и попытаться восстановить их содержимое. Терминал Termux предоставляет полноценную Linux‑среду прямо на Android‑устройстве, а инструменты OpenSSL и GPG позволяют работать с различными криптографическими алгоритмами. В этой статье мы построим полностью автоматизированный пайплайн, который:
- сканирует указанные каталоги;
- определяет тип шифрования (AES, RSA, GPG‑подпись и т.д.);
- пытается расшифровать файлы, используя заранее известные ключи/пароли;
- логирует результаты в удобочитаемом виде.
Для начала [dictionary.com](https://www.dictionary.com/browse/start) определяет слово start как «начало чего‑то», что отлично подходит для нашего проекта – мы начинаем процесс восстановления с нуля.
Подготовка среды в Termux
Если вы только что установили Termux, выполните базовую настройку:
pkg update && pkg upgrade -y
Установим необходимые пакеты:
pkg install -y git curl wget openssl gnupg python
Создадим отдельный рабочий каталог:
mkdir -p ~/recovery && cd ~/recovery
Установка OpenSSL и GPG
В Termux openssl и gpg уже доступны после установки пакетов выше, но стоит проверить их версии:
openssl version
gpg --version
Для работы с современными алгоритмами рекомендуется использовать OpenSSL 3.x и GnuPG 2.3+.
Определение зашифрованных файлов
Мы будем использовать простую эвристическую проверку: поиск характерных заголовков файлов. Ниже – функция на Python, которую удобно вызвать из Bash.
#!/usr/bin/env python3
import sys, os, binascii
def is_encrypted(path):
with open(path, 'rb') as f:
header = f.read(16)
# Признаки OpenSSL‑encrypted (PEM) и GPG‑encrypted (ASCII‑armored)
if header.startswith(b'-----BEGIN ENCRYPTED'): return 'openssl'
if header.startswith(b'-----BEGIN PGP MESSAGE'): return 'gpg'
return None
if name == 'main':
for root, _, files in os.walk(sys.argv[1]):
for name in files:
full = os.path.join(root, name)
typ = is_encrypted(full)
if typ:
print(f"{full}\t{typ}")
Сохраняем скрипт как detect_enc.py и делаем его исполняемым:
chmod +x detect_enc.py
Автоматическое расшифрование
Для каждого найденного файла запускаем соответствующий инструмент.
#!/usr/bin/env bash
WORKDIR="$1"
KEYFILE="/data/data/com.termux/files/home/.gnupg/private.key"
PASSPHRASE="my_secret_pass"
while IFS=$'\t' read -r FILE TYPE; do
case "$TYPE" in
openssl)
echo "[+] Расшифровка OpenSSL: $FILE"
openssl enc -d -aes-256-cbc -in "$FILE" -out "${FILE}.dec" -pass pass:"$PASSPHRASE" 2>/dev/null && echo "[✓] Успешно" || echo "[✗] Ошибка"
;;
gpg)
echo "[+] Расшифровка GPG: $FILE"
gpg --batch --yes --output "${FILE}.dec" --decrypt "$FILE" 2>/dev/null && echo "[✓] Успешно" || echo "[✗] Ошибка"
;;
*) echo "[!] Неизвестный тип: $TYPE";;
esac
done < <(python3 detect_enc.py "$WORKDIR")
Сохраняем как recover.sh и делаем исполняемым:
chmod +x recover.sh
Запуск и логирование
Запускаем скрипт, указывая директорию с подозрительными файлами:
./recover.sh /sdcard/Download
Все сообщения выводятся в консоль, но их удобно сохранять в лог‑файл:
./recover.sh /sdcard/Download 2>&1 | tee recovery.log
Обработка ошибок и дополнительные проверки
- Если пароль неверный, OpenSSL вернёт код ошибки 1 – скрипт помечает файл как «не удалось».
- Для GPG‑файлов, требующих подписи, добавьте проверку
gpg --verifyперед расшифровкой. - Можно интегрировать
hashcatилиjohn the ripperдля перебора паролей, но это выходит за рамки базовой автоматизации.
Оптимизация и расширяемость
Скрипт легко адаптировать под новые алгоритмы:
# Добавляем поддержку ChaCha20‑Poly1305
openssl enc -d -chacha20 -in "$FILE" -out "${FILE}.dec" -pass pass:"$PASSPHRASE"
Для массовой обработки можно использовать parallel (пакет moreutils) и распределять задачи по нескольким ядрам процессора.
Заключение
Мы создали полностью автоматизированный инструмент, который в несколько шагов сканирует, определяет тип шифрования и пытается восстановить зашифрованные файлы Android прямо в Termux. Такой подход экономит время специалистов по цифровой криминалистике и позволяет быстро реагировать на инциденты.
Если вам нужен более глубокий аудит, кастомные модули расшифрования или интеграция с системами SIEM, команда RybinskLab готова предложить профессиональные услуги: разработка под ключ, обучение персонала и поддержка 24/7.