├── .gitignore ├── README.md ├── package.json ├── password_list_generator.js └── password_list_generator.py /.gitignore: -------------------------------------------------------------------------------- 1 | password_list.txt* 2 | .vscode 3 | node_modules 4 | package-lock.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Password list generator 2 | 3 | ## Ultra fast 4 | 5 | ## Changes in code 6 | 7 | ### Located at top of script 8 | 9 | ### wordsArray 10 | 11 | wordsArray is a list of strings before and after the numbers 12 | 13 | Example: 14 | 15 | ``` 16 | prefix00001 17 | 18 | prefix00002 19 | 20 | ... 21 | 22 | prefix99999 23 | 24 | 00000prefix 25 | 26 | ... 27 | 28 | 999999prefix 29 | ``` 30 | 31 | ### Numbers 32 | 33 | ### Usually recommended for all digits to be 9 34 | 35 | Defines how many numbers are there after and before every word in wordsArray 36 | 37 | Example: 38 | 39 | ```javascript 40 | const numbers = 999 41 | ``` 42 | 43 | Output: 44 | 45 | ```cmd 46 | prefix001 47 | 48 | ... 49 | 50 | prefix999 51 | ``` 52 | 53 | ## Download Node.js 54 | 55 | [Click here](https://nodejs.org/en) 56 | 57 | ## Run script 58 | 59 | ### One-time install 60 | 61 | To install code that we use run: 62 | 63 | ```cmd 64 | npm update 65 | ``` 66 | 67 | ### Run password list generator 68 | 69 | For 1st time running you have to [install](#one-time-install) 70 | 71 | ```cmd 72 | npm start 73 | ``` 74 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "password-generator", 3 | "version": "2.0.0", 4 | "description": "", 5 | "main": "password_list_generator.js", 6 | "scripts": { 7 | "start": "node password_list_generator.js", 8 | "update": "npm install" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "progress": "^2.0.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /password_list_generator.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const progress = require("progress"); 3 | 4 | // FILL THIS IN *************************************************** 5 | // Instructions in README.md 6 | const wordsArray = ["Name", "State", "password"]; 7 | // Bigger needs more storage 8 | const numbers = 99999; 9 | 10 | //***************************************************************** 11 | 12 | // Function to generate password list with array as a prefix 13 | function generatePasswordList(words, outputPath, numbers, numbersLength) { 14 | // Calculate total iterations 15 | const totalIterations = words.length * numbers * 2; 16 | 17 | // Create a new progress bar 18 | const bar = new progress(":bar :percent (:current/:total)", { 19 | total: totalIterations, 20 | }); 21 | 22 | // Open the file for writing 23 | const stream = fs.createWriteStream(outputPath, { flags: "a" }); 24 | 25 | // Generate passwords with each word as a prefix 26 | words.forEach((word) => { 27 | for (let i = 0; i < numbers; i++) { 28 | stream.write( 29 | `${word}${i.toString().padStart(numbersLength, "0")}` + "\n" 30 | ); 31 | bar.tick(); 32 | } 33 | for (let i = 0; i < numbers; i++) { 34 | stream.write( 35 | `${i.toString().padStart(numbersLength, "0")}${word}` + "\n" 36 | ); 37 | bar.tick(); 38 | } 39 | }); 40 | 41 | // Event handler for when the writing is finished 42 | stream.on("finish", () => { 43 | // End the progress bar 44 | bar.terminate(); 45 | console.log(`Password list has been written to ${outputPath}`); 46 | }); 47 | 48 | // Close the file stream 49 | stream.end(); 50 | 51 | // Event handler for stream errors 52 | stream.on("error", (err) => { 53 | console.error("Error writing to file:", err); 54 | }); 55 | } 56 | const outputFilePath = "password_list.txt"; 57 | const numbersLength = numbers.toString().length; 58 | // Delete existing content in the file 59 | fs.writeFileSync(outputFilePath, ""); 60 | 61 | // Generate password list and end the progress bar when done 62 | generatePasswordList(wordsArray, outputFilePath, numbers, numbersLength); 63 | -------------------------------------------------------------------------------- /password_list_generator.py: -------------------------------------------------------------------------------- 1 | import os 2 | import threading 3 | 4 | words = ["apple", "banana","strawberry"] 5 | 6 | filename = "password_list.txt" 7 | numbers = 1000 8 | length_of_numbers = len(str(numbers)) 9 | 10 | def generate_passwords(word): 11 | with open(filename, "a") as f: 12 | for i in range(0, numbers + 1): 13 | prefix_padded = str(i).rjust(length_of_numbers, '0') 14 | f.write(f"{word + prefix_padded}\n") 15 | for i in range(0, numbers + 1): 16 | prefix_padded = str(i).rjust(length_of_numbers, '0') 17 | f.write(f"{prefix_padded + word}\n") 18 | 19 | if os.path.exists(filename): 20 | if input("Remove old password list? (y/n): ").upper() == "Y": 21 | os.remove(filename) 22 | print("Removed old password list.") 23 | else: 24 | print("The existing password list does not exist.") 25 | 26 | threads = [] 27 | for index, word in enumerate(words): 28 | thread = threading.Thread(target=generate_passwords, args=(word,)) 29 | threads.append(thread) 30 | thread.start() 31 | 32 | for index, thread in enumerate(threads): 33 | thread.join() 34 | print(f"{round((index + 1) / len(threads) * 100)}%...") 35 | 36 | print("100%") 37 | print("Done") 38 | --------------------------------------------------------------------------------