freakotp


Namefreakotp JSON
Version 3.0.4 PyPI version JSON
download
home_pagehttp://github.com/andreax79/FreakOTP
SummaryFreakOTP is a command line two-factor authentication application
upload_time2022-12-20 07:47:04
maintainer
docs_urlNone
authorAndrea Bonomi
requires_python>=3.6
licenseMIT
keywords cli otp two-factor totp hotp freeotp
VCS
bugtrack_url
requirements appdirs qrcode click pzp
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FreakOTP
FreakOTP is a command line two-factor authentication application. Tokens can be imported from FreeOTP.

[![Build Status](https://github.com/andreax79/freakotp/workflows/Tests/badge.svg)](https://github.com/andreax79/freakotp/actions)
[![PyPI version](https://badge.fury.io/py/freakotp.svg)](https://badge.fury.io/py/freakotp)
[![PyPI](https://img.shields.io/pypi/pyversions/freakotp.svg)](https://pypi.org/project/freakotp)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Known Vulnerabilities](https://snyk-widget.herokuapp.com/badge/pip/freakotp/badge.svg)](https://snyk.io/test/github/andreax79/freakotp)

Requirements
-----------
* Python 3.6+

Install
-------

```
pip install freakotp
```

Screencast
----------

[![asciicast](https://asciinema.org/a/1GMjswJnFTU66ffc8uj8Rc3Ex.svg)](https://asciinema.org/a/1GMjswJnFTU66ffc8uj8Rc3Ex)

## Usage

The commands included in `freakotp` are as follows:

```bash
$ frakotp --help
Usage: freakotp [OPTIONS] [COMMAND|[TOKENS]...] [ARGS]...

  FreakOTP is a command line two-factor authentication application.

Options:
  --version                       Show the version and exit.
  --db PATH                       Database path
  -v, --verbose                   Verbose output
  -c, --counter INTEGER           HOTP counter value
  -t, --time [%Y-%m-%dT%H:%M:%S]  TOTP timestamp
  --help                          Show this message and exit.

Commands:
  .add     Import a new token into the database
  .delete  Delete tokens
  .export  Export tokens
  .help    Show help and exit
  .import  Import tokens from backup
  .ls      Display token list
  .otp     Display OTPs
  .qrcode  Display token qrcodes
  .uri     Display token uri
```

All the commands start with a dot, e.g. `.add`, `.delete`, `.ls`.
To view the help of any of the commands, add `--help`, example:

```bash
$ freakotp .add --help
Usage: freakotp .add [OPTIONS]

  Import a new token into the database

  Example: freaktop .add

Options:
  --type [TOTP|HOTP|SECURID]      Token type
  -a, --algorithm [SHA1|SHA256|SHA512|MD5]
                                  Algorithm
  -c, --counter INTEGER           HOTP counter value
  -d, --digits INTEGER            Number of digits in one-time password
  -i, --issuer TEXT               Issuer
  -l, --label TEXT                Label
  -p, --period INTEGER            Time-step duration in seconds
  -s, --secret TEXT               Secret key Base32
  -u, --uri TEXT                  URI (otpauth://)
  --help                          Show this message and exit.
```

Then invoked without argument, `freakotp` will launch interactive gui.
You can generate OTP code from existing token, adding new token or delete existing one.

```
$ freakotp
ENTER Show OTP  ^C Exit  ^Q QR-Code  ^U URI  ^I Insert  ^X Delete
>  1: roof:toll
   2: mental:suggestion
   3: congress:originally
   4: inspired:petroleum
   5: design:meal
   6: contribute:loop
   7: official:care
   8: rapacious:vote
   9: tumble:discredit
  10: perch:safe
  11: array:depend
  12: firm:spoken
  13: advice:reduction
  14: adhere:fill
  15: indication:assistance
  16: pompous:security
  17: illuminate:hydroxyl
  18: spar:enrich
  19: patronage:characteristic
  20: built:atom
  20/20
>
```

Using the interactive gui:

- **UP** / **PG UP** / **DOWN** / **PG DOWN** to move cursor up and down
- **ENTER** to display OTP code of the selected token
- **CTRL-C** / **ESC** to exit
- **CTRL-Q** diplay the selected token QR Code
- **CTRL-U** export the selected token as URI
- **CTRL-I** add a new token
- **CTRL-X** delete the selected token

Without a command, `freakotp` generates the OTP codes for the matching tokens.

```
$ freakotp.py loop
074324
```

### freakotp .add

The `freakotp .add` command adds a new token to the databases.
The token can be added from an otpauth:// URI or individual fields.

```
$ freakotp.py .add                                                                                                                                                         2 ↵
Add token
URI (otpauth://):
Token type (TOTP, HOTP, SECURID) [TOTP]:
Algorithm (SHA1, SHA256, SHA512, MD5) [SHA1]:
Number of digits in one-time password [6]:
Issuer: example
Label: loop
Time-step duration in seconds [30]:
Secret key: JOXI2L47UKOFUKCMT33VEGBJZ4
Token added
$ freakotp .ls -l loop
  21 TOTP    SHA1    6  30 example:loop
```

### freakotp .otp

The `freakotp .otp` command generates the OTP codes for the matching tokens (by default all tokens).

```
$ freakotp .otp
181715 roof:toll
893942 mental:suggestion
159412 congress:originally
062913 inspired:petroleum
277466 design:meal
574172 contribute:loop
919814 official:care
834047 rapacious:vote
402014 tumble:discredit
942488 perch:safe
154642 array:depend
833406 firm:spoken
080836 advice:reduction
088928 adhere:fill
165262 indication:assistance
522675 pompous:security
561630 illuminate:hydroxyl
881838 spar:enrich
949880 patronage:characteristic
906287 built:atom
$ freakotp .otp -l at
873564     15 TOTP    SHA1    6  30 indication:assistance
561630     17 HOTP    SHA1    6  30 illuminate:hydroxyl
450645     19 TOTP    SHA1    6  30 patronage:characteristic
173862     20 TOTP    SHA1    6  30 built:atom
```

### freakotp .delete

The `freakotp .delete` command delete all matching tokens.

```
$ .delete array firm
Delete token
Do you want to remove array:depend ? [y/N]: n
Do you want to remove firm:spoken ? [y/N]: y
Token deleted
```

### freakotp .export

The `freakotp .export` command generates a tokens backup in FreakOTP/FreeOTP format.

```
$ freakotp .export --filename freakotp.json
12 tokens exported
```

### freakotp .import

The `freakotp .import` command import the tokens from a FreakOTP/FreeOTP backup.
The `--delete-existing-data` options delete all the existing token before importing the backup.

```
$ freakotp .import --filename freakotp.json --delete-existing-data
7 tokens imported
```

### freakotp .ls

The `freakotp .ls` command lists the tokens.
The `--long` options enable the long listing format (token id, type (TOTP/HOTP), algorithm, digits, period, name).

```
$ freakotp .ls --long
   1 HOTP    SHA1    6  30 roof:toll
   2 TOTP    SHA1    6  30 mental:suggestion
   3 TOTP    SHA1    6  30 congress:originally
   4 TOTP    SHA1    6  30 inspired:petroleum
   5 HOTP    SHA1    6  30 design:meal
   6 TOTP    SHA1    6  30 contribute:loop
   7 TOTP    SHA1    6  30 official:care
   8 TOTP    SHA1    6  30 rapacious:vote
   9 HOTP    SHA1    6  30 tumble:discredit
  10 TOTP    SHA1    6  30 perch:safe
  11 TOTP    SHA1    6  30 array:depend
  12 TOTP    SHA1    6  30 firm:spoken
  13 HOTP    SHA1    6  30 advice:reduction
  14 TOTP    SHA1    6  30 adhere:fill
  15 TOTP    SHA1    6  30 indication:assistance
  16 TOTP    SHA1    6  30 pompous:security
  17 HOTP    SHA1    6  30 illuminate:hydroxyl
  18 TOTP    SHA1    6  30 spar:enrich
  19 TOTP    SHA1    6  30 patronage:characteristic
  20 TOTP    SHA1    6  30 built:atom
```

### freakotp .qrcode

The `freakotp .qrcode` command displ use a long listing formatays the QR Codes of the matching tokens.

```
$ freakotp .qrcode atom
built:atom
    █▀▀▀▀▀█ █▄▄▄▀█▀ ▄▀█▀   ▄▀▄▄ ▄▀▀▀▀ █▀▀▀▀▀█
    █ ███ █ ▄▄█▄▄▄▄  ▀ █▄▄▀ ▀▀▄  ▀▀▀█ █ ███ █
    █ ▀▀▀ █  ███▄▀█ █▄▄█ ▀  █▄ ▀ ▄▄██ █ ▀▀▀ █
    ▀▀▀▀▀▀▀ █▄█ ▀ ▀▄▀▄█▄▀ ▀▄▀ █ ▀▄█ ▀ ▀▀▀▀▀▀▀
    ▀▄▀█ █▀▀▄█▀█   ▀▄▀██▄█▄█    ▄█▄▄  █ ▄█▄▀█
    ▀▀▄▀ █▀█▄▄▀█▀ ▀▄ ▀ ▄█ █▀▀█   ▀█ ▀▄  ▀▀ ▄▀
    ▀▀▄███▀▀▄██ █▄▄▄ ▀  █ █▀▀▀██▄▄▄▀██▀  █▀ █
    ██▀▄ ▀▀█▄▀█▀██ █▄▄ ▀▀ ▄ █▀▄█▄▀ ▄ ▀▀ ██ ▀▀
     ▀▄█ ▄▀██     █▀  ▄ ▄█▄▀ █ ██ █ ██ ▄▀ ▄ ▀
    ▄▄▄▀█▄▀▄▄█▄▀▀  █▄▄█▀▄▄▀██▀ ▀▄  ▄██▀█▀██▄
    █▀█▄██▀█▀▀██▀▄▄▄█▄ █ ▄ █ ██  █▄█▄▀█▀ ▀▀▄█
    █▄██▄▄▀▀▀  ▄▄  ▄▀▀█ █ ████▄ █ █▄▀ ▄▀▄▀▀█
    ▀▀ ▄█▄▀▄▄ ▄█▄▄ ▄▄██▄▀ ▄ █▀████▄██▀▄█ █▄▀
    █ █▀▀ ▀▀█▀▄▀ ▄▄   ▀▀▀██ ▀▀▀ ▄▀ ▀ █▀█ █ ▄█
    ▀█▀▀▀█▀▄▄▀  ▀▄ ▄▄ █▄█▀ ███ ▀ ▀▀▀█▄█▄▀▀  ▀
    ▀  █ █▀█▀ ▄█▀▀▀ █ ██  ▀▀█  ▀▀█▀ ▀  ▀▄██ ▄
     ▀▀ ▀ ▀ ▄▀ ▄ █ ▀ ▄▄ ██▀▄▄▄▄ ▄▀█▄█▀▀▀██▀▄█
    █▀▀▀▀▀█ ██ █ ▀▄▄█▄▀█▀   █ ▀ ▀▄▀▀█ ▀ █▄▀█
    █ ███ █ ▄▄▀    ▀▄▄ ███▄▀█▀▄▀▄██ ▀█▀████ ▀
    █ ▀▀▀ █ ▀█ █ ███▄▀█▀██▀ █  ▄▀ █ ▄  ▀▄███▀
    ▀▀▀▀▀▀▀ ▀▀       ▀ ▀▀▀▀ ▀▀ ▀  ▀▀▀  ▀  ▀▀
````


### freakotp .uri

The `freakotp .uri` command exports the matching tokens as URI.

```
$ freakotp .uri atom
otpauth://totp/built:atom?algorithm=SHA1&digits=6&period=30&secret=72UU5WIYEN2YQKZABWVNWI6P7E%3D%3D%3D%3D%3D%3D
```

Environment Variables
---------------------

By default `freakotp` stores your tokens inside a `$HOME/.config/FreakOTP/freakotp.db`
directory on Linux or macOS, or inside your user profile folder on Windows.

To alter this, you can use the `FREAKOTP_DB` environment variable to use a different
path for storing your tokens.

```bash
export FREAKOTP_DB=~/Private/FreakOTP/freakotp.db
```

Licence
-------
MIT

Links
-----

* [FreeOTP](https://github.com/freeotp)
* [pzp](https://github.com/andreax79/pzp)
* [Pure python QR Code generator](https://github.com/lincolnloop/python-qrcode)
* [Black, The Uncompromising Code Formatter](https://github.com/psf/black)

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/andreax79/FreakOTP",
    "name": "freakotp",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "cli,otp,two-factor,totp,hotp,freeotp",
    "author": "Andrea Bonomi",
    "author_email": "andrea.bonomi@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/93/43/f450352db88e87de965dffbed1252985b9145d7850e4bf04ceb638412cd0/freakotp-3.0.4.tar.gz",
    "platform": "any",
    "description": "# FreakOTP\nFreakOTP is a command line two-factor authentication application. Tokens can be imported from FreeOTP.\n\n[![Build Status](https://github.com/andreax79/freakotp/workflows/Tests/badge.svg)](https://github.com/andreax79/freakotp/actions)\n[![PyPI version](https://badge.fury.io/py/freakotp.svg)](https://badge.fury.io/py/freakotp)\n[![PyPI](https://img.shields.io/pypi/pyversions/freakotp.svg)](https://pypi.org/project/freakotp)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Known Vulnerabilities](https://snyk-widget.herokuapp.com/badge/pip/freakotp/badge.svg)](https://snyk.io/test/github/andreax79/freakotp)\n\nRequirements\n-----------\n* Python 3.6+\n\nInstall\n-------\n\n```\npip install freakotp\n```\n\nScreencast\n----------\n\n[![asciicast](https://asciinema.org/a/1GMjswJnFTU66ffc8uj8Rc3Ex.svg)](https://asciinema.org/a/1GMjswJnFTU66ffc8uj8Rc3Ex)\n\n## Usage\n\nThe commands included in `freakotp` are as follows:\n\n```bash\n$ frakotp --help\nUsage: freakotp [OPTIONS] [COMMAND|[TOKENS]...] [ARGS]...\n\n  FreakOTP is a command line two-factor authentication application.\n\nOptions:\n  --version                       Show the version and exit.\n  --db PATH                       Database path\n  -v, --verbose                   Verbose output\n  -c, --counter INTEGER           HOTP counter value\n  -t, --time [%Y-%m-%dT%H:%M:%S]  TOTP timestamp\n  --help                          Show this message and exit.\n\nCommands:\n  .add     Import a new token into the database\n  .delete  Delete tokens\n  .export  Export tokens\n  .help    Show help and exit\n  .import  Import tokens from backup\n  .ls      Display token list\n  .otp     Display OTPs\n  .qrcode  Display token qrcodes\n  .uri     Display token uri\n```\n\nAll the commands start with a dot, e.g. `.add`, `.delete`, `.ls`.\nTo view the help of any of the commands, add `--help`, example:\n\n```bash\n$ freakotp .add --help\nUsage: freakotp .add [OPTIONS]\n\n  Import a new token into the database\n\n  Example: freaktop .add\n\nOptions:\n  --type [TOTP|HOTP|SECURID]      Token type\n  -a, --algorithm [SHA1|SHA256|SHA512|MD5]\n                                  Algorithm\n  -c, --counter INTEGER           HOTP counter value\n  -d, --digits INTEGER            Number of digits in one-time password\n  -i, --issuer TEXT               Issuer\n  -l, --label TEXT                Label\n  -p, --period INTEGER            Time-step duration in seconds\n  -s, --secret TEXT               Secret key Base32\n  -u, --uri TEXT                  URI (otpauth://)\n  --help                          Show this message and exit.\n```\n\nThen invoked without argument, `freakotp` will launch interactive gui.\nYou can generate OTP code from existing token, adding new token or delete existing one.\n\n```\n$ freakotp\nENTER Show OTP  ^C Exit  ^Q QR-Code  ^U URI  ^I Insert  ^X Delete\n>  1: roof:toll\n   2: mental:suggestion\n   3: congress:originally\n   4: inspired:petroleum\n   5: design:meal\n   6: contribute:loop\n   7: official:care\n   8: rapacious:vote\n   9: tumble:discredit\n  10: perch:safe\n  11: array:depend\n  12: firm:spoken\n  13: advice:reduction\n  14: adhere:fill\n  15: indication:assistance\n  16: pompous:security\n  17: illuminate:hydroxyl\n  18: spar:enrich\n  19: patronage:characteristic\n  20: built:atom\n  20/20\n>\n```\n\nUsing the interactive gui:\n\n- **UP** / **PG UP** / **DOWN** / **PG DOWN** to move cursor up and down\n- **ENTER** to display OTP code of the selected token\n- **CTRL-C** / **ESC** to exit\n- **CTRL-Q** diplay the selected token QR Code\n- **CTRL-U** export the selected token as URI\n- **CTRL-I** add a new token\n- **CTRL-X** delete the selected token\n\nWithout a command, `freakotp` generates the OTP codes for the matching tokens.\n\n```\n$ freakotp.py loop\n074324\n```\n\n### freakotp .add\n\nThe `freakotp .add` command adds a new token to the databases.\nThe token can be added from an otpauth:// URI or individual fields.\n\n```\n$ freakotp.py .add                                                                                                                                                         2 \u21b5\nAdd token\nURI (otpauth://):\nToken type (TOTP, HOTP, SECURID) [TOTP]:\nAlgorithm (SHA1, SHA256, SHA512, MD5) [SHA1]:\nNumber of digits in one-time password [6]:\nIssuer: example\nLabel: loop\nTime-step duration in seconds [30]:\nSecret key: JOXI2L47UKOFUKCMT33VEGBJZ4\nToken added\n$ freakotp .ls -l loop\n  21 TOTP    SHA1    6  30 example:loop\n```\n\n### freakotp .otp\n\nThe `freakotp .otp` command generates the OTP codes for the matching tokens (by default all tokens).\n\n```\n$ freakotp .otp\n181715 roof:toll\n893942 mental:suggestion\n159412 congress:originally\n062913 inspired:petroleum\n277466 design:meal\n574172 contribute:loop\n919814 official:care\n834047 rapacious:vote\n402014 tumble:discredit\n942488 perch:safe\n154642 array:depend\n833406 firm:spoken\n080836 advice:reduction\n088928 adhere:fill\n165262 indication:assistance\n522675 pompous:security\n561630 illuminate:hydroxyl\n881838 spar:enrich\n949880 patronage:characteristic\n906287 built:atom\n$ freakotp .otp -l at\n873564     15 TOTP    SHA1    6  30 indication:assistance\n561630     17 HOTP    SHA1    6  30 illuminate:hydroxyl\n450645     19 TOTP    SHA1    6  30 patronage:characteristic\n173862     20 TOTP    SHA1    6  30 built:atom\n```\n\n### freakotp .delete\n\nThe `freakotp .delete` command delete all matching tokens.\n\n```\n$ .delete array firm\nDelete token\nDo you want to remove array:depend ? [y/N]: n\nDo you want to remove firm:spoken ? [y/N]: y\nToken deleted\n```\n\n### freakotp .export\n\nThe `freakotp .export` command generates a tokens backup in FreakOTP/FreeOTP format.\n\n```\n$ freakotp .export --filename freakotp.json\n12 tokens exported\n```\n\n### freakotp .import\n\nThe `freakotp .import` command import the tokens from a FreakOTP/FreeOTP backup.\nThe `--delete-existing-data` options delete all the existing token before importing the backup.\n\n```\n$ freakotp .import --filename freakotp.json --delete-existing-data\n7 tokens imported\n```\n\n### freakotp .ls\n\nThe `freakotp .ls` command lists the tokens.\nThe `--long` options enable the long listing format (token id, type (TOTP/HOTP), algorithm, digits, period, name).\n\n```\n$ freakotp .ls --long\n   1 HOTP    SHA1    6  30 roof:toll\n   2 TOTP    SHA1    6  30 mental:suggestion\n   3 TOTP    SHA1    6  30 congress:originally\n   4 TOTP    SHA1    6  30 inspired:petroleum\n   5 HOTP    SHA1    6  30 design:meal\n   6 TOTP    SHA1    6  30 contribute:loop\n   7 TOTP    SHA1    6  30 official:care\n   8 TOTP    SHA1    6  30 rapacious:vote\n   9 HOTP    SHA1    6  30 tumble:discredit\n  10 TOTP    SHA1    6  30 perch:safe\n  11 TOTP    SHA1    6  30 array:depend\n  12 TOTP    SHA1    6  30 firm:spoken\n  13 HOTP    SHA1    6  30 advice:reduction\n  14 TOTP    SHA1    6  30 adhere:fill\n  15 TOTP    SHA1    6  30 indication:assistance\n  16 TOTP    SHA1    6  30 pompous:security\n  17 HOTP    SHA1    6  30 illuminate:hydroxyl\n  18 TOTP    SHA1    6  30 spar:enrich\n  19 TOTP    SHA1    6  30 patronage:characteristic\n  20 TOTP    SHA1    6  30 built:atom\n```\n\n### freakotp .qrcode\n\nThe `freakotp .qrcode` command displ use a long listing formatays the QR Codes of the matching tokens.\n\n```\n$ freakotp .qrcode atom\nbuilt:atom\n\u00a0\u00a0\u00a0\u00a0\u2588\u2580\u2580\u2580\u2580\u2580\u2588\u00a0\u2588\u2584\u2584\u2584\u2580\u2588\u2580\u00a0\u2584\u2580\u2588\u2580\u00a0\u00a0\u00a0\u2584\u2580\u2584\u2584\u00a0\u2584\u2580\u2580\u2580\u2580\u00a0\u2588\u2580\u2580\u2580\u2580\u2580\u2588\n\u00a0\u00a0\u00a0\u00a0\u2588\u00a0\u2588\u2588\u2588\u00a0\u2588\u00a0\u2584\u2584\u2588\u2584\u2584\u2584\u2584\u00a0\u00a0\u2580\u00a0\u2588\u2584\u2584\u2580\u00a0\u2580\u2580\u2584\u00a0\u00a0\u2580\u2580\u2580\u2588\u00a0\u2588\u00a0\u2588\u2588\u2588\u00a0\u2588\n\u00a0\u00a0\u00a0\u00a0\u2588\u00a0\u2580\u2580\u2580\u00a0\u2588\u00a0\u00a0\u2588\u2588\u2588\u2584\u2580\u2588\u00a0\u2588\u2584\u2584\u2588\u00a0\u2580\u00a0\u00a0\u2588\u2584\u00a0\u2580\u00a0\u2584\u2584\u2588\u2588\u00a0\u2588\u00a0\u2580\u2580\u2580\u00a0\u2588\n\u00a0\u00a0\u00a0\u00a0\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u00a0\u2588\u2584\u2588\u00a0\u2580\u00a0\u2580\u2584\u2580\u2584\u2588\u2584\u2580\u00a0\u2580\u2584\u2580\u00a0\u2588\u00a0\u2580\u2584\u2588\u00a0\u2580\u00a0\u2580\u2580\u2580\u2580\u2580\u2580\u2580\n\u00a0\u00a0\u00a0\u00a0\u2580\u2584\u2580\u2588\u00a0\u2588\u2580\u2580\u2584\u2588\u2580\u2588\u00a0\u00a0\u00a0\u2580\u2584\u2580\u2588\u2588\u2584\u2588\u2584\u2588\u00a0\u00a0\u00a0\u00a0\u2584\u2588\u2584\u2584\u00a0\u00a0\u2588\u00a0\u2584\u2588\u2584\u2580\u2588\n\u00a0\u00a0\u00a0\u00a0\u2580\u2580\u2584\u2580\u00a0\u2588\u2580\u2588\u2584\u2584\u2580\u2588\u2580\u00a0\u2580\u2584\u00a0\u2580\u00a0\u2584\u2588\u00a0\u2588\u2580\u2580\u2588\u00a0\u00a0\u00a0\u2580\u2588\u00a0\u2580\u2584\u00a0\u00a0\u2580\u2580\u00a0\u2584\u2580\n\u00a0\u00a0\u00a0\u00a0\u2580\u2580\u2584\u2588\u2588\u2588\u2580\u2580\u2584\u2588\u2588\u00a0\u2588\u2584\u2584\u2584\u00a0\u2580\u00a0\u00a0\u2588\u00a0\u2588\u2580\u2580\u2580\u2588\u2588\u2584\u2584\u2584\u2580\u2588\u2588\u2580\u00a0\u00a0\u2588\u2580\u00a0\u2588\n\u00a0\u00a0\u00a0\u00a0\u2588\u2588\u2580\u2584\u00a0\u2580\u2580\u2588\u2584\u2580\u2588\u2580\u2588\u2588\u00a0\u2588\u2584\u2584\u00a0\u2580\u2580\u00a0\u2584\u00a0\u2588\u2580\u2584\u2588\u2584\u2580\u00a0\u2584\u00a0\u2580\u2580\u00a0\u2588\u2588\u00a0\u2580\u2580\n\u00a0\u00a0\u00a0\u00a0\u00a0\u2580\u2584\u2588\u00a0\u2584\u2580\u2588\u2588\u00a0\u00a0\u00a0\u00a0\u00a0\u2588\u2580\u00a0\u00a0\u2584\u00a0\u2584\u2588\u2584\u2580\u00a0\u2588\u00a0\u2588\u2588\u00a0\u2588\u00a0\u2588\u2588\u00a0\u2584\u2580\u00a0\u2584\u00a0\u2580\n\u00a0\u00a0\u00a0\u00a0\u2584\u2584\u2584\u2580\u2588\u2584\u2580\u2584\u2584\u2588\u2584\u2580\u2580\u00a0\u00a0\u2588\u2584\u2584\u2588\u2580\u2584\u2584\u2580\u2588\u2588\u2580\u00a0\u2580\u2584\u00a0\u00a0\u2584\u2588\u2588\u2580\u2588\u2580\u2588\u2588\u2584\n\u00a0\u00a0\u00a0\u00a0\u2588\u2580\u2588\u2584\u2588\u2588\u2580\u2588\u2580\u2580\u2588\u2588\u2580\u2584\u2584\u2584\u2588\u2584\u00a0\u2588\u00a0\u2584\u00a0\u2588\u00a0\u2588\u2588\u00a0\u00a0\u2588\u2584\u2588\u2584\u2580\u2588\u2580\u00a0\u2580\u2580\u2584\u2588\n\u00a0\u00a0\u00a0\u00a0\u2588\u2584\u2588\u2588\u2584\u2584\u2580\u2580\u2580\u00a0\u00a0\u2584\u2584\u00a0\u00a0\u2584\u2580\u2580\u2588\u00a0\u2588\u00a0\u2588\u2588\u2588\u2588\u2584\u00a0\u2588\u00a0\u2588\u2584\u2580\u00a0\u2584\u2580\u2584\u2580\u2580\u2588\n\u00a0\u00a0\u00a0\u00a0\u2580\u2580\u00a0\u2584\u2588\u2584\u2580\u2584\u2584\u00a0\u2584\u2588\u2584\u2584\u00a0\u2584\u2584\u2588\u2588\u2584\u2580\u00a0\u2584\u00a0\u2588\u2580\u2588\u2588\u2588\u2588\u2584\u2588\u2588\u2580\u2584\u2588\u00a0\u2588\u2584\u2580\n\u00a0\u00a0\u00a0\u00a0\u2588\u00a0\u2588\u2580\u2580\u00a0\u2580\u2580\u2588\u2580\u2584\u2580\u00a0\u2584\u2584\u00a0\u00a0\u00a0\u2580\u2580\u2580\u2588\u2588\u00a0\u2580\u2580\u2580\u00a0\u2584\u2580\u00a0\u2580\u00a0\u2588\u2580\u2588\u00a0\u2588\u00a0\u2584\u2588\n\u00a0\u00a0\u00a0\u00a0\u2580\u2588\u2580\u2580\u2580\u2588\u2580\u2584\u2584\u2580\u00a0\u00a0\u2580\u2584\u00a0\u2584\u2584\u00a0\u2588\u2584\u2588\u2580\u00a0\u2588\u2588\u2588\u00a0\u2580\u00a0\u2580\u2580\u2580\u2588\u2584\u2588\u2584\u2580\u2580\u00a0\u00a0\u2580\n\u00a0\u00a0\u00a0\u00a0\u2580\u00a0\u00a0\u2588\u00a0\u2588\u2580\u2588\u2580\u00a0\u2584\u2588\u2580\u2580\u2580\u00a0\u2588\u00a0\u2588\u2588\u00a0\u00a0\u2580\u2580\u2588\u00a0\u00a0\u2580\u2580\u2588\u2580\u00a0\u2580\u00a0\u00a0\u2580\u2584\u2588\u2588\u00a0\u2584\n\u00a0\u00a0\u00a0\u00a0\u00a0\u2580\u2580\u00a0\u2580\u00a0\u2580\u00a0\u2584\u2580\u00a0\u2584\u00a0\u2588\u00a0\u2580\u00a0\u2584\u2584\u00a0\u2588\u2588\u2580\u2584\u2584\u2584\u2584\u00a0\u2584\u2580\u2588\u2584\u2588\u2580\u2580\u2580\u2588\u2588\u2580\u2584\u2588\n\u00a0\u00a0\u00a0\u00a0\u2588\u2580\u2580\u2580\u2580\u2580\u2588\u00a0\u2588\u2588\u00a0\u2588\u00a0\u2580\u2584\u2584\u2588\u2584\u2580\u2588\u2580\u00a0\u00a0\u00a0\u2588\u00a0\u2580\u00a0\u2580\u2584\u2580\u2580\u2588\u00a0\u2580\u00a0\u2588\u2584\u2580\u2588\n\u00a0\u00a0\u00a0\u00a0\u2588\u00a0\u2588\u2588\u2588\u00a0\u2588\u00a0\u2584\u2584\u2580\u00a0\u00a0\u00a0\u00a0\u2580\u2584\u2584\u00a0\u2588\u2588\u2588\u2584\u2580\u2588\u2580\u2584\u2580\u2584\u2588\u2588\u00a0\u2580\u2588\u2580\u2588\u2588\u2588\u2588\u00a0\u2580\n\u00a0\u00a0\u00a0\u00a0\u2588\u00a0\u2580\u2580\u2580\u00a0\u2588\u00a0\u2580\u2588\u00a0\u2588\u00a0\u2588\u2588\u2588\u2584\u2580\u2588\u2580\u2588\u2588\u2580\u00a0\u2588\u00a0\u00a0\u2584\u2580\u00a0\u2588\u00a0\u2584\u00a0\u00a0\u2580\u2584\u2588\u2588\u2588\u2580\n\u00a0\u00a0\u00a0\u00a0\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u00a0\u2580\u2580\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u2580\u00a0\u2580\u2580\u2580\u2580\u00a0\u2580\u2580\u00a0\u2580\u00a0\u00a0\u2580\u2580\u2580\u00a0\u00a0\u2580\u00a0\u00a0\u2580\u2580\n````\n\n\n### freakotp .uri\n\nThe `freakotp .uri` command exports the matching tokens as URI.\n\n```\n$ freakotp .uri atom\notpauth://totp/built:atom?algorithm=SHA1&digits=6&period=30&secret=72UU5WIYEN2YQKZABWVNWI6P7E%3D%3D%3D%3D%3D%3D\n```\n\nEnvironment Variables\n---------------------\n\nBy default `freakotp` stores your tokens inside a `$HOME/.config/FreakOTP/freakotp.db`\ndirectory on Linux or macOS, or inside your user profile folder on Windows.\n\nTo alter this, you can use the `FREAKOTP_DB` environment variable to use a different\npath for storing your tokens.\n\n```bash\nexport FREAKOTP_DB=~/Private/FreakOTP/freakotp.db\n```\n\nLicence\n-------\nMIT\n\nLinks\n-----\n\n* [FreeOTP](https://github.com/freeotp)\n* [pzp](https://github.com/andreax79/pzp)\n* [Pure python QR Code generator](https://github.com/lincolnloop/python-qrcode)\n* [Black, The Uncompromising Code Formatter](https://github.com/psf/black)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "FreakOTP is a command line two-factor authentication application",
    "version": "3.0.4",
    "split_keywords": [
        "cli",
        "otp",
        "two-factor",
        "totp",
        "hotp",
        "freeotp"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "1bebd4442bc86af57a4ee25f1517288d",
                "sha256": "33db463a555f9866b4806c37e500eb77143c6bc356c5d352d5d618f15e3f4f36"
            },
            "downloads": -1,
            "filename": "freakotp-3.0.4-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1bebd4442bc86af57a4ee25f1517288d",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.6",
            "size": 17682,
            "upload_time": "2022-12-20T07:47:02",
            "upload_time_iso_8601": "2022-12-20T07:47:02.985323Z",
            "url": "https://files.pythonhosted.org/packages/2b/2f/cc3d569c231c71b60b68b4e0317abe704feeca7a7d6d5420ac0a62d59e9f/freakotp-3.0.4-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d541696335aec27cf659a72c94e1a4a6",
                "sha256": "a673047a1208ba71df08f48d9939db25c00a8518283eec887dbed99207f2d0d9"
            },
            "downloads": -1,
            "filename": "freakotp-3.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "d541696335aec27cf659a72c94e1a4a6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 17487,
            "upload_time": "2022-12-20T07:47:04",
            "upload_time_iso_8601": "2022-12-20T07:47:04.252357Z",
            "url": "https://files.pythonhosted.org/packages/93/43/f450352db88e87de965dffbed1252985b9145d7850e4bf04ceb638412cd0/freakotp-3.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-12-20 07:47:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "andreax79",
    "github_project": "FreakOTP",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "appdirs",
            "specs": []
        },
        {
            "name": "qrcode",
            "specs": []
        },
        {
            "name": "click",
            "specs": []
        },
        {
            "name": "pzp",
            "specs": []
        }
    ],
    "lcname": "freakotp"
}
        
Elapsed time: 0.01908s