diff --git a/README.md b/README.md index 37068d9..8b0a44c 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,18 @@ cd extract_otp_secret_keys ## Usage +### With builtin QR decoder + +1. Open "Google Authenticator" app on the mobile phone +2. Export the QR codes from "Google Authenticator" app +4. Save the captured QR codes as image files, e.g. example_export.png +5. Transfer the images files to the computer where his script is installed. +6. Call this script with the file as input: + + python extract_otp_secret_keys.py example_export.png + +### With external QR decoder app + 1. Open "Google Authenticator" app on the mobile phone 2. Export the QR codes from "Google Authenticator" app 3. Read QR codes with a QR code reader (e.g. from another phone) @@ -79,17 +91,24 @@ For protobuf versions 3.14.0 or similar or Python 3.6, use the extract_otp_secre python extract_otp_secret_keys.py example_export.txt -### Printing otp secrets from stdin +### Printing otp secrets from image file - python extract_otp_secret_keys.py - < example_export.txt + python extract_otp_secret_keys.py example_export.png + +### Printing otp secrets multiple files -### Printing otp secrets from image + python extract_otp_secret_keys.py example_*.txt + python extract_otp_secret_keys.py example_*.png + python extract_otp_secret_keys.py example_export.* + python extract_otp_secret_keys.py example_*.txt example_*.png - python extract_otp_secret_keys.py test/test_googleauth_export.png +### Printing otp secrets from stdin (text) + + python extract_otp_secret_keys.py - < example_export.txt ### Printing otp secrets from stdin (image) - python extract_otp_secret_keys.py = < test/test_googleauth_export.png + python extract_otp_secret_keys.py = < example_export.png ### Printing otp secrets csv to stdout @@ -98,16 +117,29 @@ For protobuf versions 3.14.0 or similar or Python 3.6, use the extract_otp_secre ## Features * Free and open source -* Supports Google Authenticator export +* Supports Google Authenticator exports (and compatible apps like Aegis Authenticator) * All functionality in one Python script: extract_otp_secret_keys.py (except protobuf generated code in protobuf_generated_python) * Supports TOTP and HOTP * Generates QR codes +* Reads QR Code images * Various export formats: * CSV * JSON * Dedicated CSV for KeePass * QR code images * Supports reading from stdin and writing to stdout by specifying '-' +* Various import image formats: (See [OpenCV docu](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)) + * Portable Network Graphics - *.png + * WebP - *.webp + * JPEG files - *.jpeg, *.jpg, *.jpe + * TIFF files - *.tiff, *.tif + * Windows bitmaps - *.bmp, *.dib + * JPEG 2000 files - *.jp2 + * Portable image format - *.pbm, *.pgm, *.ppm *.pxm, *.pnm + * Sun rasters - *.sr, *.ras + * OpenEXR Image files - *.exr + * Radiance HDR - *.hdr, *.pic + * Raster and Vector geospatial data supported by GDAL * Errors and warnings are written to stderr * Many ways to run the script: * Native Python @@ -117,6 +149,10 @@ For protobuf versions 3.14.0 or similar or Python 3.6, use the extract_otp_secre * VSCode devcontainer * devbox * pip +* Compatible with multiple platforms (tested by CI): + * Linux + * macOS + * Windows ## KeePass diff --git a/example_export.png b/example_export.png new file mode 100644 index 0000000..0a4d2b7 Binary files /dev/null and b/example_export.png differ