{"id":19607560,"url":"https://github.com/andreax79/freakotp","last_synced_at":"2025-04-27T20:32:26.500Z","repository":{"id":45354320,"uuid":"173371413","full_name":"andreax79/FreakOTP","owner":"andreax79","description":"FreakOTP✨🔑🎃 is a command line two-factor authentication application. ","archived":false,"fork":false,"pushed_at":"2023-12-04T20:18:00.000Z","size":125,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-04-05T02:02:07.323Z","etag":null,"topics":["cli","otp","totp","two-factor"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreax79.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-03-01T21:38:48.000Z","updated_at":"2024-04-14T21:22:09.717Z","dependencies_parsed_at":"2024-04-14T21:21:59.065Z","dependency_job_id":null,"html_url":"https://github.com/andreax79/FreakOTP","commit_stats":{"total_commits":28,"total_committers":3,"mean_commits":9.333333333333334,"dds":0.1785714285714286,"last_synced_commit":"7629f384cc3d712bcf133d6d0ffcc34e073b8586"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreax79%2FFreakOTP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreax79%2FFreakOTP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreax79%2FFreakOTP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreax79%2FFreakOTP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreax79","download_url":"https://codeload.github.com/andreax79/FreakOTP/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251204548,"owners_count":21552239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","otp","totp","two-factor"],"created_at":"2024-11-11T10:11:21.604Z","updated_at":"2025-04-27T20:32:26.453Z","avatar_url":"https://github.com/andreax79.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 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  --config PATH                   Configuration 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  --copy / --no-copy              Copy the code into the clipboard.\n  --all / --no-all                Show all codes.\n  --help                          Show this message and exit.\n\nCommands:\n  .add       Import a new token into the database\n  .delete    Delete tokens\n  .edit      Edit 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  .settings  Edit FreakOTP settings\n  .show      Show tokens\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  ^S Settings  ^Q QR-Code  ^U URI  ^I Insert  ^O Edit  ^X Delete\n\u003e  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\u003e\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-S** change the settings\n- **CTRL-Q** display the selected token QR Code\n- **CTRL-U** export the selected token as URI\n- **CTRL-I** add a new token\n- **CTRL-O** edit the selected token\n- **CTRL-X** delete the selected token\n\nWithout a command, `freakotp` generates the OTP codes for the matching tokens and\ncopies the first code into the clipboard.\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 ↵\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 .edit\n\nThe `freakotp .edit` command edit all matching tokens.\n\n```\n$ .edit mental:suggestion\nEdit token mental:suggestion\nSecret [KESEPY2AIMAAE23OKRKZJIDFNA======]:\nIssuer [mental]:\nLabel [suggestion]:\nToken type: TOTP\nAlgorithm: SHA1\nNumber of digits in one-time password [6]:\nTime-step duration in seconds [30]:\nToken updated\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    █▀▀▀▀▀█ █▄▄▄▀█▀ ▄▀█▀   ▄▀▄▄ ▄▀▀▀▀ █▀▀▀▀▀█\n    █ ███ █ ▄▄█▄▄▄▄  ▀ █▄▄▀ ▀▀▄  ▀▀▀█ █ ███ █\n    █ ▀▀▀ █  ███▄▀█ █▄▄█ ▀  █▄ ▀ ▄▄██ █ ▀▀▀ █\n    ▀▀▀▀▀▀▀ █▄█ ▀ ▀▄▀▄█▄▀ ▀▄▀ █ ▀▄█ ▀ ▀▀▀▀▀▀▀\n    ▀▄▀█ █▀▀▄█▀█   ▀▄▀██▄█▄█    ▄█▄▄  █ ▄█▄▀█\n    ▀▀▄▀ █▀█▄▄▀█▀ ▀▄ ▀ ▄█ █▀▀█   ▀█ ▀▄  ▀▀ ▄▀\n    ▀▀▄███▀▀▄██ █▄▄▄ ▀  █ █▀▀▀██▄▄▄▀██▀  █▀ █\n    ██▀▄ ▀▀█▄▀█▀██ █▄▄ ▀▀ ▄ █▀▄█▄▀ ▄ ▀▀ ██ ▀▀\n     ▀▄█ ▄▀██     █▀  ▄ ▄█▄▀ █ ██ █ ██ ▄▀ ▄ ▀\n    ▄▄▄▀█▄▀▄▄█▄▀▀  █▄▄█▀▄▄▀██▀ ▀▄  ▄██▀█▀██▄\n    █▀█▄██▀█▀▀██▀▄▄▄█▄ █ ▄ █ ██  █▄█▄▀█▀ ▀▀▄█\n    █▄██▄▄▀▀▀  ▄▄  ▄▀▀█ █ ████▄ █ █▄▀ ▄▀▄▀▀█\n    ▀▀ ▄█▄▀▄▄ ▄█▄▄ ▄▄██▄▀ ▄ █▀████▄██▀▄█ █▄▀\n    █ █▀▀ ▀▀█▀▄▀ ▄▄   ▀▀▀██ ▀▀▀ ▄▀ ▀ █▀█ █ ▄█\n    ▀█▀▀▀█▀▄▄▀  ▀▄ ▄▄ █▄█▀ ███ ▀ ▀▀▀█▄█▄▀▀  ▀\n    ▀  █ █▀█▀ ▄█▀▀▀ █ ██  ▀▀█  ▀▀█▀ ▀  ▀▄██ ▄\n     ▀▀ ▀ ▀ ▄▀ ▄ █ ▀ ▄▄ ██▀▄▄▄▄ ▄▀█▄█▀▀▀██▀▄█\n    █▀▀▀▀▀█ ██ █ ▀▄▄█▄▀█▀   █ ▀ ▀▄▀▀█ ▀ █▄▀█\n    █ ███ █ ▄▄▀    ▀▄▄ ███▄▀█▀▄▀▄██ ▀█▀████ ▀\n    █ ▀▀▀ █ ▀█ █ ███▄▀█▀██▀ █  ▄▀ █ ▄  ▀▄███▀\n    ▀▀▀▀▀▀▀ ▀▀       ▀ ▀▀▀▀ ▀▀ ▀  ▀▀▀  ▀  ▀▀\n````\n\n### freakotp .settings\n\nThe `freakotp .settings` command allows you to change the settings of FreakOTP.\n\n```\n$ freakotp .settings\nSettings\nCopy OTPs to clipboard: yes\nShow all OTPs: yes\nShow OTP expiration time: yes\nExpiration spinner style:\n  No spinner\n\u003e ◯◔◒◕●\n   ▁▂▃▄▅▆▇█\n   ▏▎▍▌▋▊▉\n  4/4\n\u003e\n```\n\n### freakotp .show\n\nThe `freakotp .show` command shows the matching tokens.\n\n```\n$ freakotp .show official:care\nType:      TOTP\nAlgorithm: SHA1\nCounter:   None\nDigits:    6\nIssuer:    official\nLabel:     care\nPeriod:    30\nSecret:    WCAOTV2KDQIPZK3KIJB5GNSW3Y======\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\u0026digits=6\u0026period=30\u0026secret=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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreax79%2Ffreakotp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreax79%2Ffreakotp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreax79%2Ffreakotp/lists"}