Similar to the Google authenticator just written in Python. With more and more services requiring two factor authentication without supporting application specific passwords or other forms of token based authenication suitable for automation this python packages allows to generate two factor authentication codes on the commandline or in python.
Install pyauthenticator via conda:
>>> conda install -c conda-forge pyauthenticator Alternatively, pyauthenticator can also be installed via pip:
>>> pip install pyauthenticator Get help how to use pyauthenticator using the --help/-h option:
>>> pyauthenticator --help usage: pyauthenticator [-h] [-qr] [-a ADD] service positional arguments: service Service to generate optauth code for. Currently no service is defined in the ~/.pyauthenticator config file. options: -h, --help show this help message and exit -qr, --qrcode Generate qrcode as <service.png> file. -a ADD, --add ADD Add service by providing the <qrcode.png> file as additional argument. Add google as new service after saving the qrcode to Screenshot 2023-07-02 at 12.45.09.png to your desktop:
>>> pyauthenticator google --add ~/Desktop/Screenshot\ 2023-07-02\ at\ 12.45.09.png The service 'google' was added, from file </Users/jan/Desktop/Screenshot 2023-07-02 at 12.45.09.png> Afterwards, new authentication codes can be generated for the service google using:
>>> pyauthenticator google 087078 Beyond google, pyauthenticator works for any service which implements the two factor authentication.
If you mistype the name of the service, then pyauthenticator suggests alternative options:
>>> pyauthenticator googel The service "googel" does not exist. The config file ~/.pyauthenticator contains the following services: * google Choose one of these or add a new service using: pyauthenticator --add <qr-code.png> <servicename> For any support requests feel free to open an issue on Github.
The same functionality which is available on the command line is also available via the python interface:
from pyauthenticator import get_two_factor_code get_two_factor_code(service)So pyauthenticator can be integrated in existing python packages which need access to resources protected by two factor authentication.
The configuration is stored in ~/.pyauthenticator it is written in the JSON format. For a given service like github the config file contains:
{"google": "otpauth://totp/Google:<username>?secret=<secret>&issuer=Google"}With the Google username <username> and the corresponding secret <secret> being contained in the QR code.
The pyauthenticator package is licensed under the BSD-3-Clause license.
