ronin 1.0.0.pre4 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/ChangeLog.md +1 -0
- data/Gemfile +3 -1
- data/README.md +17 -19
- data/Rakefile +1 -0
- data/gemspec.yml +2 -1
- data/lib/ronin.rb +3 -0
- data/lib/ronin/address.rb +7 -3
- data/lib/ronin/arch.rb +2 -2
- data/lib/ronin/bootstrap.rb +3 -0
- data/lib/ronin/cached_file.rb +1 -1
- data/lib/ronin/campaign.rb +3 -32
- data/lib/ronin/class_methods.rb +17 -0
- data/lib/ronin/config.rb +25 -24
- data/lib/ronin/credential.rb +3 -0
- data/lib/ronin/database/migrations.rb +0 -1
- data/lib/ronin/database/migrations/create_credentials_table.rb +1 -2
- data/lib/ronin/database/migrations/graph.rb +6 -3
- data/lib/ronin/database/migrations/migration.rb +3 -0
- data/lib/ronin/database/migrations/migrations.rb +2 -2
- data/lib/ronin/email_address.rb +3 -0
- data/lib/ronin/engine/buildable.rb +3 -0
- data/lib/ronin/engine/class_methods.rb +3 -0
- data/lib/ronin/engine/deployable.rb +3 -0
- data/lib/ronin/engine/engine.rb +14 -0
- data/lib/ronin/engine/instance_methods.rb +3 -0
- data/lib/ronin/engine/verifiable.rb +3 -0
- data/lib/ronin/environment.rb +6 -0
- data/lib/ronin/host_name.rb +3 -0
- data/lib/ronin/host_name_ip_address.rb +3 -0
- data/lib/ronin/ip_address.rb +3 -0
- data/lib/ronin/ip_address_mac_address.rb +3 -0
- data/lib/ronin/license.rb +1 -1
- data/lib/ronin/mac_address.rb +3 -0
- data/lib/ronin/model/cacheable/cacheable.rb +1 -1
- data/lib/ronin/model/class_methods.rb +3 -0
- data/lib/ronin/model/has_authors/class_methods.rb +4 -0
- data/lib/ronin/model/has_authors/has_authors.rb +9 -5
- data/lib/ronin/model/has_description/class_methods.rb +4 -0
- data/lib/ronin/model/has_description/has_description.rb +6 -0
- data/lib/ronin/model/has_license/class_methods.rb +4 -0
- data/lib/ronin/model/has_license/has_license.rb +9 -5
- data/lib/ronin/model/has_name/class_methods.rb +4 -0
- data/lib/ronin/model/has_name/has_name.rb +6 -0
- data/lib/ronin/model/has_title/class_methods.rb +4 -0
- data/lib/ronin/model/has_title/has_title.rb +6 -0
- data/lib/ronin/model/has_unique_name.rb +7 -0
- data/lib/ronin/model/has_version/class_methods.rb +4 -0
- data/lib/ronin/model/has_version/has_version.rb +6 -0
- data/lib/ronin/model/model.rb +7 -0
- data/lib/ronin/model/types/description.rb +7 -2
- data/lib/ronin/open_port.rb +3 -0
- data/lib/ronin/organization.rb +3 -0
- data/lib/ronin/os.rb +2 -2
- data/lib/ronin/os_guess.rb +3 -0
- data/lib/ronin/password.rb +4 -1
- data/lib/ronin/port.rb +6 -1
- data/lib/ronin/ronin.rb +8 -0
- data/lib/ronin/service.rb +3 -0
- data/lib/ronin/service_credential.rb +3 -0
- data/lib/ronin/target.rb +3 -4
- data/lib/ronin/tcp_port.rb +4 -1
- data/lib/ronin/udp_port.rb +4 -1
- data/lib/ronin/ui/cli/cli.rb +1 -1
- data/lib/ronin/ui/cli/command.rb +6 -0
- data/lib/ronin/ui/cli/commands/repos.rb +33 -0
- data/lib/ronin/ui/cli/engine_command.rb +3 -0
- data/lib/ronin/ui/cli/model_command.rb +3 -0
- data/lib/ronin/ui/console.rb +5 -1
- data/lib/ronin/ui/hexdump/hexdump.rb +3 -0
- data/lib/ronin/ui/output/helpers.rb +59 -26
- data/lib/ronin/ui/output/output.rb +3 -0
- data/lib/ronin/ui/output/terminal/color.rb +32 -20
- data/lib/ronin/ui/output/terminal/raw.rb +23 -20
- data/lib/ronin/ui/shell.rb +3 -0
- data/lib/ronin/url.rb +8 -5
- data/lib/ronin/url_query_param.rb +3 -0
- data/lib/ronin/url_scheme.rb +3 -0
- data/lib/ronin/user_name.rb +4 -1
- data/lib/ronin/vendor.rb +1 -1
- data/lib/ronin/version.rb +1 -1
- data/lib/ronin/web_credential.rb +4 -1
- data/ronin.gemspec +7 -2
- data/spec/campaign_spec.rb +0 -25
- data/spec/url_spec.rb +5 -2
- metadata +48 -36
- data/lib/ronin/database/migrations/create_remote_files_table.rb +0 -52
- data/lib/ronin/proxy.rb +0 -178
- data/lib/ronin/proxy_credential.rb +0 -29
- data/lib/ronin/remote_file.rb +0 -152
data/.gemtest
ADDED
File without changes
|
data/ChangeLog.md
CHANGED
data/Gemfile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'ore/specification'
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
DATA_MAPPER = 'http://github.com/datamapper'
|
@@ -12,7 +14,7 @@ gemspec
|
|
12
14
|
group :development do
|
13
15
|
gem 'rake', '~> 0.8.7'
|
14
16
|
|
15
|
-
gem 'ore-core', '~> 0.1.
|
17
|
+
gem 'ore-core', '~> 0.1.1'
|
16
18
|
gem 'ore-tasks', '~> 0.3.0'
|
17
19
|
gem 'rspec', '~> 2.3.0'
|
18
20
|
|
data/README.md
CHANGED
@@ -13,26 +13,24 @@ Ronin is a Ruby platform for exploit development and security research.
|
|
13
13
|
Ronin allows for the rapid development and distribution of code, exploits
|
14
14
|
or payloads over many common Source-Code-Management (SCM) systems.
|
15
15
|
|
16
|
-
### Ruby
|
16
|
+
### Hack with Ruby
|
17
17
|
|
18
|
-
Ronin
|
19
|
-
|
20
|
-
for working with data in Ruby, a Ruby Object Database, a customized Ruby
|
21
|
-
Console and an extendable command-line interface.
|
18
|
+
Ronin combines the flexibility of Ruby with countless convenience methods
|
19
|
+
and libraries, to make Ruby usable for Offensive Security or Research work.
|
22
20
|
|
23
|
-
###
|
21
|
+
### Organize Your Data
|
24
22
|
|
25
|
-
Ronin
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
Ronin comes with a Database designed for Security data and accessible from
|
24
|
+
Ruby using [DataMapper](http://datamapper.org). With Ronin, storing or
|
25
|
+
querying IP addresses, Hosts, Ports, URLs, Passwords is as simple as a
|
26
|
+
single line of Ruby.
|
29
27
|
|
30
|
-
###
|
28
|
+
### Share Code
|
31
29
|
|
32
|
-
Ronin allows
|
33
|
-
|
34
|
-
that can be hosted
|
35
|
-
|
30
|
+
Ronin allows sharing code with the community, or just your friends, via
|
31
|
+
Ronin Repositories. Ronin Repositories are like lazier versions of
|
32
|
+
[RubyGems](http://rubygems.org/), that can be hosted with SubVersion,
|
33
|
+
Mercurial or Git.
|
36
34
|
|
37
35
|
## Features
|
38
36
|
|
@@ -42,8 +40,7 @@ to create, install and update Repositories.
|
|
42
40
|
* [Mercurial (Hg)](http://mercurial.selenic.com/)
|
43
41
|
* [Git](http://git-scm.com/)
|
44
42
|
* Rsync
|
45
|
-
* Provides
|
46
|
-
with:
|
43
|
+
* Provides a Database using [DataMapper](http://datamapper.org) with:
|
47
44
|
* {Ronin::Author}
|
48
45
|
* {Ronin::License}
|
49
46
|
* {Ronin::Arch}
|
@@ -79,7 +76,7 @@ to create, install and update Repositories.
|
|
79
76
|
* Pretty-Print loaded.
|
80
77
|
* `print_info`, `print_error`, `print_warning` and `print_debug`
|
81
78
|
output helper methods with color-output.
|
82
|
-
* Provides an
|
79
|
+
* Provides an extensible command-line interface based on
|
83
80
|
[Thor](http://github.com/wycats/thor#readme).
|
84
81
|
|
85
82
|
## Synopsis
|
@@ -151,6 +148,7 @@ Remove a Database:
|
|
151
148
|
* [parameters](http://github.com/postmodern/parameters) ~> 0.2.2
|
152
149
|
* [data_paths](http://github.com/postmodern/data_paths) ~> 0.2.1
|
153
150
|
* [contextify](http://github.com/postmodern/contextify/) ~> 0.1.6
|
151
|
+
* [env](http://github.com/postmodern/env) ~> 0.1.2
|
154
152
|
* [pullr](http://github.com/postmodern/pullr/) ~> 0.1.2
|
155
153
|
* [thor](http://github.com/wycats/thor/) ~> 0.14.2
|
156
154
|
* [ronin-support](http://github.com/ronin-ruby/ronin-support/) ~> 0.1.0
|
@@ -187,7 +185,7 @@ for Ronin that provides various generators.
|
|
187
185
|
### Ronin SQL
|
188
186
|
|
189
187
|
[Ronin SQL](http://github.com/ronin-ruby/ronin-sql#readme) is a Ruby library
|
190
|
-
for Ronin that
|
188
|
+
for Ronin that provides support for SQL related security tasks, such as
|
191
189
|
scanning for and exploiting SQL injections.
|
192
190
|
|
193
191
|
### Ronin PHP
|
data/Rakefile
CHANGED
data/gemspec.yml
CHANGED
@@ -59,6 +59,7 @@ dependencies:
|
|
59
59
|
parameters: ~> 0.2.3
|
60
60
|
data_paths: ~> 0.2.1
|
61
61
|
contextify: ~> 0.2.0
|
62
|
+
env: ~> 0.1.2
|
62
63
|
pullr: ~> 0.1.2
|
63
64
|
thor: ~> 0.14.3
|
64
65
|
ripl: ~> 0.3.0
|
@@ -67,7 +68,7 @@ dependencies:
|
|
67
68
|
ripl-short_errors: ~> 0.1.0
|
68
69
|
ripl-color_result: ~> 0.2.0
|
69
70
|
# Ronin dependencies:
|
70
|
-
ronin-support: ~> 0.1.0.
|
71
|
+
ronin-support: ~> 0.1.0.rc1
|
71
72
|
|
72
73
|
development_dependencies:
|
73
74
|
bundler: ~> 1.0.0
|
data/lib/ronin.rb
CHANGED
data/lib/ronin/address.rb
CHANGED
@@ -25,6 +25,13 @@ require 'dm-timestamps'
|
|
25
25
|
require 'dm-tags'
|
26
26
|
|
27
27
|
module Ronin
|
28
|
+
#
|
29
|
+
# A base model which represents an Internet Address, such as:
|
30
|
+
#
|
31
|
+
# * {MACAddress}
|
32
|
+
# * {IPAddress}
|
33
|
+
# * {HostName}
|
34
|
+
#
|
28
35
|
class Address
|
29
36
|
|
30
37
|
include Model
|
@@ -45,9 +52,6 @@ module Ronin
|
|
45
52
|
# The targets associated with the address
|
46
53
|
has 0..n, :targets
|
47
54
|
|
48
|
-
# The remote files associated with the address
|
49
|
-
has 0..n, :remote_files, :through => :targets
|
50
|
-
|
51
55
|
# The campaigns targeting the address
|
52
56
|
has 0..n, :campaigns, :through => :targets
|
53
57
|
|
data/lib/ronin/arch.rb
CHANGED
@@ -66,7 +66,7 @@ module Ronin
|
|
66
66
|
end
|
67
67
|
|
68
68
|
#
|
69
|
-
# Defines a new
|
69
|
+
# Defines a new predefined Arch.
|
70
70
|
#
|
71
71
|
# @param [Symbol, String] name
|
72
72
|
# The name of the architecture.
|
@@ -80,7 +80,7 @@ module Ronin
|
|
80
80
|
# @option options [Integer] :address_length
|
81
81
|
# The address-length of the architecture.
|
82
82
|
#
|
83
|
-
# @example Defining a
|
83
|
+
# @example Defining a predefined Arch
|
84
84
|
# Arch.predefine :alpha, :endian => :big, :address_length => 8
|
85
85
|
#
|
86
86
|
# @example Retrieving a predefined Arch
|
data/lib/ronin/bootstrap.rb
CHANGED
data/lib/ronin/cached_file.rb
CHANGED
data/lib/ronin/campaign.rb
CHANGED
@@ -20,12 +20,12 @@
|
|
20
20
|
require 'ronin/model'
|
21
21
|
require 'ronin/model/has_unique_name'
|
22
22
|
require 'ronin/model/has_description'
|
23
|
-
require 'ronin/config'
|
24
23
|
require 'ronin/target'
|
25
24
|
|
26
|
-
require 'fileutils'
|
27
|
-
|
28
25
|
module Ronin
|
26
|
+
#
|
27
|
+
# Represents a grouping of targeted {Address}es.
|
28
|
+
#
|
29
29
|
class Campaign
|
30
30
|
|
31
31
|
include Model
|
@@ -111,34 +111,5 @@ module Ronin
|
|
111
111
|
return Target.first_or_create(:campaign => self, :address => address)
|
112
112
|
end
|
113
113
|
|
114
|
-
#
|
115
|
-
# The file-name to use for the campaign.
|
116
|
-
#
|
117
|
-
# @return [String, nil]
|
118
|
-
# The File System safe name to use for the campaign.
|
119
|
-
#
|
120
|
-
# @since 1.0.0
|
121
|
-
#
|
122
|
-
def filename
|
123
|
-
self.name.downcase.gsub(/[^a-z0-9]+/,'_') if self.name
|
124
|
-
end
|
125
|
-
|
126
|
-
#
|
127
|
-
# The directory to store files related to the campaign.
|
128
|
-
#
|
129
|
-
# @return [String, nil]
|
130
|
-
# The path to the directory.
|
131
|
-
#
|
132
|
-
# @since 1.0.0
|
133
|
-
#
|
134
|
-
def directory
|
135
|
-
if self.name
|
136
|
-
path = File.join(Config::CAMPAIGNS_DIR,filename)
|
137
|
-
|
138
|
-
FileUtils.mkdir(path) unless File.directory?(path)
|
139
|
-
return path
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
114
|
end
|
144
115
|
end
|
data/lib/ronin/class_methods.rb
CHANGED
@@ -18,7 +18,24 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
module Ronin
|
21
|
+
#
|
22
|
+
# Class methods that are included when {Ronin} is included.
|
23
|
+
#
|
21
24
|
module ClassMethods
|
25
|
+
#
|
26
|
+
# Catches missing constants and searches the {Ronin} namespace.
|
27
|
+
#
|
28
|
+
# @param [Symbol] name
|
29
|
+
# The constant name.
|
30
|
+
#
|
31
|
+
# @return [Object]
|
32
|
+
# The found constant.
|
33
|
+
#
|
34
|
+
# @raise [NameError]
|
35
|
+
# The constant could not be found within {Ronin}.
|
36
|
+
#
|
37
|
+
# @since 1.0.0
|
38
|
+
#
|
22
39
|
def const_missing(name)
|
23
40
|
Ronin.send(:const_missing,name) || super(name)
|
24
41
|
end
|
data/lib/ronin/config.rb
CHANGED
@@ -17,54 +17,58 @@
|
|
17
17
|
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
18
|
#
|
19
19
|
|
20
|
+
require 'env'
|
20
21
|
require 'data_paths'
|
21
22
|
require 'fileutils'
|
22
23
|
|
23
24
|
module Ronin
|
25
|
+
#
|
26
|
+
# Configuration information for Ronin.
|
27
|
+
#
|
24
28
|
module Config
|
25
29
|
include DataPaths
|
26
30
|
|
27
31
|
# The users home directory
|
28
|
-
HOME =
|
32
|
+
HOME = Env.home
|
29
33
|
|
30
34
|
# Ronin home directory
|
31
|
-
PATH =
|
35
|
+
PATH = HOME.join('.ronin')
|
32
36
|
|
33
37
|
# Configuration files directory
|
34
|
-
CONFIG_DIR =
|
38
|
+
CONFIG_DIR = PATH.join('config')
|
35
39
|
|
36
40
|
# Directory which repositories are installed into
|
37
|
-
REPOS_DIR =
|
41
|
+
REPOS_DIR = PATH.join('repos')
|
38
42
|
|
39
43
|
# Temporary file directory
|
40
|
-
TMP_DIR =
|
44
|
+
TMP_DIR = PATH.join('tmp')
|
41
45
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
FileUtils.mkdir(PATH) unless File.directory?(PATH)
|
46
|
-
FileUtils.mkdir(CONFIG_DIR) unless File.directory?(PATH)
|
47
|
-
FileUtils.mkdir(TMP_DIR) unless File.directory?(TMP_DIR)
|
48
|
-
FileUtils.mkdir(CAMPAIGNS_DIR) unless File.directory?(CAMPAIGNS_DIR)
|
46
|
+
PATH.mkdir unless PATH.directory?
|
47
|
+
CONFIG_DIR.mkdir unless PATH.directory?
|
48
|
+
TMP_DIR.mkdir unless TMP_DIR.directory?
|
49
49
|
|
50
50
|
#
|
51
51
|
# Loads the Ronin configuration file.
|
52
52
|
#
|
53
53
|
# @param [Symbol, String, nil] name
|
54
|
-
# The optional name of the file to load within
|
54
|
+
# The optional name of the file to load within {CONFIG_DIR}.
|
55
55
|
#
|
56
|
-
# @example Load the config file at `~/.ronin/config
|
56
|
+
# @example Load the config file at `~/.ronin/config.rb`
|
57
57
|
# Config.load
|
58
58
|
# # => true
|
59
59
|
#
|
60
|
-
# @example Load
|
60
|
+
# @example Load the config file at `~/.ronin/config/sql.rb`
|
61
61
|
# Config.load :sql
|
62
62
|
# # => true
|
63
63
|
#
|
64
|
-
def Config.load(name
|
65
|
-
path =
|
64
|
+
def Config.load(name=nil)
|
65
|
+
path = if name
|
66
|
+
CONFIG_DIR.join("#{name}.rb").expand_path
|
67
|
+
else
|
68
|
+
PATH.join('config.rb')
|
69
|
+
end
|
66
70
|
|
67
|
-
require path if
|
71
|
+
require path if path.file?
|
68
72
|
end
|
69
73
|
|
70
74
|
#
|
@@ -73,18 +77,15 @@ module Ronin
|
|
73
77
|
# @param [String] sub_path
|
74
78
|
# The sub-path within {TMP_DIR}.
|
75
79
|
#
|
76
|
-
# @return [
|
80
|
+
# @return [Pathname]
|
77
81
|
# The full path within {TMP_DIR}.
|
78
82
|
#
|
79
83
|
def Config.tmp_dir(sub_path=nil)
|
80
84
|
if sub_path
|
81
85
|
sub_path = File.expand_path(File.join('',sub_path))
|
82
|
-
path =
|
83
|
-
|
84
|
-
unless File.exist?(path)
|
85
|
-
FileUtils.mkdir_p(path)
|
86
|
-
end
|
86
|
+
path = TMP_DIR.join(sub_path)
|
87
87
|
|
88
|
+
path.mkpath unless path.exist?
|
88
89
|
return path
|
89
90
|
end
|
90
91
|
|
data/lib/ronin/credential.rb
CHANGED
@@ -45,7 +45,6 @@ require 'ronin/database/migrations/create_countries_table'
|
|
45
45
|
require 'ronin/database/migrations/create_organizations_table'
|
46
46
|
require 'ronin/database/migrations/create_campaigns_table'
|
47
47
|
require 'ronin/database/migrations/create_targets_table'
|
48
|
-
require 'ronin/database/migrations/create_remote_files_table'
|
49
48
|
require 'ronin/database/migrations/create_cached_files_table'
|
50
49
|
require 'ronin/database/migrations/create_repositories_table'
|
51
50
|
|
@@ -46,12 +46,11 @@ module Ronin
|
|
46
46
|
column :open_port_id, Integer
|
47
47
|
column :email_address_id, Integer
|
48
48
|
column :url_id, Integer
|
49
|
-
column :proxy_id, Integer
|
50
49
|
end
|
51
50
|
|
52
51
|
create_index :ronin_credentials,
|
53
52
|
:user_name_id, :password_id,
|
54
|
-
:open_port_id, :email_address_id, :url_id,
|
53
|
+
:open_port_id, :email_address_id, :url_id,
|
55
54
|
:name => :unique_index_ronin_credentials,
|
56
55
|
:unique => true
|
57
56
|
end
|
@@ -27,6 +27,9 @@ require 'tsort'
|
|
27
27
|
module Ronin
|
28
28
|
module Database
|
29
29
|
module Migrations
|
30
|
+
#
|
31
|
+
# Sorts and runs {Migration}s based on their dependencies.
|
32
|
+
#
|
30
33
|
class Graph
|
31
34
|
|
32
35
|
include Enumerable
|
@@ -171,7 +174,7 @@ module Ronin
|
|
171
174
|
end
|
172
175
|
|
173
176
|
if position > 1
|
174
|
-
# explicit define a
|
177
|
+
# explicit define a dependency on the previous migration position
|
175
178
|
options[:needs] = [position - 1]
|
176
179
|
end
|
177
180
|
|
@@ -202,7 +205,7 @@ module Ronin
|
|
202
205
|
# If no block is given, an enumerator object will be returned.
|
203
206
|
#
|
204
207
|
# @raise [UnknownMigration]
|
205
|
-
# A migration had a
|
208
|
+
# A migration had a dependency on an unknown migration.
|
206
209
|
#
|
207
210
|
# @since 1.0.1
|
208
211
|
#
|
@@ -240,7 +243,7 @@ module Ronin
|
|
240
243
|
# If no block is given, an enumerator object will be returned.
|
241
244
|
#
|
242
245
|
# @raise [UnknownMigration]
|
243
|
-
# A migration had a
|
246
|
+
# A migration had a dependency on an unknown migration.
|
244
247
|
#
|
245
248
|
# @since 1.0.1
|
246
249
|
#
|