# Master
[![Deploy pages](https://github.com/jpedro/master/actions/workflows/pages.yaml/badge.svg)](https://github.com/jpedro/master/actions/workflows/pages.yaml)
Generates deterministic passwords.
<!-- ![Pictutre](https://raw.githubusercontent.com/jpedro/master/master/docs/strong.jpg) -->
<!-- ![Strong password](https://raw.githubusercontent.com/jpedro/master/master/docs/blink.gif) -->
This is inspired by [spectre.app](https://spectre.app/) but simpler.
This uses a sha256 hashed combination of
`username + password + service + version` (`version` is now locked to
`0`) to generate the same password, over and over again, thus
eliminating the need to store, maintain and back up other generated
passwords.
[jpedro.github.io/master](https://jpedro.github.io/master/) has the
browser experience.
The used service name list is kept under the file
`~/.config/master/list.txt` (or whatever `MASTER_LIST` points to)
*purely for autocompletion*, which will be added later.
Eventually, the idea is to create a simple browser extension that uses
the URL domain name as the service.
## Install
pip install master
<!--
Yes, yes. The package is called `masterpass` but the binary is called
`master`. To be fixed after [#2582](https://github.com/pypi/support/issues/2582)
is resolved.
-->
## Usage
```
$ master --help
NAME
master — Generates deterministic passwords for services
USAGE
master NAME Gets the password for service NAME
master -l, --list Lists all stored services
master -r, --remove NAME Removes service NAME from the stored list
master -v, --version Shows the version
master -h, --help Shows this help
```
## Environment variables
| Name | Default |
| ------------------- | ----------------------------- |
| `MASTER_LIST` | `~/.config/master/list.txt` |
| `MASTER_USERNAME` | (None) [1] |
| `MASTER_PASSWORD` | (None) [1] |
| `MASTER_SEPARATOR` | `-` |
| `MASTER_LENGTH` | `6` |
| `MASTER_CHUNKS` | `6` |
Using these default settings, it will generate a password that's 41
characters long. 6 chunks of 6 character long with 5 separators in
between.
> *Note*
> [1] If you don't set the `MASTER_USERNAME` or the `MASTER_PASSWORD` you
> will be prompted for them.
## Todos
- [ ] Make the `MASTER_LIST` a directory to avoid git conflicts.
- [ ] Integrate the user name with Oauth2 providers.
Maybe the `sub` after an authentication flow can be used instead
of the flat username. Cons: the email provider can change for the
same email address. Plus, not 100% sure if one wants to tie
passwords to an email.
- [ ] Lock (close) the master page after 30 seconds of inactivity.
Raw data
{
"_id": null,
"home_page": "https://github.com/jpedro/master",
"name": "master",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3",
"maintainer_email": null,
"keywords": "deterministic password generator",
"author": "jpedro",
"author_email": "jpedro.barbosa@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/15/09/cac9d328ca3c2e0b7e868ef80d950fed7880b0f48168bfd2dc8786aa3965/master-0.2.5.tar.gz",
"platform": null,
"description": "# Master\n\n[![Deploy pages](https://github.com/jpedro/master/actions/workflows/pages.yaml/badge.svg)](https://github.com/jpedro/master/actions/workflows/pages.yaml)\n\nGenerates deterministic passwords.\n\n\n<!-- ![Pictutre](https://raw.githubusercontent.com/jpedro/master/master/docs/strong.jpg) -->\n<!-- ![Strong password](https://raw.githubusercontent.com/jpedro/master/master/docs/blink.gif) -->\n\nThis is inspired by [spectre.app](https://spectre.app/) but simpler.\nThis uses a sha256 hashed combination of\n`username + password + service + version` (`version` is now locked to\n`0`) to generate the same password, over and over again, thus\neliminating the need to store, maintain and back up other generated\npasswords.\n\n[jpedro.github.io/master](https://jpedro.github.io/master/) has the\nbrowser experience.\n\nThe used service name list is kept under the file\n`~/.config/master/list.txt` (or whatever `MASTER_LIST` points to)\n*purely for autocompletion*, which will be added later.\n\nEventually, the idea is to create a simple browser extension that uses\nthe URL domain name as the service.\n\n\n## Install\n\n pip install master\n\n<!--\nYes, yes. The package is called `masterpass` but the binary is called\n`master`. To be fixed after [#2582](https://github.com/pypi/support/issues/2582)\nis resolved.\n-->\n\n\n## Usage\n\n```\n$ master --help\n\nNAME\n master \u2014 Generates deterministic passwords for services\n\nUSAGE\n master NAME Gets the password for service NAME\n master -l, --list Lists all stored services\n master -r, --remove NAME Removes service NAME from the stored list\n master -v, --version Shows the version\n master -h, --help Shows this help\n\n```\n\n\n## Environment variables\n\n| Name | Default |\n| ------------------- | ----------------------------- |\n| `MASTER_LIST` | `~/.config/master/list.txt` |\n| `MASTER_USERNAME` | (None) [1] |\n| `MASTER_PASSWORD` | (None) [1] |\n| `MASTER_SEPARATOR` | `-` |\n| `MASTER_LENGTH` | `6` |\n| `MASTER_CHUNKS` | `6` |\n\nUsing these default settings, it will generate a password that's 41\ncharacters long. 6 chunks of 6 character long with 5 separators in\nbetween.\n\n> *Note*\n> [1] If you don't set the `MASTER_USERNAME` or the `MASTER_PASSWORD` you\n> will be prompted for them.\n\n\n## Todos\n\n- [ ] Make the `MASTER_LIST` a directory to avoid git conflicts.\n- [ ] Integrate the user name with Oauth2 providers.\n Maybe the `sub` after an authentication flow can be used instead\n of the flat username. Cons: the email provider can change for the\n same email address. Plus, not 100% sure if one wants to tie\n passwords to an email.\n- [ ] Lock (close) the master page after 30 seconds of inactivity.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Deterministic password generator",
"version": "0.2.5",
"project_urls": {
"Download": "https://github.com/jpedro/master/tarball/master",
"Homepage": "https://github.com/jpedro/master"
},
"split_keywords": [
"deterministic",
"password",
"generator"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4446c0ce2af29f592b9036ce2870368f3751ba43678095b4d68da74de3163264",
"md5": "5e0d0bd66087226718b2d554d68e8544",
"sha256": "374aaa9d8ae902831e252f0da73388ac4ab15437dbfce3c03f93de4881a9b4ae"
},
"downloads": -1,
"filename": "master-0.2.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5e0d0bd66087226718b2d554d68e8544",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3",
"size": 8595,
"upload_time": "2024-09-05T21:00:50",
"upload_time_iso_8601": "2024-09-05T21:00:50.016454Z",
"url": "https://files.pythonhosted.org/packages/44/46/c0ce2af29f592b9036ce2870368f3751ba43678095b4d68da74de3163264/master-0.2.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1509cac9d328ca3c2e0b7e868ef80d950fed7880b0f48168bfd2dc8786aa3965",
"md5": "dd5846f8ffbafffd4a5f1f0838de9dcd",
"sha256": "1531a957f23d22d9496777fe702b772773baca3fecac395cd2fb167dd9940cc1"
},
"downloads": -1,
"filename": "master-0.2.5.tar.gz",
"has_sig": false,
"md5_digest": "dd5846f8ffbafffd4a5f1f0838de9dcd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3",
"size": 6676,
"upload_time": "2024-09-05T21:00:51",
"upload_time_iso_8601": "2024-09-05T21:00:51.348115Z",
"url": "https://files.pythonhosted.org/packages/15/09/cac9d328ca3c2e0b7e868ef80d950fed7880b0f48168bfd2dc8786aa3965/master-0.2.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-05 21:00:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jpedro",
"github_project": "master",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "master"
}