From 3373971e4d551b7ad86765af4fa0ae273f3d767e Mon Sep 17 00:00:00 2001 From: Jack Biggs Date: Fri, 10 Feb 2023 14:22:23 +0000 Subject: [PATCH 1/6] Password List Generator --- .../content/password_file/password_file.pp | 0 .../password_file/secgen_local/local.rb | 32 +++++++++++++++++++ .../content/password_file/secgen_metadata.xml | 19 +++++++++++ .../templates/password_file.md.erb | 14 ++++++++ 4 files changed, 65 insertions(+) create mode 100644 modules/generators/content/password_file/password_file.pp create mode 100644 modules/generators/content/password_file/secgen_local/local.rb create mode 100644 modules/generators/content/password_file/secgen_metadata.xml create mode 100644 modules/generators/content/password_file/templates/password_file.md.erb diff --git a/modules/generators/content/password_file/password_file.pp b/modules/generators/content/password_file/password_file.pp new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/content/password_file/secgen_local/local.rb b/modules/generators/content/password_file/secgen_local/local.rb new file mode 100644 index 000000000..9c7da568c --- /dev/null +++ b/modules/generators/content/password_file/secgen_local/local.rb @@ -0,0 +1,32 @@ +#!/usr/bin/ruby +require_relative '../../../../../lib/objects/local_string_generator.rb' +require 'erb' +require 'fileutils' +class PasswordFileGenerator < StringGenerator + attr_accessor :website_sample + attr_accessor :username_sample + attr_accessor :pass_sample + LOCAL_DIR = File.expand_path('../../',__FILE__) + TEMPLATE_PATH = "#{LOCAL_DIR}/templates/password_file.md.erb" + + def generate + + website_array = File.readlines('../../../../../lib/resources/linelists/top-100-websites.txt') + self.website_sample = website_array.sample(10) + username_array = File.readlines('../../../../../lib/resources/wordlists/mythical_creatures') + self.username_sample = username_array.sample(5) + pass_array = File.readlines('../../../../../lib/resources/wordlists/10_million_password_list_top_100') + self.pass_sample = pass_array.sample(10) + template_out = ERB.new(File.read(TEMPLATE_PATH), 0, '<>-') + self.outputs << template_out.result(self.get_binding) + end + + # Returns binding for erb files (access to variables in this classes scope) + # @return binding + def get_binding + binding + end +end + +PasswordFileGenerator.new.run + diff --git a/modules/generators/content/password_file/secgen_metadata.xml b/modules/generators/content/password_file/secgen_metadata.xml new file mode 100644 index 000000000..310983ea5 --- /dev/null +++ b/modules/generators/content/password_file/secgen_metadata.xml @@ -0,0 +1,19 @@ + + + + + Password List File Generator + Jack Biggs + MIT + Creates a file in whcih login are contained for 10 websites. + + string_generator + local_calculation + linux + + + + generated_strings + diff --git a/modules/generators/content/password_file/templates/password_file.md.erb b/modules/generators/content/password_file/templates/password_file.md.erb new file mode 100644 index 000000000..f25647864 --- /dev/null +++ b/modules/generators/content/password_file/templates/password_file.md.erb @@ -0,0 +1,14 @@ +# Password list + +<% + website_count = 1 + website_sample.each { |wsite| +%> +## <%= wsite %> +### Username: <%= username_sample[website_count] %> +### Password: <%= pass_sample[website_count] %> +<% website_count += 1 %> + <% + } +%> + From 4a725f30728f6893f6c9cd56885cf36a28e67b0a Mon Sep 17 00:00:00 2001 From: Jack Biggs Date: Sun, 16 Apr 2023 15:41:31 +0100 Subject: [PATCH 2/6] new file: lib/resources/linelists/top_100_websites modified: modules/generators/content/password_file/secgen_local/local.rb modified: modules/generators/content/password_file/secgen_metadata.xml modified: modules/generators/content/password_file/templates/password_file.md.erb Added top_100_websites and set the program to take in 5 passwords from inputs --- lib/resources/linelists/top_100_websites | 100 ++++++++++++++++++ .../password_file/secgen_local/local.rb | 97 +++++++++++++++-- .../content/password_file/secgen_metadata.xml | 6 +- .../templates/password_file.md.erb | 2 +- 4 files changed, 192 insertions(+), 13 deletions(-) create mode 100644 lib/resources/linelists/top_100_websites diff --git a/lib/resources/linelists/top_100_websites b/lib/resources/linelists/top_100_websites new file mode 100644 index 000000000..2c94bcb9b --- /dev/null +++ b/lib/resources/linelists/top_100_websites @@ -0,0 +1,100 @@ +https://www.google.com +https://www.youtube.com +https://www.facebook.com +https://www.amazon.com +https://www.wikipedia.org +https://www.twitter.com +https://www.instagram.com +https://www.linkedin.com +https://www.yahoo.com +https://www.reddit.com +https://www.microsoft.com +https://www.netflix.com +https://www.sina.com +https://www.zoom.us +https://www.pinterest.com +https://www.teams.microsoft.com +https://www.apple.com +https://www.bing.com +https://www.github.com +https://www.imdb.com +https://www.aliexpress.com +https://www.bilibili.com +https://www.twitch.tv +https://www.stackoverflow.com +https://www.alibaba.com +https://www.adobe.com +https://www.espn.com +https://www.office365.com +https://www.nytimes.com +https://www.dropbox.com +https://www.salesforce.com +https://www.hulu.com +https://www.indeed.com +https://www.wikipedia.com +https://www.microsoftonline.com +https://www.walmart.com +https://www.paypal.com +https://www.zillow.com +https://www.ebay.com +https://www.cnn.com +https://www.spotify.com +https://www.weibo.com +https://www.roblox.com +https://www.oracle.com +https://www.booking.com +https://www.quora.com +https://www.foxnews.com +https://www.dropboxusercontent.com +https://www.nike.com +https://www.adp.com +https://www.craigslist.org +https://www.foxsports.com +https://www.cnbc.com +https://www.bbc.com +https://www.booking.com +https://www.ups.com +https://www.abcnews.go.com +https://www.naver.com +https://www.theguardian.com +https://www.boston.com +https://www.att.com +https://www.medicalnewstoday.com +https://www.ign.com +https://www.sony.com +https://www.stripe.com +https://www.groupon.com +https://www.nbcnews.com +https://www.theverge.com +https://www.cnet.com +https://www.macys.com +https://www.realtor.com +https://www.fidelity.com +https://www.glassdoor.com +https://www.weather.com +https://www.xfinity.com +https://www.merriam-webster.com +https://www.buzzfeed.com +https://www.legacy.com +https://www.usatoday.com +https://www.fandango.com +https://www.wellsfargo.com +https://www.homedepot.com +https://www.webex.com +https://www.allrecipes.com +https://www.weforum.org +https://www.ca.gov +https://www.npr.org +https://www.ikea.com +https://www.surveymonkey.com +https://www.nintendo.com +https://www.zdnet.com +https://www.speedtest.net +https://www.bloomberg.com +https://www.zillow.com +https://www.whitepages.com +https://www.quickenloans.com +https://www.washingtonpost.com +https://www.dailymail.co.uk +https://www.cbssports.com +https://www.buzzfeednews.com diff --git a/modules/generators/content/password_file/secgen_local/local.rb b/modules/generators/content/password_file/secgen_local/local.rb index 9c7da568c..37720cbd2 100644 --- a/modules/generators/content/password_file/secgen_local/local.rb +++ b/modules/generators/content/password_file/secgen_local/local.rb @@ -5,21 +5,96 @@ require 'fileutils' class PasswordFileGenerator < StringGenerator attr_accessor :website_sample attr_accessor :username_sample - attr_accessor :pass_sample + attr_accessor :pass_list + attr_accessor :password_1 + attr_accessor :password_2 + attr_accessor :password_3 + attr_accessor :password_4 + attr_accessor :password_5 LOCAL_DIR = File.expand_path('../../',__FILE__) TEMPLATE_PATH = "#{LOCAL_DIR}/templates/password_file.md.erb" - def generate - - website_array = File.readlines('../../../../../lib/resources/linelists/top-100-websites.txt') - self.website_sample = website_array.sample(10) - username_array = File.readlines('../../../../../lib/resources/wordlists/mythical_creatures') - self.username_sample = username_array.sample(5) - pass_array = File.readlines('../../../../../lib/resources/wordlists/10_million_password_list_top_100') - self.pass_sample = pass_array.sample(10) - template_out = ERB.new(File.read(TEMPLATE_PATH), 0, '<>-') - self.outputs << template_out.result(self.get_binding) + def initialize + super + self.password_1 = '' + self.password_2 = '' + self.password_3 = '' + self.password_4 = '' + self.password_5 = '' end + + def get_options_array + super + [['--password1', GetoptLong::OPTIONAL_ARGUMENT], + ['--password2', GetoptLong::OPTIONAL_ARGUMENT], + ['--password3', GetoptLong::OPTIONAL_ARGUMENT], + ['--password4', GetoptLong::OPTIONAL_ARGUMENT], + ['--password5', GetoptLong::OPTIONAL_ARGUMENT]] + end + + def process_options(opt, arg) + super + case opt + when '--password1' + self.password_1 << arg; + when '--password2' + self.password_2 << arg; + when '--password3' + self.password_3 << arg; + when '--password4' + self.password_4 << arg; + when '--password5' + self.password_5 << arg; + end + end + +def generate + pass_list = Array.new + passCount = 5 + + if self.password_1 != '' + passCount -= 1 + pass_list.append(self.password_1) + end + + if self.password_2 != '' + passCount -= 1 + pass_list.append(self.password_2) + end + + if self.password_3 != '' + passCount -= 1 + pass_list.append(self.password_3) + end + + if self.password_4 != '' + passCount -= 1 + pass_list.append(self.password_4) + end + + if self.password_5 != '' + passCount -= 1 + pass_list.append(self.password_5) + end + + pass_array = File.readlines('../../../../../lib/resources/wordlists/10_million_password_list_top_100') + website_array = File.readlines('../../../../../lib/resources/linelists/top_100_websites') + self.website_sample = website_array.sample(10) + username_array = File.readlines('../../../../../lib/resources/wordlists/mythical_creatures') + self.username_sample = username_array.sample(5) + + if passCount == 0 + self.pass_sample = pass_array.sample(5) + elsif passCount < 5 + self.pass_sample = pass_array.sample(5-passCount) + self.pass_list.append(self.pass_sample) + end + + pass_list.each { |pass| pass } + + template_out = ERB.new(File.read(TEMPLATE_PATH), 0, '<>-') + self.outputs << template_out.result(self.get_binding) +end + # Returns binding for erb files (access to variables in this classes scope) # @return binding diff --git a/modules/generators/content/password_file/secgen_metadata.xml b/modules/generators/content/password_file/secgen_metadata.xml index 310983ea5..e597393fa 100644 --- a/modules/generators/content/password_file/secgen_metadata.xml +++ b/modules/generators/content/password_file/secgen_metadata.xml @@ -13,7 +13,11 @@ local_calculation linux + password1 + passwrod2 + password3 + password4 + password5 - generated_strings diff --git a/modules/generators/content/password_file/templates/password_file.md.erb b/modules/generators/content/password_file/templates/password_file.md.erb index f25647864..366874a47 100644 --- a/modules/generators/content/password_file/templates/password_file.md.erb +++ b/modules/generators/content/password_file/templates/password_file.md.erb @@ -6,7 +6,7 @@ %> ## <%= wsite %> ### Username: <%= username_sample[website_count] %> -### Password: <%= pass_sample[website_count] %> +### Password: <%= pass_list[website_count] %> <% website_count += 1 %> <% } From a55ee552e0ffc71051f6219da2c65ef63e0f5fb9 Mon Sep 17 00:00:00 2001 From: Jack Biggs Date: Thu, 20 Apr 2023 17:46:05 +0100 Subject: [PATCH 3/6] modified: modules/generators/content/password_file/secgen_local/local.rb modified: modules/generators/content/password_file/templates/password_file.md.erb Password List now takes in an input of passwords separated by ',' and then appends to an array and then outputs a random one from the array of 10 passwords into the password list allowing for repeats. --- .../password_file/secgen_local/local.rb | 71 ++++--------------- .../templates/password_file.md.erb | 2 +- 2 files changed, 14 insertions(+), 59 deletions(-) diff --git a/modules/generators/content/password_file/secgen_local/local.rb b/modules/generators/content/password_file/secgen_local/local.rb index 37720cbd2..deea733a6 100644 --- a/modules/generators/content/password_file/secgen_local/local.rb +++ b/modules/generators/content/password_file/secgen_local/local.rb @@ -6,91 +6,46 @@ class PasswordFileGenerator < StringGenerator attr_accessor :website_sample attr_accessor :username_sample attr_accessor :pass_list - attr_accessor :password_1 - attr_accessor :password_2 - attr_accessor :password_3 - attr_accessor :password_4 - attr_accessor :password_5 LOCAL_DIR = File.expand_path('../../',__FILE__) TEMPLATE_PATH = "#{LOCAL_DIR}/templates/password_file.md.erb" def initialize super - self.password_1 = '' - self.password_2 = '' - self.password_3 = '' - self.password_4 = '' - self.password_5 = '' + self.pass_list = Array.new end def get_options_array - super + [['--password1', GetoptLong::OPTIONAL_ARGUMENT], - ['--password2', GetoptLong::OPTIONAL_ARGUMENT], - ['--password3', GetoptLong::OPTIONAL_ARGUMENT], - ['--password4', GetoptLong::OPTIONAL_ARGUMENT], - ['--password5', GetoptLong::OPTIONAL_ARGUMENT]] + super + [['--password1', GetoptLong::OPTIONAL_ARGUMENT]] end def process_options(opt, arg) super case opt when '--password1' - self.password_1 << arg; - when '--password2' - self.password_2 << arg; - when '--password3' - self.password_3 << arg; - when '--password4' - self.password_4 << arg; - when '--password5' - self.password_5 << arg; + arr = arg.split(',', -1) + arr.each{ |pass| + self.pass_list << pass.strip! + } end end def generate - pass_list = Array.new - passCount = 5 - - if self.password_1 != '' - passCount -= 1 - pass_list.append(self.password_1) - end - - if self.password_2 != '' - passCount -= 1 - pass_list.append(self.password_2) - end - - if self.password_3 != '' - passCount -= 1 - pass_list.append(self.password_3) - end - - if self.password_4 != '' - passCount -= 1 - pass_list.append(self.password_4) - end - - if self.password_5 != '' - passCount -= 1 - pass_list.append(self.password_5) - end + arrayLength = self.pass_list.length() pass_array = File.readlines('../../../../../lib/resources/wordlists/10_million_password_list_top_100') website_array = File.readlines('../../../../../lib/resources/linelists/top_100_websites') self.website_sample = website_array.sample(10) username_array = File.readlines('../../../../../lib/resources/wordlists/mythical_creatures') self.username_sample = username_array.sample(5) - if passCount == 0 - self.pass_sample = pass_array.sample(5) - elsif passCount < 5 - self.pass_sample = pass_array.sample(5-passCount) - self.pass_list.append(self.pass_sample) + if arrayLength == 0 + self.pass_list = pass_array.sample(10) + elsif arrayLength < 10 + while self.pass_list.length() < 10 + self.pass_list << pass_array.sample(1) + end end - pass_list.each { |pass| pass } - template_out = ERB.new(File.read(TEMPLATE_PATH), 0, '<>-') self.outputs << template_out.result(self.get_binding) end diff --git a/modules/generators/content/password_file/templates/password_file.md.erb b/modules/generators/content/password_file/templates/password_file.md.erb index 366874a47..d9756d30d 100644 --- a/modules/generators/content/password_file/templates/password_file.md.erb +++ b/modules/generators/content/password_file/templates/password_file.md.erb @@ -6,7 +6,7 @@ %> ## <%= wsite %> ### Username: <%= username_sample[website_count] %> -### Password: <%= pass_list[website_count] %> +### Password: <%= pass_list[rand(1..10)] %> <% website_count += 1 %> <% } From 145d97704c12907ee31616d72101d0ed24067ef1 Mon Sep 17 00:00:00 2001 From: Jack Biggs Date: Thu, 20 Apr 2023 17:49:54 +0100 Subject: [PATCH 4/6] modified: modules/generators/content/password_file/secgen_metadata.xml Updated SecGen metadata --- modules/generators/content/password_file/secgen_metadata.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/generators/content/password_file/secgen_metadata.xml b/modules/generators/content/password_file/secgen_metadata.xml index e597393fa..ef9754be0 100644 --- a/modules/generators/content/password_file/secgen_metadata.xml +++ b/modules/generators/content/password_file/secgen_metadata.xml @@ -14,10 +14,6 @@ linux password1 - passwrod2 - password3 - password4 - password5 generated_strings From ac3e3b0bc35e1b16754e869221a2d662e5f63913 Mon Sep 17 00:00:00 2001 From: Jack Biggs Date: Mon, 8 May 2023 12:53:17 +0100 Subject: [PATCH 5/6] i modified: local.rb modified: ../secgen_metadata.xml Program now requires a password, and incorportates the interest directories and shuffles the array to mix up malicious and benign interests. --- .../password_file/secgen_local/local.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/modules/generators/content/password_file/secgen_local/local.rb b/modules/generators/content/password_file/secgen_local/local.rb index deea733a6..9fe4c108b 100644 --- a/modules/generators/content/password_file/secgen_local/local.rb +++ b/modules/generators/content/password_file/secgen_local/local.rb @@ -7,6 +7,7 @@ class PasswordFileGenerator < StringGenerator attr_accessor :username_sample attr_accessor :pass_list LOCAL_DIR = File.expand_path('../../',__FILE__) + INTERESTS_DIR = "../../../../../lib/resources/interests" TEMPLATE_PATH = "#{LOCAL_DIR}/templates/password_file.md.erb" def initialize @@ -15,13 +16,13 @@ class PasswordFileGenerator < StringGenerator end def get_options_array - super + [['--password1', GetoptLong::OPTIONAL_ARGUMENT]] + super + [['--passwords', GetoptLong::REQUIRED_ARGUMENT]] end def process_options(opt, arg) super case opt - when '--password1' + when '--passwords' arr = arg.split(',', -1) arr.each{ |pass| self.pass_list << pass.strip! @@ -31,10 +32,19 @@ class PasswordFileGenerator < StringGenerator def generate + random_interest = Dir.glob(File.join("#{INTERESTS_DIR}/benign/", '*')).select { |f| File.directory? f }.sample + + malicious_interest = Dir.glob(File.join("#{INTERESTS_DIR}/malicious/", '*')).select { |f| File.directory? f}.sample + + website_lines = File.readlines("#{random_interest}/websites").map(&:strip) + + mal_website_lines = File.readlines("#{malicious_interest}/websites").map(&:strip) + arrayLength = self.pass_list.length() pass_array = File.readlines('../../../../../lib/resources/wordlists/10_million_password_list_top_100') - website_array = File.readlines('../../../../../lib/resources/linelists/top_100_websites') - self.website_sample = website_array.sample(10) + self.website_sample = website_lines.sample(5) + self.website_sample << mal_website_lines.sample(5) + self.website_sample = self.website_sample.shuffle() username_array = File.readlines('../../../../../lib/resources/wordlists/mythical_creatures') self.username_sample = username_array.sample(5) From ed53b1f3edb7daf9ad1aa1ea9acf003440335e19 Mon Sep 17 00:00:00 2001 From: Jack Biggs Date: Fri, 12 May 2023 15:25:23 +0100 Subject: [PATCH 6/6] modified: modules/generators/content/password_file/secgen_local/local.rb modified: modules/generators/content/password_file/secgen_metadata.xml modified: modules/generators/content/password_file/templates/password_file.md.erb The program now takes in usernames as an input, as well as allowing for the benign and malicious subjects to be selected --- .../password_file/secgen_local/local.rb | 63 ++++++++++++------- .../content/password_file/secgen_metadata.xml | 7 ++- .../templates/password_file.md.erb | 11 ++-- 3 files changed, 51 insertions(+), 30 deletions(-) diff --git a/modules/generators/content/password_file/secgen_local/local.rb b/modules/generators/content/password_file/secgen_local/local.rb index 9fe4c108b..73426bdaf 100644 --- a/modules/generators/content/password_file/secgen_local/local.rb +++ b/modules/generators/content/password_file/secgen_local/local.rb @@ -4,19 +4,32 @@ require 'erb' require 'fileutils' class PasswordFileGenerator < StringGenerator attr_accessor :website_sample - attr_accessor :username_sample + attr_accessor :user_list attr_accessor :pass_list + attr_accessor :malicious + attr_accessor :benign + attr_accessor :mal_website_lines + attr_accessor :website_lines LOCAL_DIR = File.expand_path('../../',__FILE__) INTERESTS_DIR = "../../../../../lib/resources/interests" TEMPLATE_PATH = "#{LOCAL_DIR}/templates/password_file.md.erb" - + MALICIOUS_PATH = "#{INTERESTS_DIR}/malicious/" + BENIGN_PATH = "#{INTERESTS_DIR}/benign/" def initialize super self.pass_list = Array.new + self.user_list = Array.new + self.malicious = '' + self.benign = '' + self.mal_website_lines = Array.new + self.website_lines = Array.new end def get_options_array - super + [['--passwords', GetoptLong::REQUIRED_ARGUMENT]] + super + [['--passwords', GetoptLong::REQUIRED_ARGUMENT], + ['--usernames', GetoptLong::REQUIRED_ARGUMENT], + ['--benign', GetoptLong::REQUIRED_ARGUMENT], + ['--malicious', GetoptLong::OPTIONAL_ARGUMENT]] end def process_options(opt, arg) @@ -25,35 +38,41 @@ class PasswordFileGenerator < StringGenerator when '--passwords' arr = arg.split(',', -1) arr.each{ |pass| - self.pass_list << pass.strip! + self.pass_list << pass.delete(' ') } + when '--usernames' + arr = arg.split(',', -1) + arr.each{ |user| + self.user_list << user.delete(' ') + } + when '--benign' + self.benign << arg; + when '--malicious' + self.malicious << arg; end end def generate - random_interest = Dir.glob(File.join("#{INTERESTS_DIR}/benign/", '*')).select { |f| File.directory? f }.sample - malicious_interest = Dir.glob(File.join("#{INTERESTS_DIR}/malicious/", '*')).select { |f| File.directory? f}.sample + if self.malicious != "" + malicious_interest = "#{MALICIOUS_PATH}#{self.malicious}" + self.mal_website_lines = File.readlines("#{malicious_interest}/websites").map(&:strip) + end + random_interest = "#{BENIGN_PATH}#{self.benign}" - website_lines = File.readlines("#{random_interest}/websites").map(&:strip) + self.website_lines = File.readlines("#{random_interest}/websites").map(&:strip) - mal_website_lines = File.readlines("#{malicious_interest}/websites").map(&:strip) - - arrayLength = self.pass_list.length() - pass_array = File.readlines('../../../../../lib/resources/wordlists/10_million_password_list_top_100') - self.website_sample = website_lines.sample(5) - self.website_sample << mal_website_lines.sample(5) + passLength = self.pass_list.length() + userLength = self.user_list.length() + self.website_sample = website_lines.sample(10) + self.website_sample << mal_website_lines.sample(10) + self.website_sample = self.website_sample.flatten self.website_sample = self.website_sample.shuffle() - username_array = File.readlines('../../../../../lib/resources/wordlists/mythical_creatures') - self.username_sample = username_array.sample(5) - - if arrayLength == 0 - self.pass_list = pass_array.sample(10) - elsif arrayLength < 10 - while self.pass_list.length() < 10 - self.pass_list << pass_array.sample(1) - end + + if passLength == 0 + warn "Empty Array" + exit 1 end template_out = ERB.new(File.read(TEMPLATE_PATH), 0, '<>-') diff --git a/modules/generators/content/password_file/secgen_metadata.xml b/modules/generators/content/password_file/secgen_metadata.xml index ef9754be0..7c96cf702 100644 --- a/modules/generators/content/password_file/secgen_metadata.xml +++ b/modules/generators/content/password_file/secgen_metadata.xml @@ -7,13 +7,16 @@ Password List File Generator Jack Biggs MIT - Creates a file in whcih login are contained for 10 websites. + Creates a file in which logins are contained for multiple websites. string_generator local_calculation linux - password1 + passwords + usernames + benign + malicious generated_strings diff --git a/modules/generators/content/password_file/templates/password_file.md.erb b/modules/generators/content/password_file/templates/password_file.md.erb index d9756d30d..8d565f67c 100644 --- a/modules/generators/content/password_file/templates/password_file.md.erb +++ b/modules/generators/content/password_file/templates/password_file.md.erb @@ -1,14 +1,13 @@ # Password list <% - website_count = 1 - website_sample.each { |wsite| + website_count = 0 + pass_list.each { |pass| %> -## <%= wsite %> -### Username: <%= username_sample[website_count] %> -### Password: <%= pass_list[rand(1..10)] %> +## <%= website_sample[website_count] %> +### Username: <%= user_list[website_count] %> +### Password: <%= pass %> <% website_count += 1 %> <% } %> -