We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Автоматизированный анализ и восстановление зашифрованных файлов Android в Termux с использованием OpenSSL и GPG

В мире мобильных устройств часто возникает необходимость быстро проанализировать набор файлов, определить, какие из них зашифрованы, и попытаться восстановить их содержимое. Терминал 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.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

Связаться со мной
Поддержать проект