ronin 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
|