initial commit

This commit is contained in:
AJ ONeal 2016-01-02 01:09:19 -08:00
parent 3ebf15ffff
commit f0da6f3db8
3 changed files with 137 additions and 1 deletions

View File

@ -1,2 +1,43 @@
# authenticator-cli
A commandline Authenticator App (for Authy, Google Authenticator, Microsoft Authenticator, TOTP, etc)
A commandline Authenticator App (for Authy, Google Authenticator, Microsoft Authenticator, Facebook Authenticator, TOTP, etc)
**Install node.js 4.0+**:
```bash
curl -L https://bit.ly/iojs-min | bash
```
**Install authenticator**:
```bash
npm install --global authenticator-cli
```
```
Usage:
authenticator [OPTIONS]
Options:
--account user@example.com Account Name, typically email address (Default is user@example.com)
--algo SHA1 Algorithm, typically SHA1 (also SHA256, SHA512) (Default is SHA1)
--digits 6 Number of digits, typically 6 (also 8) (Default is 6)
--generate Create a cryptographically-random TOTP key
formatted in base32 with spaces. (Default is true)
--issuer ACME Issuer, typically the company name (Google,
Facebook, Digital Ocean, etc) (Default is ACME)
--key 'xxxx xxxx ...' Supply the base32 key yourself (with or without
delimeters). Takes precedence over --generate
--period 30 Number of seconds between tokens, typically 30 (Default is 30)
--qr Print the QR Code to the Terminal.
--verify '123 456' Verify a token. Must be used with --key.
-h, --help Display help and usage details
```

53
bin/authenticator.js Executable file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env node
'use strict';
var cli = require('cli');
var authenticator = require('authenticator');
var qrcode = require('qrcode-terminal');
cli.parse({
account: [ false, "Account Name, typically email address", 'string', 'user@example.com' ]
, algo: [ false, "Algorithm, typically SHA1 (also SHA256, SHA512)", 'string', 'SHA1' ]
, digits: [ false, "Number of digits, typically 6 (also 8)", 'integer', 6 ]
, generate: [ false, "Create a cryptographically-random TOTP key formatted in base32 with spaces.", 'boolean', true ]
, issuer: [ false, "Issuer, typically the company name (Google, Facebook, Digital Ocean, etc)", 'string', 'ACME' ]
, key: [ false, "Supply the base32 key yourself (with or without delimeters). Takes precedence over --generate", 'string' ]
, period: [ false, "Number of seconds between tokens, typically 30", 'integer', 30 ]
, qr: [ false, "Print the QR Code to the Terminal.", 'boolean', false ]
//, token: [ false, "Print the current token for the given (or generated) key.", 'boolean', false ]
, verify: [ false, "Verify a token. Must be used with --key.", 'string' ]
});
// ignore certonly and extraneous arguments
cli.main(function(_, options) {
var key = (options.key || authenticator.generateKey()).toString();
var token = (options.verify || authenticator.generateToken(key)).toString();
var url = authenticator.generateTotpUri(
key
, options.account || null
, options.issuer || null
, options.algo || 'SHA1'
, options.digits || 6
, options.perdiod || 30
);
console.log('');
console.log('Key:', key);
console.log('Token:', token);
console.log('URL:', url);
if (options.qr) {
console.log('');
qrcode.setErrorLevel('L'); // L: 7%, M: 15%, Q: 25%, H: 30%
qrcode.generate(url, function (qr) {
console.log(qr);
});
}
if (options.verify) {
console.log('');
console.log('Verified:', !!authenticator.verifyToken(key, token));
}
console.log('');
});

42
package.json Normal file
View File

@ -0,0 +1,42 @@
{
"name": "authenticator-cli",
"version": "1.0.0",
"description": "A commandline Authenticator App (for Authy, Google Authenticator, Microsoft Authenticator, TOTP / 2FA / MFA / OTP, etc)",
"main": "index.js",
"bin": {
"authenticator-cli": "authenticator.js"
},
"dependencies": {},
"devDependencies": {},
"scripts": {
"test": "node bin/authenticator.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Daplie/authenticator-cli.git"
},
"keywords": [
"Authenticator",
"CLI",
"Commandline",
"command",
"line",
"authy",
"google",
"microsoft",
"facebook",
"daplie",
"totp",
"2fa",
"mfa",
"otp",
"one-time",
"password"
],
"author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)",
"license": "MPL-2.0",
"bugs": {
"url": "https://github.com/Daplie/authenticator-cli/issues"
},
"homepage": "https://github.com/Daplie/authenticator-cli#readme"
}