{"id":18136265,"url":"https://github.com/purarue/plus1","last_synced_at":"2025-03-30T23:32:39.532Z","repository":{"id":94610512,"uuid":"163895109","full_name":"purarue/plus1","owner":"purarue","description":"A symmetric substitution cipher used to obfuscate code that I'd rather not be indexed.","archived":true,"fork":false,"pushed_at":"2024-10-25T17:38:10.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-08T23:34:22.157Z","etag":null,"topics":["cipher","cryptography"],"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/purarue.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2019-01-02T22:13:45.000Z","updated_at":"2024-10-25T17:38:14.000Z","dependencies_parsed_at":"2024-12-22T14:37:15.423Z","dependency_job_id":"386f1616-86ca-4b8d-94c0-5fc76a7a44ff","html_url":"https://github.com/purarue/plus1","commit_stats":null,"previous_names":["seanbreckenridge/plus1"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purarue%2Fplus1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purarue%2Fplus1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purarue%2Fplus1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purarue%2Fplus1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purarue","download_url":"https://codeload.github.com/purarue/plus1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246395573,"owners_count":20770239,"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":["cipher","cryptography"],"created_at":"2024-11-01T14:41:32.740Z","updated_at":"2025-03-30T23:32:39.520Z","avatar_url":"https://github.com/purarue.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# plus1\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nA symmetric substitution cipher that adds/subtracts one to each Unicode character in a file/directory.\n\nThe motivation for this was to obfuscate code so I could [post solutions online](https://github.com/purarue/CS-Assignments) without them being indexed.\n\n`plus1` creates an extension blacklist at `~/.config/plus1_blacklist.txt` (a plain text file), which defines extension types to ignore, one per line. These will be ignored by plus1 unless the `--ignore-blacklist` option is passed. Some extensions you may want to ignore are listed in [`plus1_blacklist.txt.dist`](./plus1/plus1_blacklist.txt.dist).\n\nRequires: python3.4+\n\nInstall: `pip3 install git+https://github.com/purarue/plus1`\n\n```\nusage: plus1 [-h] [-r] [-d] [-i] [--encrypt-hidden-files]\n             [--encrypt-hidden-directories] [--force-delete] -f FILE (-a | -s)\n\nA symmetric substitution cipher that adds/subtracts one to each unicode\ncharacter in a file/directory.\n\noptional arguments:\n  -h, --help                    show this help message and exit\n  -r, --recursive               encrypt/decrypt directories recursively\n  -d, --delete                  after encrypting/decrypting, delete the\n                                original file\n  -i, --ignore-blacklist        ignore the extension blacklist and consider\n                                files that would have been ignored otherwise\n  --hidden-files        don't ignore hidden files\n  --hidden-directories  don't ignore hidden directories\n  --force-delete                don't ask for confirmation when removing files\n\nrequired arguments:\n  -f FILE, --file FILE          file or directory to encrypt/decrypt\n  -a, --add                     encrypt; add 1 to each unicode character\n  -s, --subtract                decrypt; subtract 1 from each unicode\n                                character\n```\n\nExample:\n\n```\n❯ find . -type f | xargs -I {} sh -c \"echo {}; cat {}\"\n./bin/hi\necho hi!\n./123.txt\n123\n./.secret\nkey=cOkcz3RzZkFENFWAaWxx\n\n/tmp/example\n❯ plus1 -adrf .\nSkipping hidden file: /private/tmp/example/.secret\nEncrypting /private/tmp/example/bin/hi...\nRemove '/private/tmp/example/bin/hi'? y\nEncrypting /private/tmp/example/123.txt...\nRemove '/private/tmp/example/123.txt'? y\n\n/tmp/example\n❯ find . -type f | xargs -I {} sh -c \"echo {}; cat {}\"\n./bin/hi[plus1]\nfdip!ij\"\n        ./123[plus1].txt\n234\n   ./.secret\nkey=cOkcz3RzZkFENFWAaWxx\n\n/tmp/example\n❯ plus1 -adf .secret --hidden-files\nEncrypting /private/tmp/example/.secret...\nRemove '/private/tmp/example/.secret'? y\n\n/tmp/example\n❯ find . -type f | xargs -I {} sh -c \"echo {}; cat {}\"\n./bin/hi[plus1]\nfdip!ij\"\n        ./123[plus1].txt\n234\n   ./.secret[plus1]\nlfz\u003edPld{4S{[lGFOGXBbXyy\n\n/tmp/example\n❯ plus1 -sdrf . --force-delete --hidden-files\nDecrypting /private/tmp/example/.secret[plus1]...\nDecrypting /private/tmp/example/123[plus1].txt...\nDecrypting /private/tmp/example/bin/hi[plus1]...\n\n/tmp/example\n❯ find . -type f | xargs -I {} sh -c \"echo {}; cat {}\"\n./bin/hi\necho hi!\n./123.txt\n123\n./.secret\nkey=cOkcz3RzZkFENFWAaWxx\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurarue%2Fplus1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurarue%2Fplus1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurarue%2Fplus1/lists"}