{"id":16420690,"url":"https://github.com/whynothugo/totp-cli","last_synced_at":"2025-10-07T14:07:43.661Z","repository":{"id":27789093,"uuid":"77309942","full_name":"WhyNotHugo/totp-cli","owner":"WhyNotHugo","description":"A cli-based pass-backed TOTP app.","archived":false,"fork":false,"pushed_at":"2024-08-27T13:15:26.000Z","size":62,"stargazers_count":144,"open_issues_count":6,"forks_count":14,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-10-04T01:56:38.259Z","etag":null,"topics":["2fa","authentication","cli","command-line","otp","pass","python","rfc6238","security","token","totp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WhyNotHugo.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2016-12-25T04:13:03.000Z","updated_at":"2025-09-26T13:44:20.000Z","dependencies_parsed_at":"2024-01-14T16:09:15.019Z","dependency_job_id":"ea7dd5cb-ff4f-4012-83ec-e00dcbf709f9","html_url":"https://github.com/WhyNotHugo/totp-cli","commit_stats":{"total_commits":50,"total_committers":11,"mean_commits":4.545454545454546,"dds":0.6,"last_synced_commit":"e618ce47073e64833abe3fc316e7e37ef50e47bc"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/WhyNotHugo/totp-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhyNotHugo%2Ftotp-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhyNotHugo%2Ftotp-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhyNotHugo%2Ftotp-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhyNotHugo%2Ftotp-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WhyNotHugo","download_url":"https://codeload.github.com/WhyNotHugo/totp-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhyNotHugo%2Ftotp-cli/sbom","scorecard":{"id":151076,"data":{"date":"2025-08-11","repo":{"name":"github.com/WhyNotHugo/totp-cli","commit":"32c2a2408e1a9160fa3ba4666dcb73e79f337913"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 7/12 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENCE:0","Info: FSF or OSI recognized license: ISC License: LICENCE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.3.0 not signed: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/24389604","Warn: release artifact v1.2.1 not signed: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/21582796","Warn: release artifact v1.2.0 not signed: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/15258117","Warn: release artifact v1.1.2 not signed: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/13668942","Warn: release artifact v1.1.1 not signed: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/6519172","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/24389604","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/21582796","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/15258117","Warn: release artifact v1.1.2 does not have provenance: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/13668942","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/WhyNotHugo/totp-cli/releases/6519172"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T10:41:22.764Z","repository_id":27789093,"created_at":"2025-08-16T10:41:22.764Z","updated_at":"2025-08-16T10:41:22.764Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278786685,"owners_count":26045591,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["2fa","authentication","cli","command-line","otp","pass","python","rfc6238","security","token","totp"],"created_at":"2024-10-11T07:28:46.618Z","updated_at":"2025-10-07T14:07:43.628Z","avatar_url":"https://github.com/WhyNotHugo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"totp-cli\n========\n\n.. image:: https://img.shields.io/pypi/v/totp.svg\n  :target: https://pypi.python.org/pypi/totp\n  :alt: version on pypi\n\n.. image:: https://img.shields.io/pypi/l/totp.svg\n  :target: https://github.com/hobarrera/totp-cli/blob/master/LICENCE\n  :alt: licence\n\ntotp-cli is a simple command line application to generate OTP tokens for two\nfactor authentication using RFC6238_.\n\n.. _RFC6238: http://tools.ietf.org/html/rfc6238\n\nThese are compatible with many popular services such as Facebook, GitHub,\nGoogle, eve-online, battle.net, etc.\n\ntotp-cli fetches your shared key (aka: code) from pass_, generates the\ntoken, outputs it to stdout and copies it to your CLIPBOARD X selection.\nDefault X selection can be overridden with the PASSWORD_STORE_X_SELECTION\nenvironment variable.\n\nShared keys should be stored in your pass storage under ``2fa/SERVICE/code``,\nfor example ``2fa/github/code``. The ``-a`` flag (or alternatively the ``add``\nsubcommand) can be used to add this less painfully.\n\n.. _pass: http://www.passwordstore.org/\n\nUsage\n-----\n\nUsage::\n\n    totp SERVICE\n\nFor example::\n\n    $ totp github\n    621787\n\nYou don't need to run ``totp`` from the command line if you just want to paste\nthe code; you can run it from ``dmenu``, or whatever your application launcher\nis.\n\nTo offset the clock by a number of seconds::\n\n    totp -s SECONDS SERVICE\n\nFor example::\n\n    $ totp -s +60 github\n    735092\n    $ totp -s -90 github\n    909651\n\nTo add a service::\n\n    totp -a SERVICE\n    # OR\n    totp add SERVICE\n\nFor example::\n\n    $ totp -a github\n    Token length [6]: 6\n    Shared key: KEY\n\nNote that if the service already exists, it will be overwritten without\nwarning.\n\nTo output without copying to the clipboard:\n\n    $ totp -n SERVICE\n    # OR\n    $ totp --nocopy SERVICE\n\n\nAbout pass entries\n------------------\n\nPass entries are expected to have the TOTP secret in their first line (as\nprovided by the third party).\nThe amount of digits token must have (for example, battle.net uses 8), must be\nprovided in a separate line, with a format like:\n\n    Digits: 8\n\nFor the moment, only customizing the token length is possible.\n\nRequirements\n------------\n\n* `pass \u003chttp://www.passwordstore.org/\u003e`_\n* `python \u003e= 3.3 \u003chttps://www.python.org/\u003e`_\n\nThere are also some platform-specific requirements for copying code into the\nclipboard:\n\n* `xclip \u003chttp://sourceforge.net/projects/xclip\u003e`_ for Xorg (Linux/BSD).\n* `wl-clipboard \u003chttps://github.com/bugaevc/wl-clipboard\u003e`_ for Wayland (Linux/BSD).\n\nInstallation\n------------\n\nInstallation is quite simple:\n\n    $ pip install totp\n\nThere is also an `AUR package`_ available for ArchLinux users.\n\n.. _AUR package: https://aur.archlinux.org/packages/totp-cli/\n\nYou can also configure shell completion for totp-cli:\n\n* Bash: Download `totp-cli-completion.bash \u003ccontrib/totp-cli-completion.bash\u003e`_\n  and source it from your bash configuration file (e.g. ``.bash_profile``)\n\n* Zsh: Download `totp-cli-completion.zsh \u003ccontrib/totp-cli-completion.zsh\u003e`_ as\n  ``_totp`` to site-functions directory (e.g.\n  ``/usr/local/share/zsh/site-functions``)\n\nUsage with GitHub\n-----------------\n\nFor GitHub, you may find the requested shared key by logging into your\naccount, clicking on your profile photo to deploy a drop down menu, clicking\non the \"Settings\" option in the drop down menu, then, in the \"Access\" section\nof the sidebar, click on \"Password and Authentication\", then, in the\n\"Two-factor authentication\" section of the page, click on \"Enable two-factor\nauthentication\", and, instead of scanning the QR code, click on \"setup key\".\nThe shared key required by `totp` will then be displayed on the screen.\n\nLicense\n-------\n\ntotp-cli is distrbuted under the terms of the ISC licence. See LICENCE for\ndetails.\n\nCopyright (c) 2014-2017 Hugo Osvaldo Barrera \u003chugo@barrera.io\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhynothugo%2Ftotp-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhynothugo%2Ftotp-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhynothugo%2Ftotp-cli/lists"}