ronin 1.0.0.pre3 → 1.0.0.pre4
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING.txt +623 -288
- data/ChangeLog.md +21 -2
- data/Gemfile +5 -12
- data/README.md +6 -7
- data/gemspec.yml +3 -3
- data/lib/ronin.rb +6 -7
- data/lib/ronin/address.rb +18 -7
- data/lib/ronin/arch.rb +6 -7
- data/lib/ronin/author.rb +6 -7
- data/lib/ronin/bootstrap.rb +6 -8
- data/lib/ronin/cached_file.rb +6 -7
- data/lib/ronin/campaign.rb +10 -11
- data/lib/ronin/class_methods.rb +6 -7
- data/lib/ronin/config.rb +6 -7
- data/lib/ronin/credential.rb +19 -8
- data/lib/ronin/database.rb +6 -7
- data/lib/ronin/database/database.rb +8 -9
- data/lib/ronin/database/exceptions.rb +6 -7
- data/lib/ronin/database/exceptions/invalid_config.rb +6 -7
- data/lib/ronin/database/exceptions/unknown_repository.rb +6 -7
- data/lib/ronin/database/migrations.rb +6 -7
- data/lib/ronin/database/migrations/create_addresses_table.rb +6 -7
- data/lib/ronin/database/migrations/create_arches_table.rb +6 -7
- data/lib/ronin/database/migrations/create_authors_table.rb +6 -7
- data/lib/ronin/database/migrations/create_cached_files_table.rb +6 -7
- data/lib/ronin/database/migrations/create_campaigns_table.rb +8 -7
- data/lib/ronin/database/migrations/create_countries_table.rb +6 -7
- data/lib/ronin/database/migrations/create_credentials_table.rb +16 -10
- data/lib/ronin/database/migrations/create_email_addresses_table.rb +10 -11
- data/lib/ronin/database/migrations/create_host_name_ip_addresses_table.rb +14 -9
- data/lib/ronin/database/migrations/create_ip_address_mac_addresses_table.rb +14 -9
- data/lib/ronin/database/migrations/create_licenses_table.rb +6 -7
- data/lib/ronin/database/migrations/create_open_ports_table.rb +11 -7
- data/lib/ronin/database/migrations/create_organizations_table.rb +8 -7
- data/lib/ronin/database/migrations/create_os_guesses_table.rb +13 -9
- data/lib/ronin/database/migrations/create_os_table.rb +6 -7
- data/lib/ronin/database/migrations/create_passwords_table.rb +6 -7
- data/lib/ronin/database/migrations/create_ports_table.rb +6 -7
- data/lib/ronin/database/migrations/create_proxies_table.rb +6 -7
- data/lib/ronin/database/migrations/create_remote_files_table.rb +6 -7
- data/lib/ronin/database/migrations/create_repositories_table.rb +6 -7
- data/lib/ronin/database/migrations/create_services_table.rb +6 -8
- data/lib/ronin/database/migrations/create_softwares_table.rb +6 -7
- data/lib/ronin/database/migrations/create_taggings_table.rb +6 -7
- data/lib/ronin/database/migrations/create_tags_table.rb +6 -7
- data/lib/ronin/database/migrations/create_targets_table.rb +7 -8
- data/lib/ronin/database/migrations/create_url_query_params_table.rb +6 -7
- data/lib/ronin/database/migrations/create_url_schemes_table.rb +6 -7
- data/lib/ronin/database/migrations/create_urls_table.rb +16 -9
- data/lib/ronin/database/migrations/create_user_names_table.rb +6 -7
- data/lib/ronin/database/migrations/create_vendors_table.rb +6 -7
- data/lib/ronin/database/migrations/exceptions.rb +6 -7
- data/lib/ronin/database/migrations/exceptions/duplicate_migration.rb +6 -7
- data/lib/ronin/database/migrations/exceptions/unknown_migration.rb +6 -7
- data/lib/ronin/database/migrations/graph.rb +19 -0
- data/lib/ronin/database/migrations/migration.rb +6 -7
- data/lib/ronin/database/migrations/migrations.rb +6 -7
- data/lib/ronin/email_address.rb +34 -13
- data/lib/ronin/engine.rb +6 -7
- data/lib/ronin/engine/buildable.rb +6 -7
- data/lib/ronin/engine/class_methods.rb +6 -7
- data/lib/ronin/engine/deployable.rb +6 -7
- data/lib/ronin/engine/engine.rb +6 -7
- data/lib/ronin/engine/exceptions.rb +6 -7
- data/lib/ronin/engine/exceptions/deploy_failed.rb +6 -7
- data/lib/ronin/engine/exceptions/not_built.rb +6 -7
- data/lib/ronin/engine/exceptions/verification_failed.rb +6 -7
- data/lib/ronin/engine/instance_methods.rb +6 -7
- data/lib/ronin/engine/verifiable.rb +6 -7
- data/lib/ronin/environment.rb +11 -7
- data/lib/ronin/exceptions.rb +6 -7
- data/lib/ronin/exceptions/duplicate_repository.rb +6 -7
- data/lib/ronin/exceptions/repository_not_found.rb +6 -7
- data/lib/ronin/host_name.rb +40 -22
- data/lib/ronin/host_name_ip_address.rb +11 -9
- data/lib/ronin/installation.rb +6 -7
- data/lib/ronin/ip_address.rb +41 -33
- data/lib/ronin/ip_address_mac_address.rb +11 -9
- data/lib/ronin/license.rb +6 -7
- data/lib/ronin/mac_address.rb +8 -13
- data/lib/ronin/model.rb +6 -7
- data/lib/ronin/model/cacheable.rb +6 -7
- data/lib/ronin/model/cacheable/cacheable.rb +6 -7
- data/lib/ronin/model/cacheable/class_methods.rb +6 -7
- data/lib/ronin/model/class_methods.rb +6 -7
- data/lib/ronin/model/has_authors.rb +6 -7
- data/lib/ronin/model/has_authors/class_methods.rb +8 -9
- data/lib/ronin/model/has_authors/has_authors.rb +6 -7
- data/lib/ronin/model/has_description.rb +6 -7
- data/lib/ronin/model/has_description/class_methods.rb +7 -8
- data/lib/ronin/model/has_description/has_description.rb +6 -7
- data/lib/ronin/model/has_license.rb +6 -7
- data/lib/ronin/model/has_license/class_methods.rb +7 -8
- data/lib/ronin/model/has_license/has_license.rb +6 -7
- data/lib/ronin/model/has_name.rb +6 -7
- data/lib/ronin/model/has_name/class_methods.rb +7 -12
- data/lib/ronin/model/has_name/has_name.rb +6 -7
- data/lib/ronin/model/has_title.rb +6 -7
- data/lib/ronin/model/has_title/class_methods.rb +7 -8
- data/lib/ronin/model/has_title/has_title.rb +6 -7
- data/lib/ronin/model/has_unique_name.rb +18 -7
- data/lib/ronin/model/has_version.rb +6 -7
- data/lib/ronin/model/has_version/class_methods.rb +7 -8
- data/lib/ronin/model/has_version/has_version.rb +6 -7
- data/lib/ronin/model/model.rb +6 -7
- data/lib/ronin/model/types.rb +6 -7
- data/lib/ronin/model/types/description.rb +6 -7
- data/lib/ronin/network/mixins.rb +11 -13
- data/lib/ronin/network/mixins/esmtp.rb +11 -13
- data/lib/ronin/network/mixins/http.rb +11 -13
- data/lib/ronin/network/mixins/imap.rb +11 -13
- data/lib/ronin/network/mixins/pop3.rb +11 -13
- data/lib/ronin/network/mixins/smtp.rb +11 -13
- data/lib/ronin/network/mixins/tcp.rb +11 -13
- data/lib/ronin/network/mixins/telnet.rb +11 -13
- data/lib/ronin/network/mixins/udp.rb +11 -13
- data/lib/ronin/open_port.rb +11 -11
- data/lib/ronin/organization.rb +8 -9
- data/lib/ronin/os.rb +6 -7
- data/lib/ronin/os_guess.rb +14 -12
- data/lib/ronin/password.rb +18 -7
- data/lib/ronin/port.rb +18 -7
- data/lib/ronin/proxy.rb +6 -7
- data/lib/ronin/proxy_credential.rb +6 -7
- data/lib/ronin/remote_file.rb +13 -11
- data/lib/ronin/repository.rb +8 -12
- data/lib/ronin/ronin.rb +6 -7
- data/lib/ronin/service.rb +8 -23
- data/lib/ronin/service_credential.rb +6 -7
- data/lib/ronin/software.rb +6 -7
- data/lib/ronin/spec/database.rb +6 -7
- data/lib/ronin/spec/ui/output.rb +6 -7
- data/lib/ronin/target.rb +11 -9
- data/lib/ronin/tcp_port.rb +6 -7
- data/lib/ronin/udp_port.rb +6 -7
- data/lib/ronin/ui.rb +6 -7
- data/lib/ronin/ui/cli.rb +6 -7
- data/lib/ronin/ui/cli/cli.rb +6 -7
- data/lib/ronin/ui/cli/command.rb +6 -7
- data/lib/ronin/ui/cli/commands.rb +6 -7
- data/lib/ronin/ui/cli/commands/campaigns.rb +6 -7
- data/lib/ronin/ui/cli/commands/console.rb +7 -8
- data/lib/ronin/ui/cli/commands/creds.rb +6 -7
- data/lib/ronin/ui/cli/commands/database.rb +6 -7
- data/lib/ronin/ui/cli/commands/emails.rb +6 -7
- data/lib/ronin/ui/cli/commands/exec.rb +6 -7
- data/lib/ronin/ui/cli/commands/help.rb +6 -7
- data/lib/ronin/ui/cli/commands/hosts.rb +10 -9
- data/lib/ronin/ui/cli/commands/ips.rb +10 -9
- data/lib/ronin/ui/cli/commands/repos.rb +6 -7
- data/lib/ronin/ui/cli/commands/urls.rb +6 -7
- data/lib/ronin/ui/cli/engine_command.rb +6 -7
- data/lib/ronin/ui/cli/exceptions.rb +6 -7
- data/lib/ronin/ui/cli/exceptions/unknown_command.rb +6 -7
- data/lib/ronin/ui/cli/model_command.rb +6 -7
- data/lib/ronin/ui/console.rb +8 -12
- data/lib/ronin/ui/hexdump.rb +6 -7
- data/lib/ronin/ui/hexdump/extensions.rb +6 -7
- data/lib/ronin/ui/hexdump/extensions/file.rb +6 -7
- data/lib/ronin/ui/hexdump/extensions/kernel.rb +6 -7
- data/lib/ronin/ui/hexdump/hexdump.rb +13 -7
- data/lib/ronin/ui/output.rb +6 -7
- data/lib/ronin/ui/output/helpers.rb +6 -7
- data/lib/ronin/ui/output/output.rb +6 -7
- data/lib/ronin/ui/output/terminal.rb +6 -7
- data/lib/ronin/ui/output/terminal/color.rb +6 -7
- data/lib/ronin/ui/output/terminal/raw.rb +6 -7
- data/lib/ronin/ui/shell.rb +6 -7
- data/lib/ronin/url.rb +123 -30
- data/lib/ronin/url_query_param.rb +32 -7
- data/lib/ronin/url_scheme.rb +6 -7
- data/lib/ronin/user_name.rb +6 -7
- data/lib/ronin/vendor.rb +6 -7
- data/lib/ronin/version.rb +7 -8
- data/lib/ronin/web_credential.rb +52 -8
- data/spec/arch_spec.rb +7 -0
- data/spec/author_spec.rb +1 -1
- data/spec/campaign_spec.rb +1 -1
- data/spec/credential_spec.rb +33 -0
- data/spec/database_spec.rb +23 -0
- data/spec/email_address_spec.rb +15 -0
- data/spec/engine/buildable_spec.rb +2 -2
- data/spec/engine/deployable_spec.rb +2 -2
- data/spec/host_name_spec.rb +20 -0
- data/spec/ip_address.rb +20 -3
- data/spec/model/cacheable_spec.rb +1 -1
- data/spec/model/has_description_spec.rb +1 -1
- data/spec/os_spec.rb +26 -0
- data/spec/password_spec.rb +4 -0
- data/spec/port_spec.rb +43 -0
- data/spec/repository_spec.rb +10 -10
- data/spec/service_spec.rb +18 -0
- data/spec/software_spec.rb +15 -5
- data/spec/url_query_param_spec.rb +30 -0
- data/spec/url_scheme_spec.rb +18 -0
- data/spec/url_spec.rb +54 -37
- metadata +18 -9
- data/lib/ronin/ui/async_console.rb +0 -130
data/lib/ronin/environment.rb
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
20
|
+
require 'ronin/ronin'
|
21
21
|
require 'ronin/extensions'
|
22
22
|
require 'ronin/formatting/extensions'
|
23
23
|
require 'ronin/network/extensions'
|
24
24
|
require 'ronin/ui/hexdump/extensions'
|
25
|
+
require 'ronin/ui/output/helpers'
|
25
26
|
|
26
27
|
require 'chars/extensions'
|
28
|
+
|
29
|
+
include Ronin
|
30
|
+
include Ronin::UI::Output::Helpers
|
data/lib/ronin/exceptions.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
require 'ronin/exceptions/duplicate_repository'
|
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
module Ronin
|
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
module Ronin
|
data/lib/ronin/host_name.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
require 'ronin/address'
|
@@ -60,7 +59,7 @@ module Ronin
|
|
60
59
|
# @since 1.0.0
|
61
60
|
#
|
62
61
|
def self.with_ips(ips)
|
63
|
-
all(
|
62
|
+
all(:ip_addresses => {:address => ips})
|
64
63
|
end
|
65
64
|
|
66
65
|
#
|
@@ -75,7 +74,7 @@ module Ronin
|
|
75
74
|
# @since 1.0.0
|
76
75
|
#
|
77
76
|
def self.with_ports(numbers)
|
78
|
-
all(
|
77
|
+
all(:ports => {:number => numbers})
|
79
78
|
end
|
80
79
|
|
81
80
|
#
|
@@ -105,7 +104,8 @@ module Ronin
|
|
105
104
|
# @since 1.0.0
|
106
105
|
#
|
107
106
|
def self.domain(name)
|
108
|
-
all(:address.like => "#{name}.%") |
|
107
|
+
all(:address.like => "#{name}.%") |
|
108
|
+
all(:address.like => "%.#{name}.%")
|
109
109
|
end
|
110
110
|
|
111
111
|
#
|
@@ -120,11 +120,22 @@ module Ronin
|
|
120
120
|
# @since 1.0.0
|
121
121
|
#
|
122
122
|
def self.lookup(addr)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
123
|
+
addr = addr.to_s
|
124
|
+
ip = IPAddress.first_or_new(:address => addr)
|
125
|
+
hosts = begin
|
126
|
+
Resolv.getnames(addr)
|
127
|
+
rescue
|
128
|
+
[]
|
129
|
+
end
|
130
|
+
|
131
|
+
hosts.map! do |name|
|
132
|
+
HostName.first_or_create(
|
133
|
+
:address => name,
|
134
|
+
:ip_addresses => [ip]
|
135
|
+
)
|
127
136
|
end
|
137
|
+
|
138
|
+
return hosts
|
128
139
|
end
|
129
140
|
|
130
141
|
alias name address
|
@@ -138,9 +149,20 @@ module Ronin
|
|
138
149
|
# @since 1.0.0
|
139
150
|
#
|
140
151
|
def lookup!
|
141
|
-
|
142
|
-
|
152
|
+
ips = begin
|
153
|
+
Resolv.getaddresses(self.address)
|
154
|
+
rescue
|
155
|
+
[]
|
156
|
+
end
|
157
|
+
|
158
|
+
ips.map! do |addr|
|
159
|
+
IPAddress.first_or_create(
|
160
|
+
:address => addr,
|
161
|
+
:host_names => [self]
|
162
|
+
)
|
143
163
|
end
|
164
|
+
|
165
|
+
return ips
|
144
166
|
end
|
145
167
|
|
146
168
|
#
|
@@ -152,13 +174,9 @@ module Ronin
|
|
152
174
|
# @since 1.0.0
|
153
175
|
#
|
154
176
|
def recent_ip_address
|
155
|
-
|
177
|
+
self.host_name_ip_addresses.all(
|
156
178
|
:order => [:created_at.desc]
|
157
|
-
)
|
158
|
-
|
159
|
-
if relation
|
160
|
-
return relation.ip_address
|
161
|
-
end
|
179
|
+
).ip_addresses.first
|
162
180
|
end
|
163
181
|
|
164
182
|
#
|
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
require 'ronin/host_name'
|
@@ -29,11 +28,14 @@ module Ronin
|
|
29
28
|
|
30
29
|
include Model
|
31
30
|
|
31
|
+
# The primary-key of the join model.
|
32
|
+
property :id, Serial
|
33
|
+
|
32
34
|
# The host name pointing to the IP Address
|
33
|
-
belongs_to :host_name
|
35
|
+
belongs_to :host_name
|
34
36
|
|
35
37
|
# The IP Address
|
36
|
-
belongs_to :ip_address, :
|
38
|
+
belongs_to :ip_address, :model => 'IPAddress'
|
37
39
|
|
38
40
|
# Tracks when a IP Address is associated with a host name
|
39
41
|
timestamps :created_at
|
data/lib/ronin/installation.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
require 'enumerator'
|
data/lib/ronin/ip_address.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This file is part of Ronin.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# Ronin is free software: you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
9
|
# (at your option) any later version.
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# Ronin is distributed in the hope that it will be useful,
|
12
12
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
13
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
14
|
# GNU General Public License for more details.
|
15
15
|
#
|
16
16
|
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with
|
18
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
19
18
|
#
|
20
19
|
|
21
20
|
require 'ronin/model'
|
@@ -110,7 +109,7 @@ module Ronin
|
|
110
109
|
# @since 1.0.0
|
111
110
|
#
|
112
111
|
def self.with_macs(macs)
|
113
|
-
all(
|
112
|
+
all(:mac_addresses => {:address => macs})
|
114
113
|
end
|
115
114
|
|
116
115
|
#
|
@@ -125,7 +124,7 @@ module Ronin
|
|
125
124
|
# @since 1.0.0
|
126
125
|
#
|
127
126
|
def self.with_hosts(names)
|
128
|
-
all(
|
127
|
+
all(:host_names => {:address => names})
|
129
128
|
end
|
130
129
|
|
131
130
|
#
|
@@ -140,7 +139,7 @@ module Ronin
|
|
140
139
|
# @since 1.0.0
|
141
140
|
#
|
142
141
|
def self.with_ports(numbers)
|
143
|
-
all(
|
142
|
+
all(:ports => {:number => numbers})
|
144
143
|
end
|
145
144
|
|
146
145
|
#
|
@@ -155,11 +154,21 @@ module Ronin
|
|
155
154
|
# @since 1.0.0
|
156
155
|
#
|
157
156
|
def self.lookup(name)
|
158
|
-
host =
|
159
|
-
|
160
|
-
|
161
|
-
|
157
|
+
host = HostName.first_or_new(:address => name)
|
158
|
+
ips = begin
|
159
|
+
Resolv.getaddresses(name)
|
160
|
+
rescue
|
161
|
+
[]
|
162
|
+
end
|
163
|
+
|
164
|
+
ips.map! do |addr|
|
165
|
+
IPAddress.first_or_create(
|
166
|
+
:address => addr,
|
167
|
+
:host_names => [host]
|
168
|
+
)
|
162
169
|
end
|
170
|
+
|
171
|
+
return ips
|
163
172
|
end
|
164
173
|
|
165
174
|
#
|
@@ -171,9 +180,20 @@ module Ronin
|
|
171
180
|
# @since 1.0.0
|
172
181
|
#
|
173
182
|
def lookup!
|
174
|
-
|
175
|
-
|
183
|
+
hosts = begin
|
184
|
+
Resolv.getnames(self.address.to_s)
|
185
|
+
rescue
|
186
|
+
[]
|
187
|
+
end
|
188
|
+
|
189
|
+
hosts.map! do |name|
|
190
|
+
HostName.first_or_create(
|
191
|
+
:address => name,
|
192
|
+
:ip_addresses => [self]
|
193
|
+
)
|
176
194
|
end
|
195
|
+
|
196
|
+
return hosts
|
177
197
|
end
|
178
198
|
|
179
199
|
#
|
@@ -185,13 +205,9 @@ module Ronin
|
|
185
205
|
# @since 1.0.0
|
186
206
|
#
|
187
207
|
def recent_mac_address
|
188
|
-
|
208
|
+
self.ip_address_mac_addresses.all(
|
189
209
|
:order => [:created_at.desc]
|
190
|
-
)
|
191
|
-
|
192
|
-
if relation
|
193
|
-
return relation.mac_address
|
194
|
-
end
|
210
|
+
).mac_addresses.first
|
195
211
|
end
|
196
212
|
|
197
213
|
#
|
@@ -203,13 +219,9 @@ module Ronin
|
|
203
219
|
# @since 1.0.0
|
204
220
|
#
|
205
221
|
def recent_host_name
|
206
|
-
|
222
|
+
self.host_name_ip_addresses.all(
|
207
223
|
:order => [:created_at.desc]
|
208
|
-
)
|
209
|
-
|
210
|
-
if relation
|
211
|
-
return relation.host_name
|
212
|
-
end
|
224
|
+
).host_names.first
|
213
225
|
end
|
214
226
|
|
215
227
|
#
|
@@ -222,11 +234,7 @@ module Ronin
|
|
222
234
|
# @since 1.0.0
|
223
235
|
#
|
224
236
|
def recent_os_guess
|
225
|
-
|
226
|
-
|
227
|
-
if relation
|
228
|
-
return relation.os
|
229
|
-
end
|
237
|
+
self.os_guesses.all(:order => [:created_at.desc]).oses.first
|
230
238
|
end
|
231
239
|
|
232
240
|
#
|