You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
FrankAbagnaleJr cc26f7b589
Option to save QR codes as PNG (#2)
* Generate QR code images

Now generates QR images instead of attempting to display the QR code in the console. Places them in a subdirectory of the current directory, entitled "qr"

* Update README.md

* Changes based on suggestions from scito

https://github.com/scito/extract_otp_secret_keys/pull/2#pullrequestreview-555264890

* Update extract_otp_secret_keys.py

Minor formatting changes and clarifications to help text

* Update extract_otp_secret_keys.py

Remove --qr argument, instead opting to respond to --printqr or --saveqr
4 years ago
generated_python Initial 4 years ago
.editorconfig Initial 4 years ago
README.md Option to save QR codes as PNG (#2) 4 years ago
example_export.txt Initial 4 years ago
extract_otp_secret_keys.py Option to save QR codes as PNG (#2) 4 years ago
google_auth.proto Initial 4 years ago

README.md

Extract TOTP/HOTP secret keys from Google Authenticator

Extract two-factor authentication (2FA, TFA) secret keys from export QR codes of "Google Authenticator" app

Usage

  1. Export the QR codes from "Google Authenticator" app

  2. Read QR codes with QR code reader

  3. Save the captured QR codes in a text file. Save each QR code on a new line. (The captured QR codes look like otpauth-migration://offline?data=...)

  4. Call this script with the file as input:

     python extract_otp_secret_keys.py -q example_export.txt
    

Requirement

The protobuf package of Google for proto3 is required for running this script.

pip install protobuf

Optional

For printing QR codes, the qrcode module is required

pip install qrcode[pil]

Technical background

The export QR code of "Google Authenticator" contains the URL otpauth-migration://offline?data=.... The data parameter is a base64 encoded proto3 message (Google Protocol Buffers).

Command for regeneration of Python code from proto3 message definition file (only necessary in case of changes of the proto3 message definition):

protoc --python_out=generated_python google_auth.proto

References