Skip to content

dEn13L/Okroshka

Repository files navigation

# Культ кефира Tinkoff CTF 2024

Имеем приложение чата и зашифрованный файл базы данных, экспортированный из этого приложения

  1. С помощью программы JadxGUI декомпилим apk файл

В исходниках находим

  • файл Utility.java с методом для шифрования базы данных
  • В файле ChatActivity.java находим id админа J85qLk4N3GQy3puROgkyGUwgEAT2
  1. Создаем пустой Android проект и копируем туда Utility.java, удаляя ненужный код

Как видно в методе encryptDatabase

  • из userid берется подстрока из последних 3 символов
  • из внутренних файлов приложения загружается файл ключа шифрования enc_key
  • при отсутствии этот файл создается с помощью подстроки
  • с помощью рандома генерится вектор инициализации
  • генерится метаданные о файле включающие дату шифрования и подстроку пользователя
  • все эти данные укладываются в зашифрованный файл
    • первые два байта размер метаданных (в типе short)
    • 16 байт вектора инициализации
    • метаданные
    • сама исходная база, зашифрованная и сжатая с помощью DeflaterOutputStream
    • 16 байт подписи
  1. Загружаем зашифрованную базу во внутреннюю память приложения

/data/data/com.example.okroshka/files/MessengerDB.db_enc

  1. Теперь зная алгоритм шифрования, надо написать дешифратор

Зная об id админа, пробует подставить его в алгоритм Дешифровать базу не получится, по мы получаем метаданные 2024-04-19 23:01:38_D13, по которым видно, что базу экспортировал другой пользователь, с id, заканчивающимся на D13. Используем на этот его, предварительно удаляя неверный enc_key

  1. Скачиваем дешифрованную базу и открываем ее

Видим таблицу messages с перепиской и забираем оттуда код

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages