diff --git a/Gemfile b/Gemfile
index 07b1b93b5..ff1ed012c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -36,6 +36,7 @@ gem 'digest-sha3', :git => "http://github.com/izetex/digest-sha3-ruby"
gem 'packetfu'
gem 'net-ntp'
gem 'CFPropertyList'
+gem 'artii'
#development only gems go here
group :test, :development do
diff --git a/Gemfile.lock b/Gemfile.lock
index 1868009da..02838b4b9 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -26,6 +26,7 @@ GEM
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
+ artii (2.1.2)
bases (1.0.2)
bcrypt (3.1.13)
chunky_png (1.3.11)
@@ -151,6 +152,7 @@ PLATFORMS
DEPENDENCIES
CFPropertyList
+ artii
bases
bcrypt
braille!
diff --git a/modules/encoders/format/ascii_art/ascii_art.pp b/modules/encoders/format/ascii_art/ascii_art.pp
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/encoders/format/ascii_art/manifests/.no_puppet b/modules/encoders/format/ascii_art/manifests/.no_puppet
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/encoders/format/ascii_art/secgen_local/local.rb b/modules/encoders/format/ascii_art/secgen_local/local.rb
new file mode 100644
index 000000000..d64c903d9
--- /dev/null
+++ b/modules/encoders/format/ascii_art/secgen_local/local.rb
@@ -0,0 +1,37 @@
+#!/usr/bin/ruby
+require_relative '../../../../../lib/objects/local_string_encoder.rb'
+require 'artii'
+
+class ASCIIArtEncoder < StringEncoder
+ attr_accessor :font
+
+ def initialize
+ super
+ self.module_name = 'Ascii Art Encoder'
+ self.font = []
+ end
+
+ def encode(str)
+ # if more than one font is specified, randomly choose one for every string that is encoded
+ artii = Artii::Base.new :font => self.font.sample
+ artii.asciify(str)
+ end
+
+ def process_options(opt, arg)
+ super
+ case opt
+ # Removes any non-alphabet characters
+ when '--font'
+ self.font << arg
+ else
+ # do nothing
+ end
+ end
+
+ def get_options_array
+ super + [['--font', GetoptLong::OPTIONAL_ARGUMENT]]
+ end
+
+end
+
+ASCIIArtEncoder.new.run
diff --git a/modules/encoders/format/ascii_art/secgen_metadata.xml b/modules/encoders/format/ascii_art/secgen_metadata.xml
new file mode 100644
index 000000000..09c4cfda5
--- /dev/null
+++ b/modules/encoders/format/ascii_art/secgen_metadata.xml
@@ -0,0 +1,61 @@
+
+
+
+ Text to ASCII Art
+ Z. Cliffe Schreuders
+ MIT
+ Outputs an ASCII art version of the text. Works best with short strings.
+
+
+ string_format_encoder
+ linux
+ windows
+
+ strings_to_encode
+ font
+
+
+
+
+ banner
+ big
+ bubble
+ bulbhead
+ contessa
+ doom
+ drpepper
+ fourtops
+ invita
+ italic
+ larry3d
+ maxfour
+ mini
+ moscow
+ ntgreek
+ ogre
+ pawp
+ pebbles
+ puffy
+ rectangles
+ serifcap
+ short
+ slant
+ slscript
+ small
+ smisome1
+ smslant
+ speed
+ standard
+ straight
+ twopoint
+
+
+
+
+
+
+ encoded_strings
+
+
diff --git a/modules/utilities/unix/system/after_login_message/manifests/init.pp b/modules/utilities/unix/system/after_login_message/manifests/init.pp
index ab814ddaa..d95987c56 100644
--- a/modules/utilities/unix/system/after_login_message/manifests/init.pp
+++ b/modules/utilities/unix/system/after_login_message/manifests/init.pp
@@ -1,11 +1,11 @@
class after_login_message::init {
$secgen_parameters = secgen_functions::get_parameters($::base64_inputs_file)
- $leaked_strings = join($secgen_parameters['$leaked_strings'], "/n")
-
- file_line { "$leaked_strings leak login":
- path => '/etc/bashrc',
- line => "cat <<'EOF'\n$leaked_strings\nEOF",
+ $strings_to_leak = join($secgen_parameters['strings_to_leak'], "\n")
+
+ file_line { "$strings_to_leak leak login":
+ path => '/etc/bash.bashrc',
+ line => "cat <<'EOF'\n$strings_to_leak\nEOF",
}
}
diff --git a/modules/utilities/unix/system/after_login_message/secgen_metadata.xml b/modules/utilities/unix/system/after_login_message/secgen_metadata.xml
index 8ea6d81ca..b4b7596f9 100644
--- a/modules/utilities/unix/system/after_login_message/secgen_metadata.xml
+++ b/modules/utilities/unix/system/after_login_message/secgen_metadata.xml
@@ -11,9 +11,9 @@
system
linux
- leaked_strings
+ strings_to_leak
-
+
diff --git a/modules/utilities/unix/system/before_login_message/manifests/init.pp b/modules/utilities/unix/system/before_login_message/manifests/init.pp
index f5e81b402..a62f006bc 100644
--- a/modules/utilities/unix/system/before_login_message/manifests/init.pp
+++ b/modules/utilities/unix/system/before_login_message/manifests/init.pp
@@ -1,14 +1,14 @@
class before_login_message::init {
$secgen_parameters = secgen_functions::get_parameters($::base64_inputs_file)
- $leaked_strings = join($secgen_parameters['$leaked_strings'], "/n")
-
- file_line { "$leaked_strings leak":
+ $strings_to_leak = join($secgen_parameters['strings_to_leak'], "\n")
+
+ file_line { "$strings_to_leak leak":
path => '/etc/issue',
- line => $leaked_strings,
+ line => $strings_to_leak,
}
- file_line { "$leaked_strings net leak":
+ file_line { "$strings_to_leak net leak":
path => '/etc/issue.net',
- line => $leaked_strings,
+ line => $strings_to_leak,
}
}
diff --git a/scenarios/examples/services_utilities_examples/shell_login_messages.xml b/scenarios/examples/services_utilities_examples/shell_login_messages.xml
new file mode 100644
index 000000000..a23fa9460
--- /dev/null
+++ b/scenarios/examples/services_utilities_examples/shell_login_messages.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ system
+
+
+
+
+
+
+ Hacktivity
+
+
+ You are logged out
+
+
+
+
+
+
+ SecGen
+
+
+ Welcome! You are logged in.
+
+
+
+