ronin-support 1.0.0.beta3 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +14 -0
- data/.rubocop.yml +109 -0
- data/ChangeLog.md +12 -1
- data/Gemfile +8 -4
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/examples/ssl_proxy.rb +2 -1
- data/examples/tcp_proxy.rb +6 -4
- data/lib/ronin/support/archive/tar/writer.rb +2 -2
- data/lib/ronin/support/archive/tar.rb +4 -4
- data/lib/ronin/support/archive/zip/reader.rb +2 -2
- data/lib/ronin/support/binary/array.rb +4 -7
- data/lib/ronin/support/binary/bit_flip.rb +7 -1
- data/lib/ronin/support/binary/buffer.rb +22 -22
- data/lib/ronin/support/binary/byte_slice.rb +17 -17
- data/lib/ronin/support/binary/cstring.rb +7 -4
- data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +4 -0
- data/lib/ronin/support/binary/ctypes/arch/arm.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +4 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +4 -0
- data/lib/ronin/support/binary/ctypes/arch/mips.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +4 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/x86.rb +3 -0
- data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +3 -0
- data/lib/ronin/support/binary/ctypes/array_type.rb +1 -1
- data/lib/ronin/support/binary/ctypes/big_endian.rb +3 -0
- data/lib/ronin/support/binary/ctypes/enum_type.rb +2 -2
- data/lib/ronin/support/binary/ctypes/little_endian.rb +3 -0
- data/lib/ronin/support/binary/ctypes/native.rb +3 -0
- data/lib/ronin/support/binary/ctypes/scalar_type.rb +2 -2
- data/lib/ronin/support/binary/ctypes/struct_type.rb +3 -3
- data/lib/ronin/support/binary/ctypes/type_resolver.rb +7 -8
- data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +1 -1
- data/lib/ronin/support/binary/ctypes/union_type.rb +3 -3
- data/lib/ronin/support/binary/ctypes.rb +3 -3
- data/lib/ronin/support/binary/memory.rb +2 -2
- data/lib/ronin/support/binary/packet.rb +3 -0
- data/lib/ronin/support/binary/stack.rb +3 -4
- data/lib/ronin/support/binary/struct/member.rb +5 -3
- data/lib/ronin/support/binary/struct.rb +81 -79
- data/lib/ronin/support/binary/template.rb +1 -0
- data/lib/ronin/support/binary/unhexdump/parser.rb +11 -11
- data/lib/ronin/support/binary/union.rb +22 -22
- data/lib/ronin/support/cli/ansi.rb +0 -1
- data/lib/ronin/support/cli/io_shell/core_ext/io.rb +1 -1
- data/lib/ronin/support/cli/io_shell.rb +4 -4
- data/lib/ronin/support/cli/printing.rb +3 -3
- data/lib/ronin/support/compression/zlib.rb +1 -1
- data/lib/ronin/support/core_ext/enumerable.rb +0 -2
- data/lib/ronin/support/core_ext/file.rb +1 -1
- data/lib/ronin/support/core_ext/kernel.rb +6 -5
- data/lib/ronin/support/core_ext/string.rb +2 -2
- data/lib/ronin/support/crypto/cert.rb +11 -15
- data/lib/ronin/support/crypto/cert_chain.rb +1 -1
- data/lib/ronin/support/crypto/cipher/aes.rb +3 -0
- data/lib/ronin/support/crypto/cipher/aes128.rb +4 -1
- data/lib/ronin/support/crypto/cipher/aes256.rb +4 -1
- data/lib/ronin/support/crypto/cipher.rb +1 -1
- data/lib/ronin/support/crypto/core_ext/file.rb +1 -1
- data/lib/ronin/support/crypto/key/methods.rb +4 -1
- data/lib/ronin/support/crypto/key.rb +5 -2
- data/lib/ronin/support/crypto/openssl.rb +1 -1
- data/lib/ronin/support/crypto.rb +0 -1
- data/lib/ronin/support/encoding/base16.rb +1 -1
- data/lib/ronin/support/encoding/base32.rb +28 -17
- data/lib/ronin/support/encoding/c/core_ext/integer.rb +1 -1
- data/lib/ronin/support/encoding/c.rb +4 -4
- data/lib/ronin/support/encoding/hex.rb +2 -2
- data/lib/ronin/support/encoding/js/core_ext/integer.rb +1 -1
- data/lib/ronin/support/encoding/js.rb +4 -4
- data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +2 -2
- data/lib/ronin/support/encoding/powershell.rb +4 -5
- data/lib/ronin/support/encoding/ruby.rb +4 -4
- data/lib/ronin/support/encoding/shell/core_ext/integer.rb +2 -2
- data/lib/ronin/support/encoding/shell.rb +3 -3
- data/lib/ronin/support/encoding/sql.rb +1 -1
- data/lib/ronin/support/encoding/xml.rb +2 -2
- data/lib/ronin/support/encoding.rb +95 -0
- data/lib/ronin/support/network/asn/list.rb +6 -1
- data/lib/ronin/support/network/asn/record.rb +3 -0
- data/lib/ronin/support/network/asn/record_set.rb +3 -0
- data/lib/ronin/support/network/asn.rb +167 -6
- data/lib/ronin/support/network/dns/resolver.rb +3 -0
- data/lib/ronin/support/network/domain.rb +21 -21
- data/lib/ronin/support/network/email_address.rb +1 -5
- data/lib/ronin/support/network/esmtp/mixin.rb +1 -0
- data/lib/ronin/support/network/ftp/mixin.rb +1 -1
- data/lib/ronin/support/network/host.rb +75 -47
- data/lib/ronin/support/network/http/core_ext.rb +1 -1
- data/lib/ronin/support/network/http.rb +317 -80
- data/lib/ronin/support/network/ip.rb +8 -10
- data/lib/ronin/support/network/ip_range/cidr.rb +1 -5
- data/lib/ronin/support/network/ip_range/glob.rb +1 -0
- data/lib/ronin/support/network/ip_range/range.rb +1 -1
- data/lib/ronin/support/network/ip_range.rb +1 -3
- data/lib/ronin/support/network/proxy.rb +4 -4
- data/lib/ronin/support/network/public_suffix/list.rb +10 -8
- data/lib/ronin/support/network/public_suffix/suffix_set.rb +3 -0
- data/lib/ronin/support/network/public_suffix.rb +9 -4
- data/lib/ronin/support/network/smtp/email.rb +0 -9
- data/lib/ronin/support/network/smtp/mixin.rb +2 -2
- data/lib/ronin/support/network/ssl/local_cert.rb +1 -3
- data/lib/ronin/support/network/ssl/mixin.rb +13 -13
- data/lib/ronin/support/network/ssl/openssl.rb +1 -1
- data/lib/ronin/support/network/ssl/proxy.rb +14 -16
- data/lib/ronin/support/network/ssl.rb +4 -2
- data/lib/ronin/support/network/tcp/proxy.rb +3 -3
- data/lib/ronin/support/network/tcp.rb +10 -12
- data/lib/ronin/support/network/telnet/mixin.rb +14 -14
- data/lib/ronin/support/network/tld/list.rb +2 -1
- data/lib/ronin/support/network/tld.rb +7 -4
- data/lib/ronin/support/network/tls/proxy.rb +1 -1
- data/lib/ronin/support/network/tls.rb +0 -2
- data/lib/ronin/support/network/udp/proxy.rb +5 -5
- data/lib/ronin/support/network/udp.rb +14 -16
- data/lib/ronin/support/path.rb +3 -3
- data/lib/ronin/support/text/erb/mixin.rb +3 -0
- data/lib/ronin/support/text/homoglyph/table.rb +3 -3
- data/lib/ronin/support/text/patterns/credentials.rb +2 -2
- data/lib/ronin/support/text/patterns/crypto.rb +1 -1
- data/lib/ronin/support/text/patterns/file_system.rb +3 -4
- data/lib/ronin/support/text/patterns/network.rb +10 -10
- data/lib/ronin/support/text/patterns/numeric.rb +1 -1
- data/lib/ronin/support/text/patterns/source_code.rb +2 -2
- data/lib/ronin/support/text/random.rb +2 -2
- data/lib/ronin/support/text/typo/generator.rb +2 -2
- data/lib/ronin/support/version.rb +1 -1
- data/ronin-support.gemspec +6 -5
- metadata +3 -2
@@ -163,7 +163,7 @@ module Ronin
|
|
163
163
|
if zero_pad then "&#x%.7x;" % byte
|
164
164
|
else "&#x%.2x;" % byte
|
165
165
|
end
|
166
|
-
|
166
|
+
else
|
167
167
|
raise(ArgumentError,"case (#{kwargs[:case].inspect}) keyword argument must be either :lower, :upper, or nil")
|
168
168
|
end
|
169
169
|
else
|
@@ -320,7 +320,7 @@ module Ronin
|
|
320
320
|
ESCAPED_CHARS.fetch(named_char.downcase)
|
321
321
|
elsif (decimal_char = scanner.scan(/&#\d+;/))
|
322
322
|
decimal_char[2..-2].to_i.chr(Encoding::UTF_8)
|
323
|
-
elsif (hex_char
|
323
|
+
elsif (hex_char = scanner.scan(/&#x[a-f0-9]+;/i))
|
324
324
|
hex_char[3..-2].to_i(16).chr(Encoding::UTF_8)
|
325
325
|
else
|
326
326
|
scanner.getch
|
@@ -38,6 +38,101 @@ module Ronin
|
|
38
38
|
#
|
39
39
|
# Contains additional encoding/decoding modules.
|
40
40
|
#
|
41
|
+
# ## Core-Ext Methods
|
42
|
+
#
|
43
|
+
# * {Integer#c_encode}
|
44
|
+
# * {Integer#c_escape}
|
45
|
+
# * {Integer#hex_encode}
|
46
|
+
# * {Integer#hex_escape}
|
47
|
+
# * {Integer#hex_int}
|
48
|
+
# * {Integer#html_encode}
|
49
|
+
# * {Integer#html_escape}
|
50
|
+
# * {Integer#http_encode}
|
51
|
+
# * {Integer#http_escape}
|
52
|
+
# * {Integer#js_encode}
|
53
|
+
# * {Integer#js_escape}
|
54
|
+
# * {Integer#powershell_encode}
|
55
|
+
# * {Integer#powershell_escape}
|
56
|
+
# * {Integer#shell_encode}
|
57
|
+
# * {Integer#shell_escape}
|
58
|
+
# * {Integer#uri_encode}
|
59
|
+
# * {Integer#uri_escape}
|
60
|
+
# * {Integer#uri_form_encode}
|
61
|
+
# * {Integer#uri_form_escape}
|
62
|
+
# * {Integer#xml_encode}
|
63
|
+
# * {Integer#xml_escape}
|
64
|
+
# * {String#base16_decode}
|
65
|
+
# * {String#base16_encode}
|
66
|
+
# * {String#base32_decode}
|
67
|
+
# * {String#base32_encode}
|
68
|
+
# * {String#base64_decode}
|
69
|
+
# * {String#base64_encode}
|
70
|
+
# * {String#c_encode}
|
71
|
+
# * {String#c_escape}
|
72
|
+
# * {String#c_string}
|
73
|
+
# * {String#c_unescape}
|
74
|
+
# * {String#c_unquote}
|
75
|
+
# * {String#hex_decode}
|
76
|
+
# * {String#hex_encode}
|
77
|
+
# * {String#hex_escape}
|
78
|
+
# * {String#hex_string}
|
79
|
+
# * {String#hex_unescape}
|
80
|
+
# * {String#hex_unquote}
|
81
|
+
# * {String#html_decode}
|
82
|
+
# * {String#html_encode}
|
83
|
+
# * {String#html_escape}
|
84
|
+
# * {String#html_unescape}
|
85
|
+
# * {String#http_decode}
|
86
|
+
# * {String#http_encode}
|
87
|
+
# * {String#http_escape}
|
88
|
+
# * {String#http_unescape}
|
89
|
+
# * {String#js_decode}
|
90
|
+
# * {String#js_encode}
|
91
|
+
# * {String#js_escape}
|
92
|
+
# * {String#js_string}
|
93
|
+
# * {String#js_unescape}
|
94
|
+
# * {String#js_unquote}
|
95
|
+
# * {String#powershell_decode}
|
96
|
+
# * {String#powershell_encode}
|
97
|
+
# * {String#powershell_escape}
|
98
|
+
# * {String#powershell_string}
|
99
|
+
# * {String#powershell_unescape}
|
100
|
+
# * {String#powershell_unquote}
|
101
|
+
# * {String#punycode_decode}
|
102
|
+
# * {String#punycode_encode}
|
103
|
+
# * {String#quoted_printable_escape}
|
104
|
+
# * {String#quoted_printable_unescape}
|
105
|
+
# * {String#ruby_decode}
|
106
|
+
# * {String#ruby_encode}
|
107
|
+
# * {String#ruby_escape}
|
108
|
+
# * {String#ruby_string}
|
109
|
+
# * {String#ruby_unescape}
|
110
|
+
# * {String#ruby_unquote}
|
111
|
+
# * {String#shell_decode}
|
112
|
+
# * {String#shell_encode}
|
113
|
+
# * {String#shell_escape}
|
114
|
+
# * {String#shell_string}
|
115
|
+
# * {String#shell_unescape}
|
116
|
+
# * {String#shell_unquote}
|
117
|
+
# * {String#sql_decode}
|
118
|
+
# * {String#sql_encode}
|
119
|
+
# * {String#sql_escape}
|
120
|
+
# * {String#sql_unescape}
|
121
|
+
# * {String#uri_decode}
|
122
|
+
# * {String#uri_encode}
|
123
|
+
# * {String#uri_escape}
|
124
|
+
# * {String#uri_form_decode}
|
125
|
+
# * {String#uri_form_encode}
|
126
|
+
# * {String#uri_form_escape}
|
127
|
+
# * {String#uri_form_unescape}
|
128
|
+
# * {String#uri_unescape}
|
129
|
+
# * {String#uu_decode}
|
130
|
+
# * {String#uu_encode}
|
131
|
+
# * {String#xml_decode}
|
132
|
+
# * {String#xml_encode}
|
133
|
+
# * {String#xml_escape}
|
134
|
+
# * {String#xml_unescape}
|
135
|
+
#
|
41
136
|
# @since 1.0.0
|
42
137
|
#
|
43
138
|
class Encoding < ::Encoding
|
@@ -145,6 +145,7 @@ module Ronin
|
|
145
145
|
begin
|
146
146
|
download(url: url, path: path)
|
147
147
|
rescue
|
148
|
+
# ignore any network failures
|
148
149
|
end
|
149
150
|
end
|
150
151
|
end
|
@@ -176,8 +177,10 @@ module Ronin
|
|
176
177
|
line.chomp!
|
177
178
|
|
178
179
|
first, last, number, country_code, name = line.split("\t",5)
|
180
|
+
|
179
181
|
range = IPRange::Range.new(first,last)
|
180
182
|
number = number.to_i
|
183
|
+
|
181
184
|
country_code = nil if country_code == 'None'
|
182
185
|
name = nil if name == 'Not routed'
|
183
186
|
|
@@ -219,7 +222,9 @@ module Ronin
|
|
219
222
|
prefixes = if record.range.ipv6? then @ipv6_prefixes
|
220
223
|
else @ipv4_prefixes
|
221
224
|
end
|
222
|
-
|
225
|
+
|
226
|
+
records = (prefixes[record.range.prefix] ||= [])
|
227
|
+
records << record
|
223
228
|
return self
|
224
229
|
end
|
225
230
|
|
@@ -27,6 +27,83 @@ module Ronin
|
|
27
27
|
#
|
28
28
|
# Handles Autonomous System Numbers (ASN).
|
29
29
|
#
|
30
|
+
# ## Example
|
31
|
+
#
|
32
|
+
# Query the ASN record for a given IP address:
|
33
|
+
#
|
34
|
+
# Network::ASN.query('4.2.2.1')
|
35
|
+
# # =>
|
36
|
+
# # #<Ronin::Support::Network::ASN::DNSRecord:0x00007f34424f4ac0
|
37
|
+
# # @country_code="US",
|
38
|
+
# # @name=nil,
|
39
|
+
# # @number=3356,
|
40
|
+
# # @range=#<Ronin::Support::Network::IPRange::CIDR: 4.0.0.0/9>>
|
41
|
+
#
|
42
|
+
# Query all ASN records for the given ISP name:
|
43
|
+
#
|
44
|
+
# Network::ASN.list.name('LEVEL3').to_a
|
45
|
+
# # => [#<Ronin::Support::Network::ASN::Record:0x00007f344164ed18
|
46
|
+
# # @country_code="US",
|
47
|
+
# # @name="LEVEL3",
|
48
|
+
# # @number=3356,
|
49
|
+
# # @range=#<Ronin::Support::Network::IPRange::Range: 4.0.0.0 - 4.23.87.255>>,
|
50
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007f344164d828
|
51
|
+
# # @country_code="US",
|
52
|
+
# # @name="LEVEL3",
|
53
|
+
# # @number=3356,
|
54
|
+
# # @range=#<Ronin::Support::Network::IPRange::Range: 4.23.90.0 - 4.23.91.255>>,
|
55
|
+
# # ...]
|
56
|
+
#
|
57
|
+
# Query all IPv6 ASN records for a given company:
|
58
|
+
#
|
59
|
+
# Network::ASN.list.name('GOOGLE').ipv6
|
60
|
+
# # =>
|
61
|
+
# # [#<Ronin::Support::Network::ASN::Record:0x00007fc45b411500
|
62
|
+
# # @country_code="US",
|
63
|
+
# # @name="GOOGLE",
|
64
|
+
# # @number=15169,
|
65
|
+
# # @range=
|
66
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:: - 2001:4860:1024:ffff:ffff:ffff:ffff:ffff>>,
|
67
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc45b428d68
|
68
|
+
# # @country_code="US",
|
69
|
+
# # @name="GOOGLE",
|
70
|
+
# # @number=15169,
|
71
|
+
# # @range=
|
72
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:1026:: - 2001:4860:4804:ffff:ffff:ffff:ffff:ffff>>,
|
73
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc45b44be08
|
74
|
+
# # @country_code="US",
|
75
|
+
# # @name="GOOGLE",
|
76
|
+
# # @number=15169,
|
77
|
+
# # @range=
|
78
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:4806:: - 2001:4860:4864:ffff:ffff:ffff:ffff:ffff>>,
|
79
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc45b4562e0
|
80
|
+
# # @country_code="US",
|
81
|
+
# # @name="GOOGLE",
|
82
|
+
# # @number=15169,
|
83
|
+
# # @range=
|
84
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:4865:: - 2001:4860:ffff:ffff:ffff:ffff:ffff:ffff>>]
|
85
|
+
#
|
86
|
+
# Return all ASN numbers for a country:
|
87
|
+
#
|
88
|
+
# Network::ASN.list.country('NZ').numbers
|
89
|
+
# # => #<Set:
|
90
|
+
# # {45177,
|
91
|
+
# # 55759,
|
92
|
+
# # 55850,
|
93
|
+
# # 9500,
|
94
|
+
# # ...}>
|
95
|
+
#
|
96
|
+
# Return all ASN names for a country:
|
97
|
+
#
|
98
|
+
# Network::ASN.list.country_code('NZ').names
|
99
|
+
# # Network::ASN.list.country('NZ').names
|
100
|
+
# # =>
|
101
|
+
# # #<Set:
|
102
|
+
# # {"DEVOLI-AS-AP Devoli",
|
103
|
+
# # "MFAT-NET-NZ 195 Lambton Quay",
|
104
|
+
# # "MERCURYNZ-AS-AP Mercury NZ Limited",
|
105
|
+
# # ...}>
|
106
|
+
#
|
30
107
|
# @api public
|
31
108
|
#
|
32
109
|
# @since 1.0.0
|
@@ -45,6 +122,15 @@ module Ronin
|
|
45
122
|
# Performs rDNS queries using `*.nmap.asn.cymru.com` for IPv4
|
46
123
|
# addresses and `*.nmap6.asn.cymru.com` for IPv6 addresses.
|
47
124
|
#
|
125
|
+
# @example
|
126
|
+
# Network::ASN.query('4.2.2.1')
|
127
|
+
# # =>
|
128
|
+
# # #<Ronin::Support::Network::ASN::DNSRecord:0x00007f34424f4ac0
|
129
|
+
# # @country_code="US",
|
130
|
+
# # @name=nil,
|
131
|
+
# # @number=3356,
|
132
|
+
# # @range=#<Ronin::Support::Network::IPRange::CIDR: 4.0.0.0/9>>
|
133
|
+
#
|
48
134
|
def self.query(ip)
|
49
135
|
ip = IPAddr.new(ip) unless ip.kind_of?(IPAddr)
|
50
136
|
|
@@ -62,8 +148,9 @@ module Ronin
|
|
62
148
|
return nil
|
63
149
|
end
|
64
150
|
|
65
|
-
asn, cidr_range, country_code, *
|
66
|
-
|
151
|
+
asn, cidr_range, country_code, *_rest = string.split(' | ',5)
|
152
|
+
|
153
|
+
asn = asn.to_i
|
67
154
|
cidr_range = IPRange::CIDR.new(cidr_range)
|
68
155
|
|
69
156
|
return DNSRecord.new(asn,cidr_range,country_code)
|
@@ -76,11 +163,85 @@ module Ronin
|
|
76
163
|
# @return [List]
|
77
164
|
# The loaded list file.
|
78
165
|
#
|
166
|
+
# @note
|
167
|
+
# The first access of {list} will take a while, as the entire ASN
|
168
|
+
# list will need to be downloaded and parsed.
|
169
|
+
#
|
170
|
+
# @example Query the ASN record for the given IP address:
|
171
|
+
# Network::ASN.list.ip('4.2.2.1')
|
172
|
+
# # =>
|
173
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc46207f818
|
174
|
+
# # @country_code="US",
|
175
|
+
# # @name="LEVEL3",
|
176
|
+
# # @number=3356,
|
177
|
+
# # @range=#<Ronin::Support::Network::IPRange::Range: 4.0.0.0 - 4.23.87.255>>
|
178
|
+
#
|
179
|
+
# @example Query all ASN records for the given ISP name:
|
180
|
+
# Network::ASN.list.name('LEVEL3').to_a
|
181
|
+
# # => [#<Ronin::Support::Network::ASN::Record:0x00007f344164ed18
|
182
|
+
# # @country_code="US",
|
183
|
+
# # @name="LEVEL3",
|
184
|
+
# # @number=3356,
|
185
|
+
# # @range=#<Ronin::Support::Network::IPRange::Range: 4.0.0.0 - 4.23.87.255>>,
|
186
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007f344164d828
|
187
|
+
# # @country_code="US",
|
188
|
+
# # @name="LEVEL3",
|
189
|
+
# # @number=3356,
|
190
|
+
# # @range=#<Ronin::Support::Network::IPRange::Range: 4.23.90.0 - 4.23.91.255>>,
|
191
|
+
# # ...]
|
192
|
+
#
|
193
|
+
# @example Query all IPv6 ASN records for a given company:
|
194
|
+
# Network::ASN.list.name('GOOGLE').ipv6
|
195
|
+
# # =>
|
196
|
+
# # [#<Ronin::Support::Network::ASN::Record:0x00007fc45b411500
|
197
|
+
# # @country_code="US",
|
198
|
+
# # @name="GOOGLE",
|
199
|
+
# # @number=15169,
|
200
|
+
# # @range=
|
201
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:: - 2001:4860:1024:ffff:ffff:ffff:ffff:ffff>>,
|
202
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc45b428d68
|
203
|
+
# # @country_code="US",
|
204
|
+
# # @name="GOOGLE",
|
205
|
+
# # @number=15169,
|
206
|
+
# # @range=
|
207
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:1026:: - 2001:4860:4804:ffff:ffff:ffff:ffff:ffff>>,
|
208
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc45b44be08
|
209
|
+
# # @country_code="US",
|
210
|
+
# # @name="GOOGLE",
|
211
|
+
# # @number=15169,
|
212
|
+
# # @range=
|
213
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:4806:: - 2001:4860:4864:ffff:ffff:ffff:ffff:ffff>>,
|
214
|
+
# # #<Ronin::Support::Network::ASN::Record:0x00007fc45b4562e0
|
215
|
+
# # @country_code="US",
|
216
|
+
# # @name="GOOGLE",
|
217
|
+
# # @number=15169,
|
218
|
+
# # @range=
|
219
|
+
# # #<Ronin::Support::Network::IPRange::Range: 2001:4860:4865:: - 2001:4860:ffff:ffff:ffff:ffff:ffff:ffff>>]
|
220
|
+
#
|
221
|
+
# @example Return all ASN numbers for a country:
|
222
|
+
# Network::ASN.list.country('NZ').numbers
|
223
|
+
# # => #<Set:
|
224
|
+
# # {45177,
|
225
|
+
# # 55759,
|
226
|
+
# # 55850,
|
227
|
+
# # 9500,
|
228
|
+
# # ...}>
|
229
|
+
#
|
230
|
+
# @example Return all ASN names for a country:
|
231
|
+
# Network::ASN.list.country_code('NZ').names
|
232
|
+
# # Network::ASN.list.country('NZ').names
|
233
|
+
# # =>
|
234
|
+
# # #<Set:
|
235
|
+
# # {"DEVOLI-AS-AP Devoli",
|
236
|
+
# # "MFAT-NET-NZ 195 Lambton Quay",
|
237
|
+
# # "MERCURYNZ-AS-AP Mercury NZ Limited",
|
238
|
+
# # ...}>
|
239
|
+
#
|
79
240
|
def self.list
|
80
|
-
@list ||=
|
81
|
-
|
82
|
-
|
83
|
-
|
241
|
+
@list ||= begin
|
242
|
+
List.update
|
243
|
+
List.load_file
|
244
|
+
end
|
84
245
|
end
|
85
246
|
end
|
86
247
|
end
|
@@ -90,6 +90,7 @@ module Ronin
|
|
90
90
|
begin
|
91
91
|
@resolver.getaddress(host).to_s
|
92
92
|
rescue Resolv::ResolvError
|
93
|
+
# ignore any Resolv failures
|
93
94
|
end
|
94
95
|
end
|
95
96
|
|
@@ -123,6 +124,7 @@ module Ronin
|
|
123
124
|
def get_name(ip)
|
124
125
|
@resolver.getname(ip).to_s
|
125
126
|
rescue Resolv::ResolvError
|
127
|
+
# ignore any Resolv failures
|
126
128
|
end
|
127
129
|
|
128
130
|
#
|
@@ -189,6 +191,7 @@ module Ronin
|
|
189
191
|
begin
|
190
192
|
@resolver.getresource(name,record_class)
|
191
193
|
rescue Resolv::ResolvError
|
194
|
+
# ignore any Resolv failures
|
192
195
|
end
|
193
196
|
end
|
194
197
|
|
@@ -33,31 +33,31 @@ module Ronin
|
|
33
33
|
# # => #<Ronin::Support::Network::IP: 192.30.255.113>
|
34
34
|
# domain.mailservers
|
35
35
|
# # => ["aspmx.l.google.com",
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
36
|
+
# # "alt3.aspmx.l.google.com",
|
37
|
+
# # "alt4.aspmx.l.google.com",
|
38
|
+
# # "alt1.aspmx.l.google.com",
|
39
|
+
# # "alt2.aspmx.l.google.com"]
|
40
40
|
# domain.nameservers
|
41
41
|
# # => ["dns1.p08.nsone.net",
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
42
|
+
# # "dns2.p08.nsone.net",
|
43
|
+
# # "dns3.p08.nsone.net",
|
44
|
+
# # "dns4.p08.nsone.net",
|
45
|
+
# # "ns-1283.awsdns-32.org",
|
46
|
+
# # "ns-1707.awsdns-21.co.uk",
|
47
|
+
# # "ns-421.awsdns-52.com",
|
48
|
+
# # "ns-520.awsdns-01.net"]
|
49
49
|
# domain.txt_strings
|
50
50
|
# # => ["v=spf1 ip4:192.30.252.0/22 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com include:spf.protection.outlook.com include:mail.zendesk.com include:_spf.salesforce.com include:servers.mcsv.net ip4:166.78.69.169 ip4:1",
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
51
|
+
# # "66.78.69.170 ip4:166.78.71.131 ip4:167.89.101.2 ip4:167.89.101.192/28 ip4:192.254.112.60 ip4:192.254.112.98/31 ip4:192.254.113.10 ip4:192.254.113.101 ip4:192.254.114.176 ip4:62.253.227.114 ~all",
|
52
|
+
# # "MS=6BF03E6AF5CB689E315FB6199603BABF2C88D805",
|
53
|
+
# # "MS=ms44452932",
|
54
|
+
# # "atlassian-domain-verification=jjgw98AKv2aeoYFxiL/VFaoyPkn3undEssTRuMg6C/3Fp/iqhkV4HVV7WjYlVeF8",
|
55
|
+
# # "stripe-verification=f88ef17321660a01bab1660454192e014defa29ba7b8de9633c69d6b4912217f",
|
56
|
+
# # "google-site-verification=UTM-3akMgubp6tQtgEuAkYNYLyYAvpTnnSrDMWoDR3o",
|
57
|
+
# # "MS=ms58704441",
|
58
|
+
# # "docusign=087098e3-3d46-47b7-9b4e-8a23028154cd",
|
59
|
+
# # "adobe-idp-site-verification=b92c9e999aef825edc36e0a3d847d2dbad5b2fc0e05c79ddd7a16139b48ecf4b",
|
60
|
+
# # "apple-domain-verification=RyQhdzTl6Z6x8ZP4"]
|
61
61
|
#
|
62
62
|
# @api public
|
63
63
|
#
|
@@ -232,8 +232,6 @@ module Ronin
|
|
232
232
|
return new(name: name, **parse_address(address))
|
233
233
|
end
|
234
234
|
|
235
|
-
private
|
236
|
-
|
237
235
|
#
|
238
236
|
# Parses the address portion of an email address.
|
239
237
|
#
|
@@ -326,8 +324,6 @@ module Ronin
|
|
326
324
|
return {domain: domain, address: address}
|
327
325
|
end
|
328
326
|
|
329
|
-
public
|
330
|
-
|
331
327
|
# Email address de-obfuscation rules.
|
332
328
|
DEOBFUSCATIONS = {
|
333
329
|
/\s+@\s+/ => '@',
|
@@ -425,7 +421,7 @@ module Ronin
|
|
425
421
|
|
426
422
|
# Email address obfuscation rules.
|
427
423
|
OBFUSCATIONS = [
|
428
|
-
[/\@/, {'@' => ' @ '
|
424
|
+
[/\@/, {'@' => ' @ ' }],
|
429
425
|
[/\@/, {'@' => ' AT ' }],
|
430
426
|
[/\@/, {'@' => ' at ' }],
|
431
427
|
[/\@/, {'@' => '[AT]' }],
|