ronin 1.0.0 → 1.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +0 -1
- data/ChangeLog.md +67 -3
- data/Gemfile +20 -12
- data/README.md +3 -5
- data/gemspec.yml +5 -5
- data/lib/ronin/address.rb +8 -3
- data/lib/ronin/arch.rb +39 -14
- data/lib/ronin/author.rb +2 -0
- data/lib/ronin/auto_load.rb +67 -0
- data/lib/ronin/campaign.rb +15 -2
- data/lib/ronin/class_methods.rb +7 -1
- data/lib/ronin/config.rb +5 -0
- data/lib/ronin/credential.rb +14 -3
- data/lib/ronin/database/database.rb +38 -12
- data/lib/ronin/database/migrations.rb +3 -1
- data/lib/ronin/database/migrations/add_created_at_column_to_targets_table.rb +48 -0
- data/lib/ronin/database/migrations/add_updated_at_column_to_campaigns_table.rb +47 -0
- data/lib/ronin/database/migrations/create_licenses_table.rb +1 -1
- data/lib/ronin/database/migrations/create_passwords_table.rb +1 -1
- data/lib/ronin/database/migrations/{create_cached_files_table.rb → create_script_paths_table.rb} +4 -4
- data/lib/ronin/database/migrations/migration.rb +3 -6
- data/lib/ronin/database/migrations/migrations.rb +3 -3
- data/lib/ronin/email_address.rb +20 -3
- data/lib/ronin/environment.rb +0 -3
- data/lib/ronin/host_name.rb +20 -6
- data/lib/ronin/host_name_ip_address.rb +2 -3
- data/lib/ronin/installation.rb +92 -23
- data/lib/ronin/ip_address.rb +31 -8
- data/lib/ronin/ip_address_mac_address.rb +2 -3
- data/lib/ronin/license.rb +1 -1
- data/lib/ronin/mac_address.rb +6 -4
- data/lib/ronin/model/class_methods.rb +4 -0
- data/lib/ronin/model/has_authors/class_methods.rb +4 -0
- data/lib/ronin/model/has_authors/has_authors.rb +4 -0
- data/lib/ronin/model/has_description/class_methods.rb +2 -0
- data/lib/ronin/model/has_description/has_description.rb +2 -0
- data/lib/ronin/model/has_license/class_methods.rb +2 -0
- data/lib/ronin/model/has_license/has_license.rb +4 -0
- data/lib/ronin/model/has_name/class_methods.rb +2 -0
- data/lib/ronin/model/has_name/has_name.rb +4 -0
- data/lib/ronin/model/has_title/class_methods.rb +2 -0
- data/lib/ronin/model/has_title/has_title.rb +2 -0
- data/lib/ronin/model/has_unique_name/class_methods.rb +2 -0
- data/lib/ronin/model/has_unique_name/has_unique_name.rb +7 -1
- data/lib/ronin/model/has_version/class_methods.rb +4 -0
- data/lib/ronin/model/has_version/has_version.rb +2 -0
- data/lib/ronin/model/model.rb +2 -0
- data/lib/ronin/model/types.rb +1 -7
- data/lib/ronin/model/types/description.rb +2 -0
- data/lib/ronin/network/mixins/esmtp.rb +40 -25
- data/lib/ronin/network/mixins/http.rb +336 -73
- data/lib/ronin/network/mixins/imap.rb +38 -25
- data/lib/ronin/network/mixins/pop3.rb +34 -21
- data/lib/ronin/network/mixins/smtp.rb +40 -25
- data/lib/ronin/network/mixins/tcp.rb +66 -41
- data/lib/ronin/network/mixins/telnet.rb +43 -30
- data/lib/ronin/network/mixins/udp.rb +59 -40
- data/lib/ronin/open_port.rb +12 -5
- data/lib/ronin/organization.rb +1 -2
- data/lib/ronin/os.rb +10 -3
- data/lib/ronin/os_guess.rb +2 -3
- data/lib/ronin/password.rb +11 -3
- data/lib/ronin/port.rb +7 -2
- data/lib/ronin/{engine/exceptions/deploy_failed.rb → repositories.rb} +4 -6
- data/lib/ronin/repository.rb +110 -37
- data/lib/ronin/ronin.rb +4 -3
- data/lib/ronin/{engine.rb → script.rb} +2 -1
- data/lib/ronin/{engine → script}/buildable.rb +43 -29
- data/lib/ronin/script/class_methods.rb +84 -0
- data/lib/ronin/{engine → script}/deployable.rb +61 -40
- data/lib/ronin/{engine → script}/exceptions.rb +4 -3
- data/lib/ronin/script/exceptions/deploy_failed.rb +27 -0
- data/lib/ronin/{engine/exceptions/not_built.rb → script/exceptions/exception.rb} +2 -2
- data/lib/ronin/{engine/exceptions/verification_failed.rb → script/exceptions/not_built.rb} +4 -2
- data/lib/ronin/script/exceptions/test_failed.rb +27 -0
- data/lib/ronin/script/instance_methods.rb +217 -0
- data/lib/ronin/script/path.rb +277 -0
- data/lib/ronin/{engine/engine.rb → script/script.rb} +52 -15
- data/lib/ronin/{engine/verifiable.rb → script/testable.rb} +97 -68
- data/lib/ronin/service.rb +1 -2
- data/lib/ronin/service_credential.rb +1 -2
- data/lib/ronin/software.rb +3 -2
- data/lib/ronin/spec/database.rb +0 -4
- data/lib/ronin/target.rb +11 -3
- data/lib/ronin/tcp_port.rb +3 -2
- data/lib/ronin/udp_port.rb +2 -0
- data/lib/ronin/ui/cli/cli.rb +6 -0
- data/lib/ronin/ui/cli/command.rb +48 -12
- data/lib/ronin/ui/cli/commands/campaigns.rb +3 -3
- data/lib/ronin/ui/cli/commands/console.rb +2 -1
- data/lib/ronin/ui/cli/commands/creds.rb +3 -3
- data/lib/ronin/ui/cli/commands/database.rb +1 -17
- data/lib/ronin/ui/cli/commands/emails.rb +3 -3
- data/lib/ronin/ui/cli/commands/hosts.rb +3 -7
- data/lib/ronin/ui/cli/commands/ips.rb +3 -7
- data/lib/ronin/ui/cli/commands/repos.rb +5 -17
- data/lib/ronin/ui/cli/commands/urls.rb +3 -3
- data/lib/ronin/ui/cli/model_command.rb +82 -97
- data/lib/ronin/ui/cli/resources_command.rb +89 -0
- data/lib/ronin/ui/cli/script_command.rb +115 -0
- data/lib/ronin/ui/console.rb +17 -3
- data/lib/ronin/ui/output/helpers.rb +18 -0
- data/lib/ronin/ui/output/output.rb +20 -1
- data/lib/ronin/ui/output/terminal/color.rb +10 -0
- data/lib/ronin/ui/output/terminal/raw.rb +10 -0
- data/lib/ronin/ui/shell.rb +2 -0
- data/lib/ronin/url.rb +47 -12
- data/lib/ronin/url_query_param.rb +4 -0
- data/lib/ronin/url_scheme.rb +3 -3
- data/lib/ronin/user_name.rb +2 -0
- data/lib/ronin/version.rb +1 -1
- data/lib/ronin/web_credential.rb +6 -3
- data/spec/arch_spec.rb +3 -3
- data/spec/classes/my_script.rb +21 -0
- data/spec/helpers/repos/{test1 → installed}/ronin.yml +1 -1
- data/spec/helpers/repos/{hello/cache → installed/scripts}/.keep +0 -0
- data/spec/helpers/repos/local/lib/init.rb +1 -0
- data/spec/helpers/repos/{hello → local}/lib/stuff/another_test.rb +0 -0
- data/spec/helpers/repos/{hello → local}/lib/stuff/test.rb +0 -0
- data/spec/helpers/repos/{random → local}/ronin.yml +1 -1
- data/spec/helpers/repos/{random/cache → local/scripts}/.keep +0 -0
- data/spec/helpers/repos/{hello → remote}/ronin.yml +1 -1
- data/spec/helpers/repos/remote/scripts/.keep +0 -0
- data/spec/helpers/repos/{test2 → scripts}/ronin.yml +0 -0
- data/spec/helpers/repos/scripts/scripts/cached/cached.rb +10 -0
- data/spec/helpers/repos/scripts/scripts/cached/missing.rb +10 -0
- data/spec/helpers/repos/scripts/scripts/cached/modified.rb +10 -0
- data/spec/helpers/repos/scripts/scripts/cached/unmodified.rb +10 -0
- data/spec/helpers/repos/scripts/scripts/failures/exceptions.rb +11 -0
- data/spec/helpers/repos/{test2/cache/cacheable_model → scripts/scripts/failures}/load_errors.rb +3 -1
- data/spec/helpers/repos/{test2/cache/cacheable_model → scripts/scripts/failures}/name_errors.rb +1 -0
- data/spec/helpers/repos/scripts/scripts/failures/no_method_errors.rb +10 -0
- data/spec/helpers/repos/scripts/scripts/failures/syntax_errors.rb +11 -0
- data/spec/helpers/repos/scripts/scripts/failures/validation_errors.rb +11 -0
- data/spec/helpers/repos/scripts/scripts/my_scripts/test.rb +16 -0
- data/spec/model/spec_helper.rb +0 -2
- data/spec/repository_spec.rb +61 -81
- data/spec/ronin_spec.rb +2 -2
- data/spec/{engine → script}/buildable_spec.rb +9 -9
- data/spec/script/classes/buildable_class.rb +15 -0
- data/spec/script/classes/deployable_class.rb +13 -0
- data/spec/{engine/classes/engine_class.rb → script/classes/script_class.rb} +3 -3
- data/spec/{engine/classes/verifiable_class.rb → script/classes/testable_class.rb} +5 -5
- data/spec/{engine → script}/deployable_spec.rb +10 -10
- data/spec/{cached_file_spec.rb → script/path_spec.rb} +33 -72
- data/spec/script/script_spec.rb +130 -0
- data/spec/script/testable_spec.rb +117 -0
- data/spec/spec_helper.rb +15 -13
- metadata +114 -139
- data/lib/ronin/cached_file.rb +0 -247
- data/lib/ronin/engine/class_methods.rb +0 -135
- data/lib/ronin/engine/instance_methods.rb +0 -97
- data/lib/ronin/model/cacheable.rb +0 -21
- data/lib/ronin/model/cacheable/cacheable.rb +0 -273
- data/lib/ronin/model/cacheable/class_methods.rb +0 -60
- data/lib/ronin/ui/cli/engine_command.rb +0 -106
- data/spec/engine/classes/buildable_class.rb +0 -15
- data/spec/engine/classes/deployable_class.rb +0 -13
- data/spec/engine/engine_spec.rb +0 -55
- data/spec/engine/verifiable_spec.rb +0 -117
- data/spec/helpers/repos/hello/lib/init.rb +0 -1
- data/spec/helpers/repos/test1/cache/cacheable_model/one.rb +0 -15
- data/spec/helpers/repos/test2/cache/cacheable_model/exceptions.rb +0 -7
- data/spec/helpers/repos/test2/cache/cacheable_model/no_method_errors.rb +0 -9
- data/spec/helpers/repos/test2/cache/cacheable_model/syntax_errors.rb +0 -7
- data/spec/helpers/repos/test2/cache/cacheable_model/two.rb +0 -15
- data/spec/helpers/repos/test2/cache/cacheable_model/validation_errors.rb +0 -9
- data/spec/model/cacheable_spec.rb +0 -96
- data/spec/model/models/cacheable_model.rb +0 -13
data/.yardopts
CHANGED
data/ChangeLog.md
CHANGED
@@ -1,3 +1,67 @@
|
|
1
|
+
### 1.1.0 / 2011-05-17
|
2
|
+
|
3
|
+
* Require env ~> 0.2.
|
4
|
+
* Require data_paths ~> 0.3.
|
5
|
+
* Require ronin-support ~> 0.2.
|
6
|
+
* Added `ronin/repositories`, for quickly loading all repositories.
|
7
|
+
* Added {Ronin::AutoLoad}.
|
8
|
+
* Added {Ronin::Arch.arm}.
|
9
|
+
* Added {Ronin::Arch.mips}.
|
10
|
+
* Added {Ronin::Arch.x86}.
|
11
|
+
* Added timestamps to {Ronin::Campaign}.
|
12
|
+
* Added the `created_at` timestamp to {Ronin::Target}.
|
13
|
+
* Added {Ronin::Network::Mixins::HTTP#http_status}.
|
14
|
+
* Added {Ronin::Network::Mixins::HTTP#http_ok?}.
|
15
|
+
* Added {Ronin::Network::Mixins::HTTP#http_server}.
|
16
|
+
* Added {Ronin::Network::Mixins::HTTP#http_powered_by}.
|
17
|
+
* Added `print_info` method calls to {Ronin::Network::Mixins::HTTP}.
|
18
|
+
* Added {Ronin::Script::InstanceMethods#run}.
|
19
|
+
* Added {Ronin::Script::Exception}.
|
20
|
+
* Added {Ronin::Script::Path#to_s}.
|
21
|
+
* Added {Ronin::Script::ClassMethods#load_from}.
|
22
|
+
* Added {Ronin::Repository#find_script}.
|
23
|
+
* Added {Ronin::UI::CLI::Command#setup}.
|
24
|
+
* Added {Ronin::UI::CLI::ResourcesCommand}.
|
25
|
+
* Added {Ronin::UI::CLI::ScriptCommand}.
|
26
|
+
* Added the `--database` option to {Ronin::UI::CLI::ModelCommand}.
|
27
|
+
* Renamed `Ronin::Engine` to {Ronin::Script}.
|
28
|
+
* Renamed `Ronin::Engine::Verifiable` to {Ronin::Script::Testable}.
|
29
|
+
* Renamed `Ronin::Engine#engine_name` to
|
30
|
+
{Ronin::Script::InstanceMethods#script_type}.
|
31
|
+
* Renamed `Ronin::Engine::InstanceMethods#load_original!` to
|
32
|
+
{Ronin::Script::InstanceMethods#load_script!}.
|
33
|
+
* Renamed `Ronin::CachedFile` to {Ronin::Script::Path}.
|
34
|
+
* Renamed `Ronin::UI::CLI::ModelCommand.model=` to
|
35
|
+
{Ronin::UI::CLI::ModelCommand.model}.
|
36
|
+
* Renamed `Ronin::UI::CLI::ModelCommand#model` to
|
37
|
+
{Ronin::UI::CLI::ModelCommand.query_model}.
|
38
|
+
* Renamed `Ronin::UI::CLI::ModelCommand#new_query` to
|
39
|
+
{Ronin::UI::CLI::ModelCommand#query}.
|
40
|
+
* Renamed `Ronin::UI::CLI::ModelCommand#print_resource` to
|
41
|
+
{Ronin::UI::CLI::ResourcesCommand#print_resource}.
|
42
|
+
* Renamed `Ronin::UI::CLI::ModelCommand#print_resources` to
|
43
|
+
{Ronin::UI::CLI::ResourcesCommand#print_resources}.
|
44
|
+
* Removed `Ronin::Engine#method_missing`.
|
45
|
+
* Extend `DataPaths::Finders` into {Ronin::Config}.
|
46
|
+
* Fixed a RubyGems deprecation in {Ronin::Installation}.
|
47
|
+
* Enabled verbose DataMapper logging if the `DEBUG` environment variable is
|
48
|
+
set.
|
49
|
+
* Fixed a bug in {Ronin::Database::Migrations::Migration#initialize}, where
|
50
|
+
`:needs` was being overridden.
|
51
|
+
* Ensure that {Ronin::Database::Migrations} preserves the order of loaded
|
52
|
+
migrations.
|
53
|
+
* Set the length of {Ronin::Password.clear_text} to 256.
|
54
|
+
* Set the length of {Ronin::License.url} to 256.
|
55
|
+
* Merged `Ronin::Model::Cacheable` into {Ronin::Script}.
|
56
|
+
* Repositories can now cache/load scripts from the `scripts/` directory.
|
57
|
+
* Set {Ronin::UI::Output.handler} to {Ronin::UI::Output::Terminal::Raw},
|
58
|
+
when `STDOUT` is not a tty.
|
59
|
+
* {Ronin::UI::CLI::ModelCommand#setup} now automatically calls
|
60
|
+
{Ronin::Database.setup}, before executing the command.
|
61
|
+
* Merged `query_method` into {Ronin::UI::CLI::ModelCommand#query}.
|
62
|
+
* Allow {Ronin::UI::CLI::ModelCommand.query_option} to map to Model
|
63
|
+
properties.
|
64
|
+
|
1
65
|
### 1.0.0 / 2011-03-25
|
2
66
|
|
3
67
|
* Upgraded to the GPL-3 license.
|
@@ -52,7 +116,7 @@
|
|
52
116
|
* Added {Ronin::Organization}.
|
53
117
|
* Added {Ronin::Campaign}.
|
54
118
|
* Added {Ronin::Target}.
|
55
|
-
* Added
|
119
|
+
* Added `Ronin::Engine`.
|
56
120
|
* Added {Ronin::UI::Output::Terminal::Raw}.
|
57
121
|
* Added {Ronin::UI::Output::Terminal::Color}.
|
58
122
|
* Added the `ronin-repos` command for listing, adding, installing and
|
@@ -74,8 +138,8 @@
|
|
74
138
|
* Renamed `Ronin::Product` to {Ronin::Software}.
|
75
139
|
* Renamed `Ronin::UI::CommandLine` to {Ronin::UI::CLI}.
|
76
140
|
* Renamed `Ronin::Platform::Overlay` to {Ronin::Repository}.
|
77
|
-
* Renamed `Ronin::Platform::CachedFile` to
|
78
|
-
* Renamed `Ronin::Platform::Cacheable` to
|
141
|
+
* Renamed `Ronin::Platform::CachedFile` to `Ronin::CachedFile`.
|
142
|
+
* Renamed `Ronin::Platform::Cacheable` to `Ronin::Model::Cacheable`.
|
79
143
|
* Removed `Ronin::Platform::Extension`.
|
80
144
|
* Removed `Ronin::Platform`.
|
81
145
|
* Moved the `ronin-add`, `ronin-install`, `ronin-list` and `ronin-uninstall`
|
data/Gemfile
CHANGED
@@ -22,7 +22,7 @@ gemspec
|
|
22
22
|
# gem 'dm-timestamps', DM_VERSION, :git => "#{DM_URI}/dm-timestamps.git"
|
23
23
|
|
24
24
|
# Library dependencies
|
25
|
-
# gem 'ronin-support', '~> 0.
|
25
|
+
# gem 'ronin-support', '~> 0.2', :git => "#{RONIN_URI}/ronin-support.git"
|
26
26
|
|
27
27
|
group :development do
|
28
28
|
gem 'rake', '~> 0.8.7'
|
@@ -35,15 +35,23 @@ group :development do
|
|
35
35
|
gem 'dm-visualizer', '~> 0.2.0'
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
38
|
+
#
|
39
|
+
# To enable additional DataMapper adapters for development work or for
|
40
|
+
# testing purposes, simple set the ADAPTER or ADAPTERS environment
|
41
|
+
# variable:
|
42
|
+
#
|
43
|
+
# export ADAPTER="postgres"
|
44
|
+
# bundle install
|
45
|
+
#
|
46
|
+
# ./bin/ronin --database postgres://ronin@localhost/ronin
|
47
|
+
#
|
48
|
+
require 'set'
|
49
|
+
|
50
|
+
DM_ADAPTERS = Set['postgres', 'mysql', 'oracle', 'sqlserver']
|
51
|
+
|
52
|
+
adapters = (ENV['ADAPTER'] || ENV['ADAPTERS']).to_s
|
53
|
+
adapters = Set.new(adapters.to_s.tr(',',' ').split)
|
54
|
+
|
55
|
+
(DM_ADAPTERS & adapters).each do |adapter|
|
56
|
+
gem "dm-#{adapter}-adapter", DM_VERSION #, :git => "#{DM_URI}/dm-#{adapter}-adapter.git"
|
49
57
|
end
|
data/README.md
CHANGED
@@ -156,19 +156,17 @@ Remove a Database:
|
|
156
156
|
* [parameters](http://github.com/postmodern/parameters#readme)
|
157
157
|
~> 0.2, >= 0.2.3
|
158
158
|
* [data_paths](http://github.com/postmodern/data_paths#readme)
|
159
|
-
~> 0.
|
159
|
+
~> 0.3
|
160
160
|
* [object_loader](http://github.com/postmodern/object_loader#readme)
|
161
161
|
~> 1.0
|
162
162
|
* [env](http://github.com/postmodern/env#readme)
|
163
|
-
~> 0.
|
163
|
+
~> 0.2
|
164
164
|
* [pullr](http://github.com/postmodern/pullr#readme)
|
165
165
|
~> 0.1, >= 0.1.2
|
166
|
-
* [hexdump](http://github.com/postmodern/hexdump#readme)
|
167
|
-
~> 0.1
|
168
166
|
* [thor](http://github.com/wycats/thor#readme)
|
169
167
|
~> 0.14.3
|
170
168
|
* [ronin-support](http://github.com/ronin-ruby/ronin-support#readme)
|
171
|
-
~> 0.
|
169
|
+
~> 0.2
|
172
170
|
|
173
171
|
## Install
|
174
172
|
|
data/gemspec.yml
CHANGED
@@ -53,11 +53,11 @@ dependencies:
|
|
53
53
|
uri-query_params: ~> 0.5, >= 0.5.2
|
54
54
|
open_namespace: ~> 0.3
|
55
55
|
parameters: ~> 0.2, >= 0.2.3
|
56
|
-
data_paths: ~> 0.
|
56
|
+
# data_paths: ~> 0.3
|
57
|
+
data_paths: ~> 0.3.0.rc1
|
57
58
|
object_loader: ~> 1.0
|
58
|
-
env: ~> 0.
|
59
|
+
env: ~> 0.2
|
59
60
|
pullr: ~> 0.1, >= 0.1.2
|
60
|
-
hexdump: ~> 0.1
|
61
61
|
ripl: ~> 0.3
|
62
62
|
ripl-multi_line: ~> 0.2
|
63
63
|
ripl-auto_indent: ~> 0.1
|
@@ -65,11 +65,11 @@ dependencies:
|
|
65
65
|
ripl-color_result: ~> 0.3
|
66
66
|
thor: ~> 0.14.3
|
67
67
|
# Ronin dependencies:
|
68
|
-
ronin-support: ~> 0.
|
68
|
+
# ronin-support: ~> 0.2
|
69
|
+
ronin-support: ~> 0.2.0.rc1
|
69
70
|
|
70
71
|
development_dependencies:
|
71
72
|
bundler: ~> 1.0.10
|
72
73
|
yard: ~> 0.6.4
|
73
|
-
yard-parameters: ~> 0.1.0
|
74
74
|
yard-dm: ~> 0.1.1
|
75
75
|
yard-dm-is-predefined: ~> 0.2.0
|
data/lib/ronin/address.rb
CHANGED
@@ -18,13 +18,12 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
require 'ronin/model'
|
21
|
+
require 'ronin/organization'
|
22
|
+
require 'ronin/target'
|
21
23
|
|
22
24
|
require 'dm-timestamps'
|
23
25
|
|
24
26
|
module Ronin
|
25
|
-
autoload :Organization, 'ronin/organization'
|
26
|
-
autoload :Target, 'ronin/target'
|
27
|
-
|
28
27
|
#
|
29
28
|
# A base model which represents an Internet Address, such as:
|
30
29
|
#
|
@@ -69,6 +68,8 @@ module Ronin
|
|
69
68
|
#
|
70
69
|
# @since 1.0.0
|
71
70
|
#
|
71
|
+
# @api public
|
72
|
+
#
|
72
73
|
def self.[](key)
|
73
74
|
if key.kind_of?(String)
|
74
75
|
first(:address => key)
|
@@ -85,6 +86,8 @@ module Ronin
|
|
85
86
|
#
|
86
87
|
# @since 1.0.0
|
87
88
|
#
|
89
|
+
# @api public
|
90
|
+
#
|
88
91
|
def to_s
|
89
92
|
self.address.to_s
|
90
93
|
end
|
@@ -97,6 +100,8 @@ module Ronin
|
|
97
100
|
#
|
98
101
|
# @since 1.0.0
|
99
102
|
#
|
103
|
+
# @api public
|
104
|
+
#
|
100
105
|
def inspect
|
101
106
|
"#<#{self.class}: #{self.address}>"
|
102
107
|
end
|
data/lib/ronin/arch.rb
CHANGED
@@ -61,12 +61,14 @@ module Ronin
|
|
61
61
|
#
|
62
62
|
# @since 1.0.0
|
63
63
|
#
|
64
|
+
# @api public
|
65
|
+
#
|
64
66
|
def to_ary
|
65
67
|
[self.endian, self.address_length]
|
66
68
|
end
|
67
69
|
|
68
70
|
#
|
69
|
-
# Defines a new
|
71
|
+
# Defines a new pre-defined Arch.
|
70
72
|
#
|
71
73
|
# @param [Symbol, String] name
|
72
74
|
# The name of the architecture.
|
@@ -80,27 +82,20 @@ module Ronin
|
|
80
82
|
# @option options [Integer] :address_length
|
81
83
|
# The address-length of the architecture.
|
82
84
|
#
|
83
|
-
# @example Defining a
|
85
|
+
# @example Defining a pre-defined Arch
|
84
86
|
# Arch.predefine :alpha, :endian => :big, :address_length => 8
|
85
87
|
#
|
86
|
-
# @example Retrieving a
|
88
|
+
# @example Retrieving a pre-defined Arch
|
87
89
|
# Arch.alpha
|
88
90
|
#
|
91
|
+
# @api private
|
92
|
+
#
|
89
93
|
def self.predefine(name,options={})
|
90
94
|
super(name,options.merge(:name => name))
|
91
95
|
end
|
92
96
|
|
93
|
-
# The
|
94
|
-
predefine :
|
95
|
-
|
96
|
-
# The i486 Architecture
|
97
|
-
predefine :i486, :endian => :little, :address_length => 4
|
98
|
-
|
99
|
-
# The i686 Architecture
|
100
|
-
predefine :i686, :endian => :little, :address_length => 4
|
101
|
-
|
102
|
-
# The i986 Architecture
|
103
|
-
predefine :i986, :endian => :little, :address_length => 4
|
97
|
+
# The x86 Architecture
|
98
|
+
predefine :x86, :endian => :little, :address_length => 4
|
104
99
|
|
105
100
|
# The x86_64 Architecture
|
106
101
|
predefine :x86_64, :endian => :little, :address_length => 8
|
@@ -132,5 +127,35 @@ module Ronin
|
|
132
127
|
# The ARM (big-endian) Architecture
|
133
128
|
predefine :arm_be, :endian => :big, :address_length => 4
|
134
129
|
|
130
|
+
#
|
131
|
+
# @see x86
|
132
|
+
#
|
133
|
+
def self.i386; x86; end
|
134
|
+
|
135
|
+
#
|
136
|
+
# @see x86
|
137
|
+
#
|
138
|
+
def self.i486; x86; end
|
139
|
+
|
140
|
+
#
|
141
|
+
# @see x86
|
142
|
+
#
|
143
|
+
def self.i686; x86; end
|
144
|
+
|
145
|
+
#
|
146
|
+
# @see x86
|
147
|
+
#
|
148
|
+
def self.i986; x86; end
|
149
|
+
|
150
|
+
#
|
151
|
+
# @see mips_be
|
152
|
+
#
|
153
|
+
def self.mips; mips_be; end
|
154
|
+
|
155
|
+
#
|
156
|
+
# @see arm_be
|
157
|
+
#
|
158
|
+
def self.arm; arm_be; end
|
159
|
+
|
135
160
|
end
|
136
161
|
end
|
data/lib/ronin/author.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
+
#
|
4
|
+
# This file is part of Ronin.
|
5
|
+
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#
|
19
|
+
|
20
|
+
require 'open_namespace'
|
21
|
+
|
22
|
+
module Ronin
|
23
|
+
#
|
24
|
+
# When included into other namespaces, it allows for auto-loading Classes
|
25
|
+
# or Modules via {#const_missing}.
|
26
|
+
#
|
27
|
+
# @since 1.1.0
|
28
|
+
#
|
29
|
+
module AutoLoad
|
30
|
+
def self.included(base)
|
31
|
+
base.send :include, OpenNamespace
|
32
|
+
base.send :extend, self
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
|
37
|
+
#
|
38
|
+
# Transparently auto-loads Classes and Modules from their respective
|
39
|
+
# files using [OpenNamespace](http://rubydoc.info/gems/open_namespace).
|
40
|
+
#
|
41
|
+
# @param [String, Symbol] name
|
42
|
+
# The name of the Class or Module to auto-load.
|
43
|
+
#
|
44
|
+
# @return [Class, Module]
|
45
|
+
# The loaded Class or Module.
|
46
|
+
#
|
47
|
+
# @raise [NameError]
|
48
|
+
# The Class or Module could not be found.
|
49
|
+
#
|
50
|
+
# @since 1.1.0
|
51
|
+
#
|
52
|
+
# @api public
|
53
|
+
#
|
54
|
+
def const_missing(name)
|
55
|
+
const = super(name)
|
56
|
+
|
57
|
+
if Object.const_defined?('DataMapper')
|
58
|
+
# if the loaded Class is a DataMapper Resource, re-finalize
|
59
|
+
if const < DataMapper::Resource
|
60
|
+
DataMapper.finalize
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
return const
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/ronin/campaign.rb
CHANGED
@@ -20,10 +20,11 @@
|
|
20
20
|
require 'ronin/model'
|
21
21
|
require 'ronin/model/has_unique_name'
|
22
22
|
require 'ronin/model/has_description'
|
23
|
+
require 'ronin/target'
|
23
24
|
|
24
|
-
|
25
|
-
autoload :Target, 'ronin/target'
|
25
|
+
require 'dm-timestamps'
|
26
26
|
|
27
|
+
module Ronin
|
27
28
|
#
|
28
29
|
# Represents a grouping of targeted {Address}es.
|
29
30
|
#
|
@@ -32,10 +33,14 @@ module Ronin
|
|
32
33
|
include Model
|
33
34
|
include Model::HasUniqueName
|
34
35
|
include Model::HasDescription
|
36
|
+
include DataMapper::Timestamps
|
35
37
|
|
36
38
|
# Primary key of the campaign
|
37
39
|
property :id, Serial
|
38
40
|
|
41
|
+
# Defines the `created_at` and `updated_at` timestamps
|
42
|
+
timestamps :at
|
43
|
+
|
39
44
|
# The targets of the campaign
|
40
45
|
has 0..n, :targets
|
41
46
|
|
@@ -56,6 +61,8 @@ module Ronin
|
|
56
61
|
#
|
57
62
|
# @since 1.0.0
|
58
63
|
#
|
64
|
+
# @api public
|
65
|
+
#
|
59
66
|
def self.targeting(addr)
|
60
67
|
all(:addresses => {:address => addr})
|
61
68
|
end
|
@@ -71,6 +78,8 @@ module Ronin
|
|
71
78
|
#
|
72
79
|
# @since 1.0.0
|
73
80
|
#
|
81
|
+
# @api public
|
82
|
+
#
|
74
83
|
def self.targeting_orgs(names)
|
75
84
|
all(:organizations => {:name => names})
|
76
85
|
end
|
@@ -86,6 +95,8 @@ module Ronin
|
|
86
95
|
#
|
87
96
|
# @since 1.0.0
|
88
97
|
#
|
98
|
+
# @api public
|
99
|
+
#
|
89
100
|
def targets?(addr)
|
90
101
|
self.addresses.include?(address)
|
91
102
|
end
|
@@ -104,6 +115,8 @@ module Ronin
|
|
104
115
|
#
|
105
116
|
# @since 1.0.0
|
106
117
|
#
|
118
|
+
# @api public
|
119
|
+
#
|
107
120
|
def target!(addr)
|
108
121
|
unless (address = Address.first(:address => addr))
|
109
122
|
raise("unknown address #{addr.dump}")
|