diff --git a/Gemfile b/Gemfile index 077ce9abf..28a098c39 100644 --- a/Gemfile +++ b/Gemfile @@ -12,6 +12,7 @@ gem 'mini_exiftool_vendored' gem 'rmagick' gem 'sshkey' gem 'zipruby' +gem 'credy' #development only gems go here group :test, :development do diff --git a/Gemfile.lock b/Gemfile.lock index 6f26fc5f3..51b7b8983 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,8 @@ GEM specs: CFPropertyList (2.2.8) chunky_png (1.3.8) + credy (0.2.1) + thor (~> 0.19.1) facter (2.4.6) CFPropertyList (~> 2.2.6) faker (1.6.6) @@ -66,6 +68,7 @@ PLATFORMS ruby DEPENDENCIES + credy faker forgery librarian-puppet diff --git a/modules/generators/content/credit_card/credit_card.pp b/modules/generators/content/credit_card/credit_card.pp new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/content/credit_card/manifests/.no_puppet b/modules/generators/content/credit_card/manifests/.no_puppet new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/content/credit_card/secgen_local/local.rb b/modules/generators/content/credit_card/secgen_local/local.rb new file mode 100644 index 000000000..eea8963d8 --- /dev/null +++ b/modules/generators/content/credit_card/secgen_local/local.rb @@ -0,0 +1,31 @@ +#!/usr/bin/ruby +require_relative '../../../../../lib/objects/local_string_generator.rb' +require 'credy' + +class CreditCardGenerator < StringGenerator + def initialize + super + self.module_name = 'Credit Card Number Generator' + end + + def generate + selected_type = [['americanexpress', 'American Express'], + ['diners-club-international', 'Diners Club International'], + ['china-unionpay', 'China UnionPay'], + ['laser', 'Laser'], + ['maestro', 'Maestro'], + ['mastercard', 'Mastercard'], + ['solo', 'Solo'], + ['switch', 'Switch'], + ['visa', 'Visa'], + ['visa-electron', 'Visa Electron']].sample + + card_data = Credy::CreditCard.generate(:type => selected_type[0]) + card_data_formatted = card_data[:number].scan(/.{1,4}/).join(' ') # add a space every 4 characters + card_string = "#{selected_type[1]}\t#{card_data_formatted}" + + self.outputs << card_string + end +end + +CreditCardGenerator.new.run \ No newline at end of file diff --git a/modules/generators/content/credit_card/secgen_metadata.xml b/modules/generators/content/credit_card/secgen_metadata.xml new file mode 100644 index 000000000..0e4e1fcdb --- /dev/null +++ b/modules/generators/content/credit_card/secgen_metadata.xml @@ -0,0 +1,19 @@ + + + + Industry Generator + Thomas Shaw + MIT + Industry generator using the Forgery ruby gem. + + credit_card + local_calculation + linux + windows + + https://github.com/TimPetricola/Credy + + industry + \ No newline at end of file