# npwg - Secure Password Generator npwg is a secure password generator written in Rust. With npwg, you can easily generate strong and random passwords or passphrases to protect your online accounts. ## Features - Generate passwords with custom length and count - Support various defined character sets - Generate diceware passwords - Generate pronounceable passwords - Customizable password length, count, character sets, and separators - Avoid repeating characters in passwords - Display statistics about the generated passwords - Show the estimated strength of the generated passwords - Interactive mode for easy password generation ## Installation ### Using Cargo If you have Rust and Cargo installed, you can install npwg using the following command: ```sh cargo install npwg ``` This will download and compile the latest version of npwg and install it in your Cargo binary directory. ### Manual Installation 1. Make sure you have Rust installed on your system. If not, you can download it from the official Rust website: [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install) 2. Clone this repository: ```sh git clone https://github.com/vschwaberow/npwg.git ``` 3. Navigate to the project directory: ```sh cd npwg ``` 4. Build the project: ```sh cargo build --release ``` 5. The executable can be found at `target/release/npwg`. ## Usage ```sh npwg [OPTIONS] ``` ### Options - `-l, --length `: Sets the length of the password [default: 16] - `-c, --count `: Sets the number of passwords to generate [default: 1] - `--avoid-repeating`: Avoid repeating characters in the password - `--stats`: Show statistics about the generated passwords - `--strength`: Show strength meter for the generated passwords - `-a, --allowed `: Sets the allowed characters [default: allprint] - `--use-words`: Use words instead of characters - `-i, --interactive`: Start interactive console mode - `--separator `: Sets the separator for diceware passphrases (single character or 'random') - `--pronounceable`: Generate pronounceable passwords - `--mutate`: Mutate the passwords - `--mutation-type `: Type of mutation to apply [default: replace] - `--mutation-strength `: Strength of mutation [default: 1] - `--lengthen `: Increase the length of passwords during mutation - `--copy`: Copy the generated password to the clipboard - `-h, --help`: Print help - `-V, --version`: Print version ### Predefined Character Sets - `symbol1`, `symbol2`, `symbol3`: Different sets of symbols - `digit`: Numeric digits - `lowerletter`: Lowercase letters - `upperletter`: Uppercase letters - `shell`: Shell-safe characters - `homoglyph1` to `homoglyph8`: Various homoglyph sets - `slashes`, `brackets`, `punctuation`: Specific character types - `all`, `allprint`, `allprintnoquote`, etc.: Various combinations of character types ### Examples Use the interactive mode ```sh npwg -i ``` or ```sh npwg --interactive ``` Generate a password with the default length (16 characters): ```sh npwg ``` Generate a password with a specific length: ```sh npwg -l 12 ``` Generate multiple passwords: ```sh npwg -c 5 ``` Generate a password using only uppercase and lowercase letters: ```sh npwg -a upperletter,lowerletter ``` Generate a diceware passphrase: ```sh npwg --use-words -l 6 ``` Generate a diceware passphrase with a custom separator: ```sh npwg --use-words --separator "-" -l 6 ``` Generate a diceware passphrase with random separators: ```sh npwg --use-words --separator random -l 6 ``` Generate a pronounceable password: ```sh npwg --pronounceable ``` Generate a password and display statistics: ```sh npwg --stats ``` Generate a password and display the estimated strength: ```sh npwg --strength ``` Generate a password using the Diceware method. If no diceware wordlist is in ~/.npwg, it will be automatically downloaded from the EFF website: ```sh npwg -d ``` Generate a password using the Diceware method with a custom number of words. The default number of words is 6. The wordlist will be downloaded if it is not found in ~/.npwg: ```sh npwg -d -w 8 ``` Generate a diceware passphrase with a custom separator: ```sh npwg --use-words --separator "-" -l 6 ``` Generate a diceware passphrase with random separators: ```sh npwg --use-words --separator random -l 6 ``` Mutate an existing password: ```sh npwg --mutate --mutation-type replace --mutation-strength 3 ``` Generate a password and copy it to the clipboard: ```sh npwg --copy ``` ## Contributing Contributions are welcome! If you find a bug or have a suggestion for improvement, please open an issue or submit a pull request. ## License This project is licensed under the [MIT License](LICENSE).