Cross-platform C#/.Net implementation to generate one time passwords for open authentication defined by standard RFC's:
Compatible with Google/Microsoft Authenticator and other authenticators that supports corresponding RFC's.
Ensure that .Net 6 or later is installed
dotnet --version
Clone repository and run totp
or hotp
command:
git clone https://github.com/AndreyRusyaev/simpleauthenticator
cd simpleauthenticator
dotnet run totp -s "<your base32 encoded secret key>"
Output:
Token: 123456 (valid for 25 seconds).
.Net 6.0 or higher.
HOWTO: Install .NET 8 on Windows, Linux, and macOS
# run in elevated shell
winget install Microsoft.DotNet.SDK.8
# Register Microsoft packages feed (https://learn.microsoft.com/en-us/linux/packages)
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# installation
sudo apt update && sudo apt-get install -y dotnet-sdk-8.0
brew install dotnet
Description:
Generates one time passwords (HOTP and TOTP tokens).
Usage:
simpleauthenticator [command] [options]
Options:
--version Show version information
-?, -h, --help Show help and usage information
Commands:
totp Generates time based one time password (TOTP token, RFC 6238).
hotp Generates hmac based one time password (HOTP token, RFC 4226).
totp Command Options:
-s, --secretkey, --secretkey-base32 <secretkey-base32> Base32 encoded secret key (whitespaces allowed). Example:
'A5YS 2UP6 K4UF 46GD'.
-s64, --secretkey-base64 <secretkey-base64> Base64 encoded secret key (whitespaces allowed). Example:
'B3Et Uf5X KF54 ww=='.
--token-length <token-length> Token length. Default: 6.
hotp Command Options:
-s, --secretkey, --secretkey-base32 <secretkey-base32> Base32 encoded secret key (whitespaces allowed). Example:
'A5YS 2UP6 K4UF 46GD'.
-s64, --secretkey-base64 <secretkey-base64> Base64 encoded secret key (whitespaces allowed, '=' can be omited). Example:
'B3Et Uf5X KF54 ww=='.
-c, --counter <counter> (REQUIRED) 8-byte counter value, the moving factor. This counter
MUST be synchronized between the HOTP generator (client)
and the HOTP validator (server).
--token-length <token-length> Token length. Default: 6.
git clone https://github.com/AndreyRusyaev/simpleauthenticator
cd simpleauthenticator
dotnet run totp --secretkey "A5YS 2UP6 K4UF 46GD"
OR
git clone https://github.com/AndreyRusyaev/simpleauthenticator
cd simpleauthenticator
dotnet run totp --secretkey-base64 "B3Et Uf5X KF54 ww=="
Output:
Token: 316788 (valid for 25 seconds).
git clone https://github.com/AndreyRusyaev/simpleauthenticator
cd simpleauthenticator
dotnet run hotp --counter 12345 --secretkey "A5YS 2UP6 K4UF 46GD"
OR
git clone https://github.com/AndreyRusyaev/simpleauthenticator
cd simpleauthenticator
dotnet run hotp --counter 12345 --secretkey-base64 "B3Et Uf5X KF54 ww=="
Output:
Token: 316788.