librex 0.0.39 → 0.0.40
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -1
- data/lib/rex/exploitation/javascriptosdetect.rb +6 -1
- data/lib/rex/io/stream_abstraction.rb +4 -1
- data/lib/rex/post/meterpreter/client_core.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +41 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +20 -0
- data/lib/rex/text.rb +24 -0
- metadata +3 -3
data/README.markdown
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
A non-official re-packaging of the Rex library as a gem for easy of usage of the Metasploit REX framework in a non Metasploit application. I received permission from HDM to create this package.
|
4
4
|
|
5
5
|
Currently based on:
|
6
|
-
SVN Revision:
|
6
|
+
SVN Revision: 13097
|
7
7
|
|
8
8
|
# Credits
|
9
9
|
The Metasploit development team <http://www.metasploit.com>
|
@@ -73,6 +73,7 @@ function getVersion(){
|
|
73
73
|
case "344": // opera-9.0-20060616.1-static-qt.i386-en-344
|
74
74
|
case "2091": // opera-9.52-2091.gcc3-shared-qt3.i386.rpm
|
75
75
|
case "2444": // opera-9.60.gcc4-shared-qt3.i386.rpm
|
76
|
+
case "6386": // 10.61
|
76
77
|
os_name = "#{oses::LINUX}";
|
77
78
|
break;
|
78
79
|
case "8502": // "Opera 9 Eng Setup.exe"
|
@@ -82,8 +83,12 @@ function getVersion(){
|
|
82
83
|
case "8801": // "Opera_9.22_Eng_Setup.exe"
|
83
84
|
case "10108": // "Opera_952_10108_en.exe"
|
84
85
|
case "10467": // "Opera_962_en_Setup.exe"
|
86
|
+
case "3445": // 10.61
|
85
87
|
os_name = "#{oses::WINDOWS}";
|
86
88
|
break;
|
89
|
+
case "6386": // 10.61
|
90
|
+
os_name = "#{oses::MAC_OSX}";
|
91
|
+
break;
|
87
92
|
//default:
|
88
93
|
// document.write(opera.buildNumber('inconspicuous'));
|
89
94
|
// break;
|
@@ -133,7 +138,7 @@ function getVersion(){
|
|
133
138
|
if (platform.match(/x86_64/)) {
|
134
139
|
arch = "#{ARCH_X86_64}";
|
135
140
|
} else if (platform.match(/arm/)) {
|
136
|
-
// Android
|
141
|
+
// Android and maemo
|
137
142
|
arch = "#{ARCH_ARMLE}";
|
138
143
|
}
|
139
144
|
} else if (platform.match(/windows/)) {
|
@@ -311,7 +311,8 @@ class ClientCore < Extension
|
|
311
311
|
#
|
312
312
|
def shutdown
|
313
313
|
request = Packet.create_request('core_shutdown')
|
314
|
-
response
|
314
|
+
# Don't wait for the response since the server will be dead
|
315
|
+
self.client.send_packet(request)
|
315
316
|
true
|
316
317
|
end
|
317
318
|
|
@@ -90,6 +90,47 @@ Separator = "\\"
|
|
90
90
|
return response.get_tlv_value(TLV_TYPE_FILE_PATH)
|
91
91
|
end
|
92
92
|
|
93
|
+
|
94
|
+
#
|
95
|
+
# Calculates the MD5 (16-bytes raw) of a remote file
|
96
|
+
#
|
97
|
+
def File.md5(path)
|
98
|
+
request = Packet.create_request('stdapi_fs_md5')
|
99
|
+
|
100
|
+
request.add_tlv(TLV_TYPE_FILE_PATH, path)
|
101
|
+
|
102
|
+
response = client.send_request(request)
|
103
|
+
|
104
|
+
return response.get_tlv_value(TLV_TYPE_FILE_NAME)
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# Calculates the SHA1 (20-bytes raw) of a remote file
|
109
|
+
#
|
110
|
+
def File.sha1(path)
|
111
|
+
request = Packet.create_request('stdapi_fs_sha1')
|
112
|
+
|
113
|
+
request.add_tlv(TLV_TYPE_FILE_PATH, path)
|
114
|
+
|
115
|
+
response = client.send_request(request)
|
116
|
+
|
117
|
+
return response.get_tlv_value(TLV_TYPE_FILE_NAME)
|
118
|
+
end
|
119
|
+
|
120
|
+
#
|
121
|
+
# Expands a file path, substituting all environment variables, such as
|
122
|
+
# %TEMP%.
|
123
|
+
#
|
124
|
+
def File.expand_path(path)
|
125
|
+
request = Packet.create_request('stdapi_fs_file_expand_path')
|
126
|
+
|
127
|
+
request.add_tlv(TLV_TYPE_FILE_PATH, path)
|
128
|
+
|
129
|
+
response = client.send_request(request)
|
130
|
+
|
131
|
+
return response.get_tlv_value(TLV_TYPE_FILE_PATH)
|
132
|
+
end
|
133
|
+
|
93
134
|
#
|
94
135
|
# Performs a stat on a file and returns a FileStat instance.
|
95
136
|
#
|
@@ -39,6 +39,26 @@ class Registry
|
|
39
39
|
# the supplied permissions. Right now this is merely a wrapper around
|
40
40
|
# create_key.
|
41
41
|
#
|
42
|
+
|
43
|
+
def Registry.load_key(root_key,base_key,hive_file)
|
44
|
+
request = Packet.create_request('stdapi_registry_load_key')
|
45
|
+
request.add_tlv(TLV_TYPE_ROOT_KEY, root_key)
|
46
|
+
request.add_tlv(TLV_TYPE_BASE_KEY, base_key)
|
47
|
+
request.add_tlv(TLV_TYPE_FILE_PATH,hive_file)
|
48
|
+
|
49
|
+
response = client.send_request(request)
|
50
|
+
return response.get_tlv(TLV_TYPE_RESULT).value
|
51
|
+
end
|
52
|
+
|
53
|
+
def Registry.unload_key(root_key,base_key)
|
54
|
+
request = Packet.create_request('stdapi_registry_unload_key')
|
55
|
+
request.add_tlv(TLV_TYPE_ROOT_KEY, root_key)
|
56
|
+
request.add_tlv(TLV_TYPE_BASE_KEY, base_key)
|
57
|
+
response = client.send_request(request)
|
58
|
+
return response.get_tlv(TLV_TYPE_RESULT).value
|
59
|
+
end
|
60
|
+
|
61
|
+
|
42
62
|
def Registry.open_key(root_key, base_key, perm = KEY_READ)
|
43
63
|
# If no base key was provided, just return the root_key.
|
44
64
|
if (base_key == nil or base_key.length == 0)
|
data/lib/rex/text.rb
CHANGED
@@ -704,6 +704,30 @@ module Text
|
|
704
704
|
Digest::MD5.hexdigest(str)
|
705
705
|
end
|
706
706
|
|
707
|
+
#
|
708
|
+
# Convert hex-encoded characters to literals.
|
709
|
+
# Example: "AA\\x42CC" becomes "AABCC"
|
710
|
+
#
|
711
|
+
def self.dehex(str)
|
712
|
+
return str unless str.respond_to? :match
|
713
|
+
return str unless str.respond_to? :gsub
|
714
|
+
regex = /\x5cx[0-9a-f]{2}/mi
|
715
|
+
if str.match(regex)
|
716
|
+
str.gsub(regex) { |x| x[2,2].to_i(16).chr }
|
717
|
+
else
|
718
|
+
str
|
719
|
+
end
|
720
|
+
end
|
721
|
+
|
722
|
+
#
|
723
|
+
# Convert and replace hex-encoded characters to literals.
|
724
|
+
#
|
725
|
+
def self.dehex!(str)
|
726
|
+
return str unless str.respond_to? :match
|
727
|
+
return str unless str.respond_to? :gsub
|
728
|
+
regex = /\x5cx[0-9a-f]{2}/mi
|
729
|
+
str.gsub!(regex) { |x| x[2,2].to_i(16).chr }
|
730
|
+
end
|
707
731
|
|
708
732
|
##
|
709
733
|
#
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: librex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.40
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Metasploit Development Team
|
@@ -11,11 +11,11 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-07-04 00:00:00 -05:00
|
15
15
|
default_executable:
|
16
16
|
dependencies: []
|
17
17
|
|
18
|
-
description: Rex provides a variety of classes useful for security testing and exploit development. Based on SVN Revision
|
18
|
+
description: Rex provides a variety of classes useful for security testing and exploit development. Based on SVN Revision 13097
|
19
19
|
email:
|
20
20
|
- hdm@metasploit.com
|
21
21
|
- jacob.hammack@hammackj.com
|