Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/krissrex/google-authenticator-exporter

Get the TOTP secrets exported by Google Authenticator
https://github.com/krissrex/google-authenticator-exporter

2fa decode export mfa migrate nodejs secret-keys totp

Last synced: about 2 months ago
JSON representation

Get the TOTP secrets exported by Google Authenticator

Awesome Lists containing this project

README

        

# Google Authenticator secret extractor

> **Note:** This project and I are in no way affiliated with Google.

This lets you decode the URI generated by Google Authenticator.

![Example](example.png)

## Guide

**Prerequisites:**
* Your phone with Google Authenticator
* A camera
* [Nodejs installed](https://nodejs.org/en/download/)
* A QR scanner
* Android: [ZXing](https://play.google.com/store/apps/details?id=com.google.zxing.client.android)
* Mac/Win/Linux: [ZBar](https://github.com/mchehab/zbar) (See [issue 22](https://github.com/krissrex/google-authenticator-exporter/issues/22) for usage)

**Getting the secret keys:**
1. Open the Google Authenticator app.
2. Click Settings (three dots, top right), and *Transfer accounts*.
3. Select *Export accounts*.
4. Authenticate, if prompted.
5. Select the accounts you want to export (default is *all*).
6. Click *Next*, and capture a picture of the QR code.
* **Note:** Screenshots are disabled by the app.
Use your laptop webcam, a digital camera or another phone.
7. Click *Next*, and repeat step 6 for all QR codes shown (if you have many accounts).
8. Decode the QR codes to obtain the `otpauth-migration://offline?data=...` URI.
9. Clone/Download this repository.
10. Run `npm install`.
11. For generating json run`npm run start`, for generating qr-codes run `npm run start:qrcode`.
12. Enter the URI when prompted
13. If you chose json and you want to save the output, enter `y` and `accounts.json`

## Use a docker image

**Prerequisites:**

Build the docker image locally:
```sh
docker build . --tag google-authenticator-exporter:0.0.1
```

**Decode an obtained QR code URI:**
1. Run the docker container locally:
```sh
docker run -it --rm google-authenticator-exporter:0.0.1
```
2. Enter the URI when prompted
3. Since you haven't mounted a volume, you cannot save the output using the above command, so leave the next questions empty (hit Enter).
4. The output to json will be printed out to terminal.

## References

I found the protobuff code in https://github.com/beemdevelopment/Aegis/pull/406/files.
The opensource Google Authenticator does not seem to have this yet (*5th May 2020*): https://github.com/google/google-authenticator-android/issues/118.

A QR scanner app for Android that works is https://play.google.com/store/apps/details?id=com.google.zxing.client.android.

The Base32 format is specified in https://tools.ietf.org/html/rfc3548. There are multiple ways to implement Base32.

License: MIT,
**BUT** this uses GNU GPL 3 code as a dependency (https://github.com/alexbakker/Aegis/blob/56bde0e19b51568a7050f6cb56085a1bb38c5a9e/app/src/main/proto/google_auth.proto) (https://github.com/alexbakker/Aegis/blob/56bde0e19b51568a7050f6cb56085a1bb38c5a9e/LICENSE)