O FreeOTP junto com muitos outros produtos do mercado são versões Open Source do Authenticator do Google. Eu pessoalmente sempre prefiro soluções deste tipo pois nos permitem mais liberdade.
O próprio FreeOTP possui uma versão baseada no seu código, o FreeOTP+ que facilita este processo que eu vou apresentar aqui para vocês. Não posso usar o FreeOTP+ pois ele não é homologado pela equipe de segurança do meu trabalho, mas, se sua empresa não tem ainda um produto homologado para este fim, aconselho apresentar a equipe a segunda opção.
Mas vamos lá. Ter um backup dos tokens é bem importante. Soluções como o Authy ( indicado pelo Privacytools ) e o Authenticator Plus ( infelizmente já há alguns anos abandonado pelo desenvolvedor ) possuem estas opções de backup e sincronização entre dispositivos de forma nativa.
Feita esta pequena introdução, vamos ao que realmente interessa, o backup.
Como fazer o backup do FreeOTP
O processo é bem simples. Você vai precisar do adb instalado no seu computador. E também, opções de desenvolvedor ativadas no seu Android.
Feito isto, cabo USB ligado ao seu computador e, rode o seguinte comando :
adb backup -f freeotp-backup.ab -apk org.fedorahosted.freeotp
Onde freeotp-backup.ab é o arquivo de backup que será gerado e org.fedorahosted.freeotp é o id do FreeOTP no Android.
Ao rodar o comando, no seu Android irá abrir uma tela pedindo uma senha. Feito isto o backup já estará no seu computador.
Como usar os tokens do backup ?
O backup gerado é um arquivo encriptado. Um tipo de tar. E para extraí-lo temos que usar o Android Backup Extrator . Algumas distruições tem ele nos seus repositórios, mas, como eu uso o Fedora tive que ir direto ao arquivo jar que está disponível no Git.
O artigo que eu linkei vai te dar uma enorme história de como recuperar o trem. Mas … sinceridade ? Não vou entrar em tanto detalhe aqui não.
O processo bem rápido. Baixe o Android Backup Extractor. Com o jar em mãos rode o comando :
java -jar abe.jar unpack freeotp-backup.ab freeotp-backup.tar
Com o arquivo tar nas mãos descompacte-o .
$ tar xvf freeotp-backup.tar
apps/org.fedorahosted.freeotp/_manifest
apps/org.fedorahosted.freeotp/sp/tokens.xml
E finalmente salve o conteúdo abaixo em um arquivo chamado get-token.py
( lembrando de criar o arquivo dentro do diretório apps que foi gerado a partir da descompactação do arquivo .tar).
A partir daí é só rodar o script get-token.py .
$ chmod +x get-token.py
$ cd apps
$ ./get-token.py
secret name: token name
token secret base64: PLYQWM44SMKVTYW5