ronin 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/FAQ.txt +103 -0
- data/History.txt +10 -1
- data/Manifest.txt +26 -0
- data/Rakefile +2 -0
- data/TODO.txt +9 -2
- data/lib/ronin/arch.rb +9 -2
- data/lib/ronin/author.rb +9 -10
- data/lib/ronin/chars/chars.rb +1 -1
- data/lib/ronin/console.rb +5 -5
- data/lib/ronin/context.rb +1 -1
- data/lib/ronin/database.rb +8 -3
- data/lib/ronin/extensions/string.rb +1 -1
- data/lib/ronin/extensions/uri/http.rb +1 -1
- data/lib/ronin/license.rb +4 -0
- data/lib/ronin/model.rb +8 -0
- data/lib/ronin/models.rb +1 -8
- data/lib/ronin/network/extensions/telnet/net.rb +11 -6
- data/lib/ronin/network/extensions/udp/net.rb +0 -12
- data/lib/ronin/objects.rb +1 -3
- data/lib/ronin/parameters/parameters.rb +26 -15
- data/lib/ronin/platform.rb +4 -1
- data/lib/ronin/product.rb +3 -0
- data/lib/ronin/runner/program/program.rb +4 -2
- data/lib/ronin/sessions/esmtp.rb +2 -10
- data/lib/ronin/sessions/imap.rb +1 -9
- data/lib/ronin/sessions/pop3.rb +1 -9
- data/lib/ronin/sessions/session.rb +20 -19
- data/lib/ronin/sessions/smtp.rb +1 -9
- data/lib/ronin/sessions/tcp.rb +1 -21
- data/lib/ronin/sessions/telnet.rb +1 -9
- data/lib/ronin/sessions/udp.rb +1 -21
- data/lib/ronin/sessions/web.rb +1 -9
- data/lib/ronin/target.rb +3 -0
- data/lib/ronin/version.rb +1 -1
- data/spec/arch_spec.rb +61 -0
- data/spec/author_spec.rb +10 -0
- data/spec/chars/chars_spec.rb +82 -0
- data/spec/context/context_spec.rb +84 -0
- data/spec/context/helpers/book_context.rb +15 -0
- data/spec/context/helpers/book_review_context.rb +21 -0
- data/spec/context/helpers/contexts/neuromancer_review.rb +15 -0
- data/spec/context/helpers/contexts/snow_crash.rb +8 -0
- data/spec/extensions/hash_spec.rb +38 -0
- data/spec/extensions/string_spec.rb +13 -0
- data/spec/extensions/uri/http_spec.rb +40 -0
- data/spec/extensions/uri/query_params_spec.rb +38 -0
- data/spec/formatting/binary_spec.rb +65 -0
- data/spec/formatting/digest_spec.rb +54 -0
- data/spec/formatting/html_spec.rb +37 -0
- data/spec/formatting/http_spec.rb +44 -0
- data/spec/formatting/text_spec.rb +21 -0
- data/spec/license_spec.rb +20 -0
- data/spec/parameters/parameters_spec.rb +109 -0
- data/spec/path_spec.rb +34 -0
- data/spec/platform_spec.rb +24 -0
- data/spec/product_spec.rb +16 -0
- data/spec/ronin_spec.rb +11 -0
- data/spec/sessions/session_spec.rb +56 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/target_spec.rb +16 -0
- metadata +39 -2
@@ -42,18 +42,6 @@ module Net
|
|
42
42
|
return sock
|
43
43
|
end
|
44
44
|
|
45
|
-
#
|
46
|
-
# Creates a new UDPSocket object with the specified _rhost_
|
47
|
-
# _rport_, and the given _lhost_ and _lport_. The specified _block_
|
48
|
-
# will be passed the first line received from the UDPSocket object.
|
49
|
-
# The newly created UDPSocket object will be returned.
|
50
|
-
#
|
51
|
-
def Net.udp_connect_and_recv(rhost,rport,lhost=nil,lport=nil,&block)
|
52
|
-
Net.udp_connect(rhost,rport,lhost,lport) do |sock|
|
53
|
-
block.call(sock.read) if block
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
45
|
#
|
58
46
|
# Creates a new UDPSocket object with the specified _rhost_
|
59
47
|
# _rport_, and the given _lhost_ and _lport_. The specified _data_ will
|
data/lib/ronin/objects.rb
CHANGED
@@ -43,13 +43,13 @@ module Ronin
|
|
43
43
|
#
|
44
44
|
# parameter 'var'
|
45
45
|
#
|
46
|
-
# parameter 'var', :
|
46
|
+
# parameter 'var', :default => 3, :description => 'my variable'
|
47
47
|
#
|
48
48
|
def parameter(name,options={})
|
49
49
|
name = name.to_sym
|
50
50
|
|
51
51
|
# add the parameter to the class params list
|
52
|
-
params[name] = ClassParam.new(name,options[:description],options[:
|
52
|
+
params[name] = ClassParam.new(name,options[:description],options[:default])
|
53
53
|
|
54
54
|
# define the reader class method for the parameter
|
55
55
|
meta_def(name) do
|
@@ -73,10 +73,10 @@ module Ronin
|
|
73
73
|
def get_param(name)
|
74
74
|
name = name.to_sym
|
75
75
|
|
76
|
-
ancestors.each do |
|
77
|
-
if
|
78
|
-
if
|
79
|
-
return
|
76
|
+
ancestors.each do |ancestor|
|
77
|
+
if ancestor.include?(Parameters)
|
78
|
+
if ancestor.params.has_key?(name)
|
79
|
+
return ancestor.params[name]
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -91,9 +91,9 @@ module Ronin
|
|
91
91
|
def has_param?(name)
|
92
92
|
name = name.to_sym
|
93
93
|
|
94
|
-
ancestors.each do |
|
95
|
-
if
|
96
|
-
return true if
|
94
|
+
ancestors.each do |ancestor|
|
95
|
+
if ancestor.include?(Parameters)
|
96
|
+
return true if ancestor.params.has_key?(name)
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
@@ -105,9 +105,9 @@ module Ronin
|
|
105
105
|
# specified _block_.
|
106
106
|
#
|
107
107
|
def each_param(&block)
|
108
|
-
ancestors.each do |
|
109
|
-
if
|
110
|
-
|
108
|
+
ancestors.each do |ancestor|
|
109
|
+
if ancestor.include?(Parameters)
|
110
|
+
ancestor.params.each_value(&block)
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
@@ -159,13 +159,13 @@ module Ronin
|
|
159
159
|
#
|
160
160
|
# obj.parameter('var')
|
161
161
|
#
|
162
|
-
# obj.parameter('var',:
|
162
|
+
# obj.parameter('var',:default => 3, :description => 'my variable')
|
163
163
|
#
|
164
164
|
def parameter(name,options={})
|
165
165
|
name = name.to_sym
|
166
166
|
|
167
167
|
# set the instance variable
|
168
|
-
instance_variable_set("@#{name}",options[:
|
168
|
+
instance_variable_set("@#{name}",options[:default])
|
169
169
|
|
170
170
|
# add the new parameter
|
171
171
|
params[name] = InstanceParam.new(self,name,options[:description])
|
@@ -247,8 +247,19 @@ module Ronin
|
|
247
247
|
get_param(name).value
|
248
248
|
end
|
249
249
|
|
250
|
-
|
250
|
+
#
|
251
|
+
# Sets the values of the parameters listed in the specified _values_.
|
252
|
+
#
|
253
|
+
# obj.set_params(:rhost => 'www.example.com', :rport => 80)
|
254
|
+
# # => {:rhost=>"www.example.com", :rport=>80}
|
255
|
+
#
|
256
|
+
def set_params(values={})
|
257
|
+
values.each do |name,value|
|
258
|
+
get_param(name).value = value
|
259
|
+
end
|
260
|
+
end
|
251
261
|
|
262
|
+
protected
|
252
263
|
|
253
264
|
#
|
254
265
|
# Initializes the specified class _param_.
|
data/lib/ronin/platform.rb
CHANGED
@@ -37,6 +37,9 @@ module Ronin
|
|
37
37
|
# Version of the Operating System
|
38
38
|
property :version, String
|
39
39
|
|
40
|
+
# Validates
|
41
|
+
validates_present :os, :version
|
42
|
+
|
40
43
|
#
|
41
44
|
# Returns the String form of the Platform.
|
42
45
|
#
|
@@ -72,7 +75,7 @@ module Ronin
|
|
72
75
|
method_name = name.to_method_name
|
73
76
|
|
74
77
|
meta_def(method_name) do
|
75
|
-
Platform.
|
78
|
+
Platform.new(:os => name)
|
76
79
|
end
|
77
80
|
|
78
81
|
meta_def("#{method_name}_version") do |version|
|
data/lib/ronin/product.rb
CHANGED
@@ -113,9 +113,11 @@ module Ronin
|
|
113
113
|
else
|
114
114
|
puts 'Available commands:'
|
115
115
|
|
116
|
-
Program.commands.
|
116
|
+
Program.commands.sort_by { |cmd|
|
117
|
+
cmd.command_names.first
|
118
|
+
}.each { |cmd|
|
117
119
|
puts " #{cmd.command_names.join(', ')}"
|
118
|
-
|
120
|
+
}
|
119
121
|
end
|
120
122
|
end
|
121
123
|
|
data/lib/ronin/sessions/esmtp.rb
CHANGED
@@ -26,10 +26,10 @@ require 'ronin/network/esmtp'
|
|
26
26
|
|
27
27
|
module Ronin
|
28
28
|
module Sessions
|
29
|
-
module
|
29
|
+
module ESMTP
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :esmtp_host, :description => 'ESMTP host'
|
34
34
|
parameter :esmtp_port, :description => 'ESMTP port'
|
35
35
|
|
@@ -38,14 +38,6 @@ module Ronin
|
|
38
38
|
parameter :esmtp_password, :description => 'ESMTP password'
|
39
39
|
end
|
40
40
|
|
41
|
-
def self.included(base)
|
42
|
-
Session.setup_class(base,&ESMTP_SESSION)
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.extended(obj)
|
46
|
-
Session.setup_object(obj,&ESMTP_SESSION)
|
47
|
-
end
|
48
|
-
|
49
41
|
protected
|
50
42
|
|
51
43
|
def esmtp_message(options={},&block)
|
data/lib/ronin/sessions/imap.rb
CHANGED
@@ -29,7 +29,7 @@ module Ronin
|
|
29
29
|
module IMAP
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :imap_host, :description => 'IMAP host'
|
34
34
|
parameter :imap_port, :description => 'IMAP port'
|
35
35
|
|
@@ -38,14 +38,6 @@ module Ronin
|
|
38
38
|
parameter :imap_password, :description => 'IMAP password'
|
39
39
|
end
|
40
40
|
|
41
|
-
def self.included(base)
|
42
|
-
Session.setup_class(base,&IMAP_SESSION)
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.extended(obj)
|
46
|
-
Session.setup_object(obj,&IMAP_SESSION)
|
47
|
-
end
|
48
|
-
|
49
41
|
protected
|
50
42
|
|
51
43
|
def imap_connect(options={},&block)
|
data/lib/ronin/sessions/pop3.rb
CHANGED
@@ -29,7 +29,7 @@ module Ronin
|
|
29
29
|
module POP3
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :pop3_host, :description => 'POP3 host'
|
34
34
|
parameter :pop3_port, :description => 'POP3 port'
|
35
35
|
|
@@ -37,14 +37,6 @@ module Ronin
|
|
37
37
|
parameter :pop3_password, :description => 'POP3 password'
|
38
38
|
end
|
39
39
|
|
40
|
-
def self.included(base)
|
41
|
-
Session.setup_class(base,&POP3_SESSION)
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.extended(obj)
|
45
|
-
Session.setup_object(obj,&POP3_SESSION)
|
46
|
-
end
|
47
|
-
|
48
40
|
protected
|
49
41
|
|
50
42
|
def pop3_connect(options={},&block)
|
@@ -21,31 +21,32 @@
|
|
21
21
|
#++
|
22
22
|
#
|
23
23
|
|
24
|
+
require 'ronin/extensions/meta'
|
24
25
|
require 'ronin/parameters'
|
25
26
|
|
26
27
|
module Ronin
|
27
28
|
module Sessions
|
28
29
|
module Session
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
def self.included(base)
|
31
|
+
base.module_eval do
|
32
|
+
def self.setup_session(&block)
|
33
|
+
#
|
34
|
+
# Includes Parameters and runs the _block_.
|
35
|
+
#
|
36
|
+
metaclass_def(:included) do |base_class|
|
37
|
+
base_class.class_eval { include Parameters }
|
38
|
+
base_class.class_eval(&block)
|
39
|
+
end
|
36
40
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
obj.instance_eval(&block)
|
47
|
-
|
48
|
-
return obj
|
41
|
+
#
|
42
|
+
# Extends Parameters and runs the specified _block_.
|
43
|
+
#
|
44
|
+
metaclass_def(:extended) do |base_obj|
|
45
|
+
base_obj.extend Parameters
|
46
|
+
base_obj.instance_eval(&block)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
data/lib/ronin/sessions/smtp.rb
CHANGED
@@ -29,7 +29,7 @@ module Ronin
|
|
29
29
|
module SMTP
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :smtp_host, :description => 'SMTP host'
|
34
34
|
parameter :smtp_port, :description => 'SMTP port'
|
35
35
|
|
@@ -38,14 +38,6 @@ module Ronin
|
|
38
38
|
parameter :smtp_password, :description => 'SMTP password'
|
39
39
|
end
|
40
40
|
|
41
|
-
def self.included(base)
|
42
|
-
Session.setup_class(base,&SMTP_SESSION)
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.extended(obj)
|
46
|
-
Session.setup_object(obj,&SMTP_SESSION)
|
47
|
-
end
|
48
|
-
|
49
41
|
protected
|
50
42
|
|
51
43
|
def smtp_message(options={},&block)
|
data/lib/ronin/sessions/tcp.rb
CHANGED
@@ -29,7 +29,7 @@ module Ronin
|
|
29
29
|
module TCP
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :lhost, :description => 'TCP local host'
|
34
34
|
parameter :lport, :description => 'TCP local port'
|
35
35
|
|
@@ -37,14 +37,6 @@ module Ronin
|
|
37
37
|
parameter :rport, :description => 'TCP remote port'
|
38
38
|
end
|
39
39
|
|
40
|
-
def self.included(base)
|
41
|
-
Session.setup_class(base,&TCP_SESSION)
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.extended(obj)
|
45
|
-
Session.setup_object(obj,&TCP_SESSION)
|
46
|
-
end
|
47
|
-
|
48
40
|
protected
|
49
41
|
|
50
42
|
def tcp_connect(&block)
|
@@ -59,18 +51,6 @@ module Ronin
|
|
59
51
|
return ::Net.tcp_connect(@rhost,@rport,@lhost,@lport,&block)
|
60
52
|
end
|
61
53
|
|
62
|
-
def tcp_connect_and_recv(&block)
|
63
|
-
unless @rhost
|
64
|
-
raise(ParamNotFound,"Missing parameter '#{describe_param(:rhost)}'",caller)
|
65
|
-
end
|
66
|
-
|
67
|
-
unless @rport
|
68
|
-
raise(ParamNotFound,"Missing parameter '#{describe_param(:rport)}'",caller)
|
69
|
-
end
|
70
|
-
|
71
|
-
return ::Net.tcp_connect_and_recv(@rhost,@rport,@lhost,@lport,&block)
|
72
|
-
end
|
73
|
-
|
74
54
|
def tcp_connect_and_send(data,&block)
|
75
55
|
unless @rhost
|
76
56
|
raise(ParamNotFound,"Missing parameter '#{describe_param(:rhost)}'",caller)
|
@@ -29,7 +29,7 @@ module Ronin
|
|
29
29
|
module TELNET
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :telnet_host, :description => 'Telnet host'
|
34
34
|
parameter :telnet_port, :value => Network::Telnet.default_port, :description => 'Telnet port'
|
35
35
|
|
@@ -40,14 +40,6 @@ module Ronin
|
|
40
40
|
parameter :telnet_ssl, :description => 'Telnet SSL options'
|
41
41
|
end
|
42
42
|
|
43
|
-
def self.included(base)
|
44
|
-
Session.setup_class(base,&TELNET_SESSION)
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.extended(obj)
|
48
|
-
Session.setup_object(obj,&TELNET_SESSION)
|
49
|
-
end
|
50
|
-
|
51
43
|
protected
|
52
44
|
|
53
45
|
def telnet_connect(options={},&block)
|
data/lib/ronin/sessions/udp.rb
CHANGED
@@ -29,7 +29,7 @@ module Ronin
|
|
29
29
|
module UDP
|
30
30
|
include Parameters
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :lhost, :description => 'local host'
|
34
34
|
parameter :lport, :description => 'local port'
|
35
35
|
|
@@ -37,14 +37,6 @@ module Ronin
|
|
37
37
|
parameter :rport, :description => 'remote port'
|
38
38
|
end
|
39
39
|
|
40
|
-
def self.included(base)
|
41
|
-
Session.setup_class(base,&UDP_SESSION)
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.extended(obj)
|
45
|
-
Session.setup_object(obj,&UDP_SESSION)
|
46
|
-
end
|
47
|
-
|
48
40
|
protected
|
49
41
|
|
50
42
|
def udp_connect(&block)
|
@@ -59,18 +51,6 @@ module Ronin
|
|
59
51
|
return ::Net.udp_connect(@rhost,@rport,@lhost,@lport,&block)
|
60
52
|
end
|
61
53
|
|
62
|
-
def udp_connect_and_recv(&block)
|
63
|
-
unless @rhost
|
64
|
-
raise(ParamNotFound,"Missing '#{describe_param(:rhost)}' parameter",caller)
|
65
|
-
end
|
66
|
-
|
67
|
-
unless @rport
|
68
|
-
raise(ParamNotFound,"Missing '#{describe_param(:rport)}' parameter",caller)
|
69
|
-
end
|
70
|
-
|
71
|
-
return ::Net.udp_connect_and_recv(@rhost,@rport,@lhost,@lport,&block)
|
72
|
-
end
|
73
|
-
|
74
54
|
def udp_connect_and_send(data,&block)
|
75
55
|
unless @rhost
|
76
56
|
raise(ParamNotFound,"Missing '#{describe_param(:rhost)}' parameter",caller)
|
data/lib/ronin/sessions/web.rb
CHANGED
@@ -29,19 +29,11 @@ module Ronin
|
|
29
29
|
module Web
|
30
30
|
include Session
|
31
31
|
|
32
|
-
|
32
|
+
setup_session do
|
33
33
|
parameter :web_proxy, :value => Ronin::Web.proxy, :description => 'Web Proxy'
|
34
34
|
parameter :web_user_agent, :value => Ronin::Web.user_agent, :description => 'Web User-Agent'
|
35
35
|
end
|
36
36
|
|
37
|
-
def self.included(base)
|
38
|
-
Session.setup_class(base,&WEB_SESSION)
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.extended(obj)
|
42
|
-
Session.setup_object(obj,&WEB_SESSION)
|
43
|
-
end
|
44
|
-
|
45
37
|
protected
|
46
38
|
|
47
39
|
def web_agent(options={},&block)
|