RETIRED REPOSITORY
A program that can generate a secure password of up to 100 characters, extract securely selected words from the diceware wordlist, generate a password from a sentence, and check for vulnerabilities in a given password.
Avoid using a keyboard layout that types diacritics through a shortcut (such as the Romanian Programmers, where ș is ALT + S, and ț is ALT + T). The diacritic might turn into its non-diacritic counterpart (Ț into T) or into a question mark. I recommend using a keyboard layout that types diacritics directly (such as the Romanian Standard, where ; types ș and ' types ț).
To use Passwordsy, you must get the program itself on your machine. To do this, you have 3 choices: cloning it through Git, opening it with GitHub Desktop, or downloading it as a ZIP. The following tutorial describes installing Passwordsy by cloning the repository with Git.
- Git from git-scm.com
- Python from python.org (make sure to tick 'Add Python to PATH' during the installation process)
- The following modules: PIL, Clipboard, Pynput, CustomTkinter. They are found in the requirements.txt file.
- Open Git Bash
- Use cd (change directory) to move to the location you want the repository to be cloned in. For example, if you want the repository to be cloned in the 'projects' folder on Desktop, type 'cd Desktop/projects/' in the terminal.
- Once you are in the desired folder, type 'git clone https://github.com/IceTheDev2/Passwordsy.git'.
- Type 'cd Passwordsy' and then 'pip install -r requirements.txt' to move into the main directory of the repository and to install all the required dependencies.
- Type 'cd code' to the navigate to the file containing main.py.
- Type 'python main.py' to run the program
I'd love to hear your suggestions on how I can improve my first project!
You can fork the project to play around with it and create a pull request to submit your suggestions. You can also open an issue to tell me about any problems my code might have.
This repository is licensed under the MIT license. In short, you must include the exact copy of this project's license in your end-user application. Read LICENSE for more information.
If you decide to use portions of my software, it would be appreciated if you include an attribution in the final application, mentioning the name of software and its contributors, as well as the section(s) in which it was used.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- The r/Python, r/learnprogramming and r/learnpython communities on Reddit for providing me with great tips and suggestions
- The GitHub contributors to this project, dwaffle, christopher-chandler, and MartinMerkli
- u/creedxender for suggesting a 'Secret string of letters, numbers, and/or symbols'.
- u/infra_d3ad for suggesting using diceware.
- u/modernknight87 for suggesting 'The user input a sentence of their own choosing, takes the first letter of every word, and any numbers or symbols, and combines those as the produced password'.
- u/ekchew for taking the time to rework the check_password_complexity function.
- u/Diapolo10 for taking the time to analyze large parts of my code and provide me with great suggestions on improving readability and preventing errors.
- The codemy.com Youtube channel for their great Tkinter tutorials, such as: this one on keyboard event binding, this one on cursor positions, this one on Tkinter menus, this one on message boxes.
- The SecLists repository of danielmiessler, used here for the 100,000 most common passwords.
- The Diceware-Password-Generator repository of sameera-madushan, used here to generate for a unique password-generation mode.
- The CustomTkinter repository of Tom Schimansky, used here for the UI overhaul.
- Exercism for its large array of exercises
- ChatGPT for helping me solve the most obscure of errors and bugs.
- These Stack Overflow questions for clarifying certain errors and concepts: https://stackoverflow.com/questions/61139160/tkinter-error-tkinter-tclerror-invalid-command-name-frame-entry-python, https://stackoverflow.com/questions/45847313/what-does-weight-do-in-tkinter, as well as a ton others scattered around the code.
- This tutorialspoint.com page, this one, as well as others.
- Paul Miskew for his PYTHON 3 TKINTER - GUI ENTRY BIND KEY video
- This simplilearn.com page
- This realpython.com page
- This flexiple.com page
- This Runestone Academy page
- This geeksforgeeks.org page
- This digitalocean.com page
- This edureka.co page
- This GitHub Docs page
- This video by plus 2 net
- This video from PyTutorials
- This video from Appficial for clarifying f-strings for me.
- This W3Schools page