librex 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README +4 -0
- data/lib/rex/exploitation/cmdstager.rb +9 -133
- data/lib/rex/exploitation/cmdstager/base.rb +170 -0
- data/lib/rex/exploitation/cmdstager/debug_asm.rb +142 -0
- data/lib/rex/exploitation/cmdstager/debug_write.rb +136 -0
- data/lib/rex/exploitation/cmdstager/tftp.rb +63 -0
- data/lib/rex/exploitation/cmdstager/vbs.rb +128 -0
- data/lib/rex/io/stream.rb +2 -2
- data/lib/rex/io/stream_server.rb +1 -1
- data/lib/rex/job_container.rb +7 -6
- data/lib/rex/mime/header.rb +12 -10
- data/lib/rex/mime/message.rb +57 -26
- data/lib/rex/ole/directory.rb +5 -4
- data/lib/rex/ole/samples/create_ole.rb +0 -0
- data/lib/rex/ole/samples/dir.rb +0 -0
- data/lib/rex/ole/samples/dump_stream.rb +1 -1
- data/lib/rex/ole/samples/ole_info.rb +0 -0
- data/lib/rex/parser/nexpose_xml.rb +131 -0
- data/lib/rex/parser/nmap_xml.rb +1 -0
- data/lib/rex/peparsey/pe.rb +21 -3
- data/lib/rex/post/meterpreter/client.rb +6 -1
- data/lib/rex/post/meterpreter/client_core.rb +2 -2
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +19 -18
- data/lib/rex/post/meterpreter/packet.rb +68 -0
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +2 -2
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +5 -5
- data/lib/rex/post/meterpreter/ui/console.rb +2 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +5 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +2 -2
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +0 -0
- data/lib/rex/proto/http/client.rb +8 -3
- data/lib/rex/proto/http/packet.rb +11 -1
- data/lib/rex/proto/smb/client.rb +1 -1
- data/lib/rex/proto/smb/utils.rb +72 -24
- data/lib/rex/proto/tftp.rb +3 -0
- data/lib/rex/proto/tftp/constants.rb +37 -0
- data/lib/rex/proto/tftp/server.rb +249 -0
- data/lib/rex/proto/tftp/server.rb.ut.rb +28 -0
- data/lib/rex/script/meterpreter.rb +6 -0
- data/lib/rex/services/local_relay.rb +2 -2
- data/lib/rex/socket/ip.rb +9 -8
- data/lib/rex/socket/range_walker.rb +43 -5
- data/lib/rex/socket/udp.rb +11 -4
- data/lib/rex/text.rb +42 -19
- data/lib/rex/ui/interactive.rb +24 -22
- data/lib/rex/ui/text/irb_shell.rb +4 -2
- data/lib/rex/ui/text/output/file.rb +6 -0
- data/lib/rex/ui/text/shell.rb +14 -18
- data/lib/rex/zip/samples/comment.rb +0 -0
- data/lib/rex/zip/samples/mkwar.rb +0 -0
- data/lib/rex/zip/samples/mkzip.rb +0 -0
- data/lib/rex/zip/samples/recursive.rb +0 -0
- metadata +20 -5
@@ -39,7 +39,7 @@ class IrbShell
|
|
39
39
|
IRB.conf[:MAIN_CONTEXT] = irb.context
|
40
40
|
|
41
41
|
# Trap interrupt
|
42
|
-
trap("SIGINT") do
|
42
|
+
old_sigint = trap("SIGINT") do
|
43
43
|
irb.signal_handle
|
44
44
|
end
|
45
45
|
|
@@ -47,9 +47,11 @@ class IrbShell
|
|
47
47
|
catch(:IRB_EXIT) do
|
48
48
|
irb.eval_input
|
49
49
|
end
|
50
|
+
|
51
|
+
trap("SIGINT", old_sigint)
|
50
52
|
end
|
51
53
|
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
55
|
-
end
|
57
|
+
end
|
@@ -25,10 +25,16 @@ class Output::File < Rex::Ui::Text::Output
|
|
25
25
|
# Prints the supplied message to file output.
|
26
26
|
#
|
27
27
|
def print_raw(msg = '')
|
28
|
+
return if not self.fd
|
28
29
|
self.fd.write(msg)
|
29
30
|
self.fd.flush
|
30
31
|
msg
|
31
32
|
end
|
33
|
+
|
34
|
+
def close
|
35
|
+
self.fd.close if self.fd
|
36
|
+
self.fd = nil
|
37
|
+
end
|
32
38
|
end
|
33
39
|
|
34
40
|
end
|
data/lib/rex/ui/text/shell.rb
CHANGED
@@ -37,10 +37,6 @@ module Shell
|
|
37
37
|
# Initializes a shell that has a prompt and can be interacted with.
|
38
38
|
#
|
39
39
|
def initialize(prompt, prompt_char = '>', histfile = nil)
|
40
|
-
# Don't initialize the UI here since it will clobber any existing tab
|
41
|
-
# completion routines prematurely. Instead, wait for the user to
|
42
|
-
# interact. See bug 1180
|
43
|
-
|
44
40
|
# Set the stop flag to false
|
45
41
|
self.stop_flag = false
|
46
42
|
self.disable_output = false
|
@@ -53,28 +49,28 @@ module Shell
|
|
53
49
|
self.histfile = histfile
|
54
50
|
end
|
55
51
|
|
52
|
+
def init_tab_complete
|
53
|
+
if (self.input and self.input.supports_readline)
|
54
|
+
self.input = Input::Readline.new(lambda { |str| tab_complete(str) })
|
55
|
+
if histfile and File.exists?(histfile)
|
56
|
+
File.readlines(histfile).each { |e|
|
57
|
+
Readline::HISTORY << e.chomp
|
58
|
+
}
|
59
|
+
end
|
60
|
+
self.input.output = self.output
|
61
|
+
update_prompt(input.prompt)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
56
65
|
#
|
57
66
|
# Initializes the user interface input/output classes.
|
58
67
|
#
|
59
68
|
def init_ui(in_input = nil, in_output = nil)
|
60
|
-
|
61
69
|
# Initialize the input and output methods
|
62
70
|
self.input = in_input
|
63
71
|
self.output = in_output
|
64
72
|
|
65
73
|
if (self.input)
|
66
|
-
begin
|
67
|
-
if (self.input.supports_readline)
|
68
|
-
self.input = Input::Readline.new(lambda { |str| tab_complete(str) })
|
69
|
-
if histfile and File.exists?(histfile)
|
70
|
-
File.readlines(histfile).each { |e|
|
71
|
-
Readline::HISTORY << e.chomp
|
72
|
-
}
|
73
|
-
end
|
74
|
-
end
|
75
|
-
rescue
|
76
|
-
end
|
77
|
-
|
78
74
|
# Extend the input medium as an input shell if the input medium
|
79
75
|
# isn't intrinsicly a shell.
|
80
76
|
if (self.input.intrinsic_shell? == false)
|
@@ -83,7 +79,6 @@ module Shell
|
|
83
79
|
|
84
80
|
self.input.output = self.output
|
85
81
|
end
|
86
|
-
|
87
82
|
update_prompt('')
|
88
83
|
end
|
89
84
|
|
@@ -126,6 +121,7 @@ module Shell
|
|
126
121
|
# If the stop flag was set or we've hit EOF, break out
|
127
122
|
break if (self.stop_flag or self.stop_count > 1)
|
128
123
|
|
124
|
+
init_tab_complete
|
129
125
|
line = input.pgets
|
130
126
|
log_output(input.prompt)
|
131
127
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Metasploit Development Team
|
@@ -15,11 +16,11 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-
|
19
|
+
date: 2010-06-25 00:00:00 -05:00
|
19
20
|
default_executable:
|
20
21
|
dependencies: []
|
21
22
|
|
22
|
-
description: Rex provides a variety of classes useful for security testing and exploit development. Based on svn revision
|
23
|
+
description: Rex provides a variety of classes useful for security testing and exploit development. Based on svn revision 9625
|
23
24
|
email:
|
24
25
|
- hdm@metasploit.com
|
25
26
|
- jacob.hammack@hammackj.com
|
@@ -83,6 +84,11 @@ files:
|
|
83
84
|
- lib/rex/encoding/xor.rb.ts.rb
|
84
85
|
- lib/rex/exceptions.rb
|
85
86
|
- lib/rex/exceptions.rb.ut.rb
|
87
|
+
- lib/rex/exploitation/cmdstager/base.rb
|
88
|
+
- lib/rex/exploitation/cmdstager/debug_asm.rb
|
89
|
+
- lib/rex/exploitation/cmdstager/debug_write.rb
|
90
|
+
- lib/rex/exploitation/cmdstager/tftp.rb
|
91
|
+
- lib/rex/exploitation/cmdstager/vbs.rb
|
86
92
|
- lib/rex/exploitation/cmdstager.rb
|
87
93
|
- lib/rex/exploitation/egghunter.rb
|
88
94
|
- lib/rex/exploitation/egghunter.rb.ut.rb
|
@@ -145,6 +151,7 @@ files:
|
|
145
151
|
- lib/rex/parser/arguments.rb.ut.rb
|
146
152
|
- lib/rex/parser/ini.rb
|
147
153
|
- lib/rex/parser/ini.rb.ut.rb
|
154
|
+
- lib/rex/parser/nexpose_xml.rb
|
148
155
|
- lib/rex/parser/nmap_xml.rb
|
149
156
|
- lib/rex/payloads/win32/common.rb
|
150
157
|
- lib/rex/payloads/win32/kernel/common.rb
|
@@ -310,6 +317,10 @@ files:
|
|
310
317
|
- lib/rex/proto/smb.rb.ts.rb
|
311
318
|
- lib/rex/proto/sunrpc/client.rb
|
312
319
|
- lib/rex/proto/sunrpc.rb
|
320
|
+
- lib/rex/proto/tftp/constants.rb
|
321
|
+
- lib/rex/proto/tftp/server.rb
|
322
|
+
- lib/rex/proto/tftp/server.rb.ut.rb
|
323
|
+
- lib/rex/proto/tftp.rb
|
313
324
|
- lib/rex/proto.rb
|
314
325
|
- lib/rex/proto.rb.ts.rb
|
315
326
|
- lib/rex/script/base.rb
|
@@ -409,25 +420,29 @@ rdoc_options: []
|
|
409
420
|
require_paths:
|
410
421
|
- lib
|
411
422
|
required_ruby_version: !ruby/object:Gem::Requirement
|
423
|
+
none: false
|
412
424
|
requirements:
|
413
425
|
- - ">="
|
414
426
|
- !ruby/object:Gem::Version
|
427
|
+
hash: 57
|
415
428
|
segments:
|
416
429
|
- 1
|
417
430
|
- 8
|
418
431
|
- 7
|
419
432
|
version: 1.8.7
|
420
433
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
434
|
+
none: false
|
421
435
|
requirements:
|
422
436
|
- - ">="
|
423
437
|
- !ruby/object:Gem::Version
|
438
|
+
hash: 3
|
424
439
|
segments:
|
425
440
|
- 0
|
426
441
|
version: "0"
|
427
442
|
requirements: []
|
428
443
|
|
429
444
|
rubyforge_project:
|
430
|
-
rubygems_version: 1.3.
|
445
|
+
rubygems_version: 1.3.7
|
431
446
|
signing_key:
|
432
447
|
specification_version: 3
|
433
448
|
summary: Ruby Exploitation library
|