Twothy is a Two-factor authenticator for CLI. The project is a reference implementation of RFC 6238 and is compatible with Google Authenticator. The project was born out of frustration to get OTP from my Mobile and lack of control over and backup of Secrets. With a simple configuration, twothy can work across multiple devices without the need to regenerate the secrets for each 2FA enabled accounts. More here
Installation assumes that you have Go environment configured.
Go get the project with following command
go get -u github.com/vedhavyas/twothy/cmd/twothy/...
Running the tests
Once inside project' folder, simply run
make test to run the tests.
Twothy requires you to provide a path to store the accounts. Configuration can be triggered by
>> twothy configure Welcome to twothy!! Enter the path to store your 2FA accounts. I will create 'twothy_accounts' folder at the provided path. If you are restoring accounts, provide path to 'twothy_accounts'. Path(/Users/vedhavyas):
Once you enter path, which defaults to user's home directory if not given, twothy will store all the accounts there. Configure will be triggered if any other action is called ex: add
Adding an account
Adding account requires Issuer, Label and the secret Key.
>> twothy add google test MZZWCLDCOZSGMYTKONSGM=== Password(to encrypt the account): test@google: 168339
Generating OTP for all accounts
>> twothy otp Password(to decrypt the account): test@google: 772912
Generating OTPs for all accounts belonging to an issuer
>> twothy otp google Password(to decrypt the account): test@google: 017934
Generating OTP for an account matching issuer and label
>> twothy otp google test Password(to decrypt the account): test@google: 917472
Twothy uses AES to encrypt your accounts. It doesn't cache any passwords and requires password to add account and generate OTP.
I use google drive to backup my 2FA accounts by configuring twothy to save accounts inside Google Drive folder. You are free to use your favourite backup service to achieve something similar
- Glide - Dependency Management
- HomeDir - Used to get User's home directory
- Crypto - Used to get password from terminal securely
PRs, Issues, and Feedback are very welcome and appreciated.
- Vedhavyas Singareddi - Vedhavyas
This project is licensed under the Unlicense - see the LICENSE file for details