diff --git a/lib/objects/local_string_encoder.rb b/lib/objects/local_string_encoder.rb
index ed942e643..26a623610 100644
--- a/lib/objects/local_string_encoder.rb
+++ b/lib/objects/local_string_encoder.rb
@@ -40,6 +40,18 @@ class StringEncoder
def read_arguments
# Get command line arguments
+ begin
+ args_array = []
+ ARGF.each do |arg|
+ arg.strip.split(' ').each do |split|
+ args_array << split
+ end
+ end
+ ARGV.unshift(*args_array)
+ rescue
+ # Do nothing...
+ end
+
opts = get_options
# process option arguments
diff --git a/lib/objects/local_string_generator.rb b/lib/objects/local_string_generator.rb
index 554299ef9..e1312a4b8 100644
--- a/lib/objects/local_string_generator.rb
+++ b/lib/objects/local_string_generator.rb
@@ -30,6 +30,16 @@ class StringGenerator
def read_arguments
# Get command line arguments
+ begin
+ args_array = []
+ ARGF.each_line do |arg|
+ args_array << arg.strip
+ end
+ ARGV.unshift(*args_array)
+ rescue
+ # Do nothing...
+ end
+
opts = get_options
# process option arguments
diff --git a/lib/objects/system.rb b/lib/objects/system.rb
index e08dcdf2d..61f254be3 100644
--- a/lib/objects/system.rb
+++ b/lib/objects/system.rb
@@ -306,22 +306,29 @@ class System
if selected.local_calc_file
Print.verbose 'Module includes local calculation of output. Processing...'
# build arguments
- args_string = '--b64 ' # Sets the flag for decoding base64
+ args_string = "--b64 " # Sets the flag for decoding base64
selected.received_inputs.each do |input_key, input_values|
puts input_values.inspect
input_values.each do |input_element|
if input_key == ''
Print.warn "Warning: output values not directed to module input"
else
- args_string += "'--#{input_key}=#{Base64.strict_encode64(input_element)}' "
+ args_string += "--#{input_key}=#{Base64.strict_encode64(input_element)} "
end
end
end
# execute calculation script and format output to an array of Base64 strings
- command = "ruby #{selected.local_calc_file} #{args_string}"
- Print.verbose "Running: #{command}"
- outputs = `#{command}`.chomp
- unless $?.success?
+ Print.verbose "Running: ruby #{selected.local_calc_file} #{args_string[0..200]} ..."
+ $stdout.sync = true
+ $stderr.sync = true
+ stdout, stderr, status = Open3.capture3("ruby #{selected.local_calc_file}", :stdin_data => args_string)
+ puts stderr
+ outputs = stdout.chomp
+
+ # command = "ruby #{selected.local_calc_file} #{args_string}"
+ # Print.verbose "Running: #{command}"
+ # outputs = `#{command}`.chomp
+ unless status
Print.err "Module failed to run (#{command})"
# TODO: this works, but subsequent attempts at resolving the scenario always fail ("Error can't add no data...")
raise 'failed'
diff --git a/lib/schemas/encoder_metadata_schema.xsd b/lib/schemas/encoder_metadata_schema.xsd
index 4bcaa06ec..e9acdb4d7 100644
--- a/lib/schemas/encoder_metadata_schema.xsd
+++ b/lib/schemas/encoder_metadata_schema.xsd
@@ -11,6 +11,13 @@
+
+
+
+
+
+
+
@@ -32,6 +39,7 @@
+
diff --git a/lib/schemas/scenario_schema.xsd b/lib/schemas/scenario_schema.xsd
index 528cdc50d..e1038d354 100644
--- a/lib/schemas/scenario_schema.xsd
+++ b/lib/schemas/scenario_schema.xsd
@@ -125,6 +125,7 @@
+
diff --git a/modules/encoders/bases/base32/base32.pp b/modules/encoders/bases/base32/base32.pp
deleted file mode 100644
index e69de29bb..000000000
diff --git a/modules/encoders/bases/base32/manifests/.no_puppet b/modules/encoders/bases/base32/manifests/.no_puppet
deleted file mode 100644
index e69de29bb..000000000
diff --git a/modules/encoders/bases/base32/secgen_local/local.rb b/modules/encoders/bases/base32/secgen_local/local.rb
deleted file mode 100644
index ee0679e2c..000000000
--- a/modules/encoders/bases/base32/secgen_local/local.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/ruby
-require 'bases'
-require_relative '../../../../../lib/objects/local_string_encoder.rb'
-class BASE32Encoder < StringEncoder
- def initialize
- super
- self.module_name = 'BASE32 Encoder'
- self.strings_to_encode = ['test']
- end
-
- def encode(str)
- byte_array = str.bytes
- byte_array.each { |byte|
- Bases.val(byte).in_hex.to_base(64)
- }
- test = Bases.val(binary).in_base(10).to_base(64)
-
- test
- end
-end
-
-BASE32Encoder.new.run
diff --git a/modules/encoders/bases/base32/secgen_metadata.xml b/modules/encoders/bases/base32/secgen_metadata.xml
deleted file mode 100644
index 7e86adb73..000000000
--- a/modules/encoders/bases/base32/secgen_metadata.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- BASE64 Encoder
- Z. Cliffe Schreuders
- MIT
- Converts to BASE64 encoding.
-
- string_encoder
- ascii_reversible
- alpha_reversible
- linux
- windows
-
- Encoded using Base64. Decoding tools available online e.g. https://www.base64decode.org/
-
- strings_to_encode
- base64_options
-
- encoded_strings
-
-
\ No newline at end of file
diff --git a/modules/encoders/cipher/braille/secgen_local/local.rb b/modules/encoders/cipher/braille/secgen_local/local.rb
index 59c20fffc..63afe4925 100644
--- a/modules/encoders/cipher/braille/secgen_local/local.rb
+++ b/modules/encoders/cipher/braille/secgen_local/local.rb
@@ -1,6 +1,7 @@
#!/usr/bin/ruby
require_relative '../../../../../lib/objects/local_string_encoder.rb'
require 'braille'
+require 'braille/translator'
class BrailleEncoder < StringEncoder
diff --git a/modules/encoders/compression/huffman/secgen_metadata.xml b/modules/encoders/compression/huffman/secgen_metadata.xml
index 6c7004b63..9b0c584fe 100644
--- a/modules/encoders/compression/huffman/secgen_metadata.xml
+++ b/modules/encoders/compression/huffman/secgen_metadata.xml
@@ -9,10 +9,10 @@
Encodes a string with Huffman compression. Outputs a huffman string and png.
huffman_encoder
- ascii_reversible
- string_encoder
+ compression
linux
windows
+ high
https://github.com/nicanor/braille
diff --git a/modules/generators/structured_content/account/secgen_metadata.xml b/modules/generators/structured_content/account/secgen_metadata.xml
index 37f9990f7..5b731c881 100644
--- a/modules/generators/structured_content/account/secgen_metadata.xml
+++ b/modules/generators/structured_content/account/secgen_metadata.xml
@@ -17,8 +17,8 @@
username
password
super_user
- strings_to_leak
- leaked_filenames
+ data_to_leak
+
@@ -29,12 +29,12 @@
false
-
+
-
-
-
+
+
+
account
diff --git a/scenarios/ctf/encoding_challenges.xml b/scenarios/ctf/encoding_challenges.xml
new file mode 100644
index 000000000..3179be85a
--- /dev/null
+++ b/scenarios/ctf/encoding_challenges.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+ Encoding Challenges
+ Thomas Shaw
+ Single system narrative-based CTF challenge.
+
+ ctf
+ attack-ctf
+ web-hints
+ intermediate
+
+
+
+ system
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ challenger
+
+
+ tiaspbiqe2r
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+