bna is a command line interface to the python-bna library. It can store and manage multiple authenticators, as well as create new ones.
- Two things to remember:
- Using an authenticator on the same computer as the one you're playing on is not secure.
- It is impossible (without knowing the secret) to import an existing authenticator
Configuration is stored in ~/.config/bna/bna.conf. You can pass a different config directory with --config=~/.bna.conf for example.
$ bna --new
If you do not already have an authenticator, it will be set as default. You can pass --set-default otherwise.
$ bna 01234567 $ bna EU-1234-1234-1234 76543210
$ bna --restore-code Z45Q9CVXRR $ bna --restore EU-1234-1234-1234 ABCDE98765 Restored serial EU-1234-1234-1234
$ bna --otpauth-url otpauth://totp/Battle.net:EU123412341234:?secret=ASFAS75ASDF75889G9AD7S69AS7697AS&issuer=Battle.net&digits=8
Now paste this to your OTP app, or convert to QRCode and scan, or manually enter the secret.
Note: This will not work with "Google Authenticator" as it does not support 8 digits, try "FreeOTP"
To encode to a QRCode on your local system install 'qrencode'
For a PNG file saved to disk
$ bna --otpauth-url | qrencode -o ~/BNA-qrcode.png # Scan QRCode $ rm ~/BNA-qrcode.png
Or to attempt ot display QRCode in terminal as text output
$ bna --otpauth-url | qrencode -t ANSI
import bna
try:
# region is EU or US
# note that EU authenticators are valid in the US, and vice versa
serial, secret = bna.request_new_serial("US")
except bna.HTTPError as e:
print("Could not connect:", e)
# Get and print a token
token, time_remaining = bna.get_token(secret=secret)
print(token)
# print a new token every time the previous one expires
from time import sleep
while True:
token, time_remaining = bna.get_token(secret=secret)
print(token)
sleep(time_remaining)