1
1
# -*- coding: binary -*-
2
2
##
3
- # $Id: bourne.rb 12595 2011-05-12 18:33:49Z zeroSteiner $
3
+ # $Id: bourne.rb
4
4
##
5
5
6
6
require 'rex/text'
@@ -17,11 +17,10 @@ def initialize(exe)
17
17
18
18
@var_encoded = Rex ::Text . rand_text_alpha ( 5 )
19
19
@var_decoded = Rex ::Text . rand_text_alpha ( 5 )
20
- @decoder = nil # filled in later
21
20
end
22
21
23
22
def generate ( opts = { } )
24
- opts . merge! ( { :temp => '/tmp/' } )
23
+ opts [ :temp ] = opts [ :temp ] || '/tmp/'
25
24
super
26
25
end
27
26
@@ -30,7 +29,7 @@ def generate(opts = {})
30
29
#
31
30
def generate_cmds ( opts )
32
31
# Set the start/end of the commands here (vs initialize) so we have @tempdir
33
- @cmd_start = "echo "
32
+ @cmd_start = "echo -n "
34
33
@cmd_end = ">>#{ @tempdir } #{ @var_encoded } .b64"
35
34
xtra_len = @cmd_start . length + @cmd_end . length + 1
36
35
opts . merge! ( { :extra => xtra_len } )
@@ -71,13 +70,13 @@ def parts_to_commands(parts, opts)
71
70
def generate_cmds_decoder ( opts )
72
71
case opts [ :decoder ]
73
72
when 'base64'
74
- decoder = "base64 -d #{ @tempdir } #{ @var_encoded } .b64"
73
+ decoder = "base64 --decode #{ @tempdir } #{ @var_encoded } .b64"
75
74
when 'openssl'
76
75
decoder = "openssl enc -d -A -base64 -in #{ @tempdir } #{ @var_encoded } .b64"
77
76
when 'python'
78
77
decoder = "python -c 'import sys; import base64; print base64.standard_b64decode(sys.stdin.read());' < #{ @tempdir } #{ @var_encoded } .b64"
79
78
when 'perl'
80
- decoder = "perl -MIO -e 'use MIME::Base64; print decode_base64 (<>); ' < #{ @tempdir } #{ @var_encoded } .b64"
79
+ decoder = "perl -MIO -e 'use MIME::Base64; while (<>) { print decode_base64($_); } ' < #{ @tempdir } #{ @var_encoded } .b64"
81
80
end
82
81
decoder << " > #{ @tempdir } #{ @var_decoded } .bin"
83
82
[ decoder ]
0 commit comments