extract_otp_secret_keys/README.md

44 lines
1.4 KiB
Markdown
Raw Normal View History

2020-05-23 09:01:54 +02:00
# Extract TOTP/HOTP secret keys from Google Authenticator
2020-05-23 09:10:50 +02:00
Extract two-factor authentication (2FA, TFA) secret keys from export QR codes of "Google Authenticator" app
2020-05-23 09:01:54 +02:00
## Usage
1. Export the QR codes from "Google Authenticator" app
2. Read QR codes with QR code reader
2020-05-23 09:30:47 +02:00
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=...`)
2020-05-23 09:01:54 +02:00
4. Call this script with the file as input:
2020-05-23 09:30:47 +02:00
python extract_otp_secret_keys.py -p example_export.txt
2020-05-23 09:01:54 +02:00
## Requirement
2021-02-07 20:01:56 +01:00
The protobuf package of Google for proto3 is required for running this script. protobuf >= 3.14 is recommended.
2020-05-23 09:01:54 +02:00
pip install protobuf
2021-02-07 20:01:56 +01:00
Known to work with
* Python 3.6.12 and protobuf 3.14.0
* Python 3.8.5 and protobuf 3.14.0
2020-05-23 09:01:54 +02:00
### Optional
For printing QR codes, the qrcode module is required
pip install qrcode[pil]
2020-05-23 09:01:54 +02:00
## Technical background
2020-05-23 09:30:47 +02:00
The export QR code of "Google Authenticator" contains the URL `otpauth-migration://offline?data=...`.
2020-05-23 09:01:54 +02:00
The data parameter is a base64 encoded proto3 message (Google Protocol Buffers).
2020-05-23 09:30:47 +02:00
Command for regeneration of Python code from proto3 message definition file (only necessary in case of changes of the proto3 message definition):
2020-05-23 09:01:54 +02:00
protoc --python_out=generated_python google_auth.proto
## References
2020-05-23 09:03:37 +02:00
* Proto3 documentation: https://developers.google.com/protocol-buffers/docs/pythontutorial
* Template code: https://github.com/beemdevelopment/Aegis/pull/406