Как по простому экспортировать данные из Яндекс.Ключ?

У меня возникла необходимость перенести сторонние ключи из Яндекс.Ключ в другое приложение.
Какой наиболее простой способ это сделать? Тех. поддрежка Яндекса говорит, что только из/в Яндекс.Ключ через backup в облако по номеру.

Сложный вариант, который я использовал:
1. Поднять эмулятор Андройда (я использовал LDPlay)
2. Включить ROOT
3. С помощью ADB (есть в эмуляторе) залить frida-server
4. Создать Python venv и pip install frida-tools
5. Скачать с Frida CodeShare realgam3/dynamichooks
6. Настроить Hook'и:
hook("com.yandex.auth.authenticator.storage.Vault.string", {
	    logLevel: 1,
	    arguments: ['java.lang.String'],
	    stackTrace: false,
	    callOriginal: false,
	});
	hook("com.yandex.auth.authenticator.storage.Vault.int", {
	    logLevel: 1,
	    arguments: ['java.lang.String'],
	    stackTrace: false,
	    callOriginal: false,
	    stringifyResult: function (arg, ctx) {
	        return arg.toString();
	    }
	});
	hook("com.yandex.auth.authenticator.storage.Vault.long", {
	    logLevel: 1,
	    arguments: ['java.lang.String'],
	    stackTrace: false,
	    callOriginal: false,
	    stringifyResult: function (arg, ctx) {
	        return arg.toString();
	    }
	});

7. На хосте запустить: (.venv-frida) PS C:\Temp\frida> frida -U -l .\dynamic-hooks.js -f ru.yandex.key > log.txt
8. В эмуляторе в Яндекс.Ключе восстановить данные из облака

В результате в логе будут пачки из строчек вида:

VERSION.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"result":"1"}
TYPE.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"result":"RFC"}
SECRET.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"result":"vvvvvvvvvvvvvvvvv"}
PIN.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"result":null}
ALGORITHM.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"result":"SHA1"}
PERIOD.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"result":"30000"}

где 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' это UUID записи из /data/ru.yandex.key/files/account:
[
    {
        "type": "com.yandex.auth.authenticator.serializing.entities.Account.Regular",
        "id": {
            "value": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        },
        "login": {
            "value": "UserName"
        },
        "issuer": {
            "value": "example.com"
        },
        "otpLength": {
            "type": "com.yandex.auth.authenticator.models.OtpLength.Default"
        }
    }
]


Не уж то нет способа попроще, чтобы вытащить свои данные из приложения, которые сам же туда и добавил?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
@Degot Автор вопроса
По ходу дела, метод описанный выше - единственный вариант
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы