December 2, 2022

Восстановление пропавших сообщений

Гайд слегка повышенного уровня и требует рут доступ, но может быть полезен для сохранения секретных чатов или чего-нибудь еще, что может потеряться при удалении базы данных.
Так-как у вас уже должен быть рут, установку adb описывать не буду.

  • Скачиваем sqlite-tools (sqlite из стандартного пакета поставки platform-tools не подойдет)
  • Открываем терминал/консоль/повершелл
    • В повершелле для удобства можно добавить текущую директорию в path с помощью команды $env:PATH =$env:PATH+";."
  • Обязательно останавливаем telegraher через системные настройки, иначе будут ошибки
  • Выполняем:
    adb shell
    su и разрешаем на телефоне рут доступ шеллу
  • Копируем бд в место доступное для легкого копированния далее: cp /data/user/0/com.evildayz.code.telegraher2/files/cache4.db /storage/emulated/0 (для бета версии грахера путь будет /data/user/0/com.evildayz.code.telegraher2_beta/files/cache4.db)
    • выходим из рута exit
      и из шелла exit
  • Копируем бд на комп: adb pull /storage/emulated/0/cache4.db директория\на\пк\где\у\вас\лежит\sqlite-tools
  • Переходим в директорию sqlite-tools
  • Восстанавливем бд с помощью: sqlite3 cache4.db ".recover" | sqlite3 cache4.rec.db
  • Некоторые данные не могут быть востанновлены с помощью команды выше, поэтому делаем эти: sqldiff cache4.rec.db cache4.db > diff.sql
    sqlite3 cache4.rec.db < diff.sql (версия для повершелла: cmd /c 'sqlite3 cache4.rec.db < diff.sql' )
    • Если выдало syntax error то не стопнули аппку/криво скопировалось/что-то еще, в общем, бд повреждена, в данном случае удаляем поврежденную бд с компа и делаем все заново ;)
  • Подключаемся к восстановленной бд: sqlite3 cache4.rec.db
  • И выполняем: PRAGMA user_version = 100;
    • Выходим из sqlite .quit
  • Копируем восстановленную бд в телефон: adb push путь\до\в\sqlite-tools\cache4.rec.db` /storage/emulated/0/
  • Заходм в шелл и копируем бд обратно в папку грахера: adb shell
    su
    mv /storage/emulated/0/cache4.rec.db /data/user/0/com.evildayz.code.telegraher2/files/ (или бета вариант)
  • Удаляем старую бд: rm /data/user/0/com.evildayz.code.telegraher2/files/cache4.db
  • Переименовываем новую: mv /data/user/0/com.evildayz.code.telegraher2/files/cache4.rec.db /data/user/0/com.evildayz.code.telegraher2/files/cache4.db
  • Выходим из рута и шелла и запускаем грахер

Гайд основан на этом ответе.