dnstraverse 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +61 -18
- data/bin/dnstraverse +30 -57
- data/lib/dnstraverse/caching_resolver.rb +2 -4
- data/lib/dnstraverse/decoded_query.rb +1 -0
- data/lib/dnstraverse/fingerprint.rb +1 -3
- data/lib/dnstraverse/fingerprint_rules.rb +249 -224
- data/lib/dnstraverse/message_utility.rb +20 -15
- data/lib/dnstraverse/referral.rb +32 -12
- data/lib/dnstraverse/response.rb +3 -1
- data/lib/dnstraverse/summary_stats.rb +94 -0
- data/lib/dnstraverse/traverser.rb +20 -20
- data/lib/dnstraverse/version.rb +8 -0
- metadata +101 -180
- data/a +0 -44
- data/doc.tar +0 -0
- data/doc/classes/DNSTraverse.html +0 -198
- data/doc/classes/DNSTraverse/CachingResolver.html +0 -172
- data/doc/classes/DNSTraverse/CachingResolver.src/M000055.html +0 -21
- data/doc/classes/DNSTraverse/CachingResolver.src/M000056.html +0 -42
- data/doc/classes/DNSTraverse/DecodedQuery.html +0 -475
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000020.html +0 -34
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000021.html +0 -23
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000022.html +0 -19
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000023.html +0 -33
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000024.html +0 -26
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000025.html +0 -24
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000026.html +0 -29
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000027.html +0 -19
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000028.html +0 -18
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000029.html +0 -32
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000030.html +0 -19
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000031.html +0 -19
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000032.html +0 -20
- data/doc/classes/DNSTraverse/DecodedQuery.src/M000033.html +0 -31
- data/doc/classes/DNSTraverse/DecodedQueryCache.html +0 -182
- data/doc/classes/DNSTraverse/DecodedQueryCache.src/M000063.html +0 -21
- data/doc/classes/DNSTraverse/DecodedQueryCache.src/M000064.html +0 -33
- data/doc/classes/DNSTraverse/Fingerprint.html +0 -277
- data/doc/classes/DNSTraverse/Fingerprint.src/M000047.html +0 -29
- data/doc/classes/DNSTraverse/Fingerprint.src/M000048.html +0 -18
- data/doc/classes/DNSTraverse/Fingerprint.src/M000049.html +0 -57
- data/doc/classes/DNSTraverse/Fingerprint.src/M000050.html +0 -28
- data/doc/classes/DNSTraverse/Fingerprint.src/M000051.html +0 -27
- data/doc/classes/DNSTraverse/Fingerprint.src/M000052.html +0 -35
- data/doc/classes/DNSTraverse/Fingerprint.src/M000053.html +0 -24
- data/doc/classes/DNSTraverse/Fingerprint.src/M000054.html +0 -29
- data/doc/classes/DNSTraverse/InfoCache.html +0 -235
- data/doc/classes/DNSTraverse/InfoCache.src/M000034.html +0 -20
- data/doc/classes/DNSTraverse/InfoCache.src/M000035.html +0 -23
- data/doc/classes/DNSTraverse/InfoCache.src/M000036.html +0 -28
- data/doc/classes/DNSTraverse/InfoCache.src/M000037.html +0 -25
- data/doc/classes/DNSTraverse/InfoCache.src/M000038.html +0 -27
- data/doc/classes/DNSTraverse/InfoCache.src/M000039.html +0 -33
- data/doc/classes/DNSTraverse/MessageUtility.html +0 -275
- data/doc/classes/DNSTraverse/MessageUtility.src/M000011.html +0 -35
- data/doc/classes/DNSTraverse/MessageUtility.src/M000012.html +0 -37
- data/doc/classes/DNSTraverse/MessageUtility.src/M000013.html +0 -28
- data/doc/classes/DNSTraverse/MessageUtility.src/M000014.html +0 -27
- data/doc/classes/DNSTraverse/MessageUtility.src/M000015.html +0 -30
- data/doc/classes/DNSTraverse/MessageUtility.src/M000016.html +0 -32
- data/doc/classes/DNSTraverse/MessageUtility.src/M000017.html +0 -34
- data/doc/classes/DNSTraverse/MessageUtility.src/M000018.html +0 -23
- data/doc/classes/DNSTraverse/MessageUtility.src/M000019.html +0 -36
- data/doc/classes/DNSTraverse/Referral.html +0 -641
- data/doc/classes/DNSTraverse/Referral.src/M000065.html +0 -22
- data/doc/classes/DNSTraverse/Referral.src/M000066.html +0 -21
- data/doc/classes/DNSTraverse/Referral.src/M000067.html +0 -23
- data/doc/classes/DNSTraverse/Referral.src/M000068.html +0 -19
- data/doc/classes/DNSTraverse/Referral.src/M000069.html +0 -18
- data/doc/classes/DNSTraverse/Referral.src/M000070.html +0 -54
- data/doc/classes/DNSTraverse/Referral.src/M000071.html +0 -25
- data/doc/classes/DNSTraverse/Referral.src/M000072.html +0 -27
- data/doc/classes/DNSTraverse/Referral.src/M000073.html +0 -23
- data/doc/classes/DNSTraverse/Referral.src/M000074.html +0 -20
- data/doc/classes/DNSTraverse/Referral.src/M000075.html +0 -40
- data/doc/classes/DNSTraverse/Referral.src/M000076.html +0 -52
- data/doc/classes/DNSTraverse/Referral.src/M000077.html +0 -29
- data/doc/classes/DNSTraverse/Referral.src/M000078.html +0 -54
- data/doc/classes/DNSTraverse/Referral.src/M000079.html +0 -18
- data/doc/classes/DNSTraverse/Referral.src/M000080.html +0 -22
- data/doc/classes/DNSTraverse/Referral.src/M000081.html +0 -20
- data/doc/classes/DNSTraverse/Referral.src/M000082.html +0 -29
- data/doc/classes/DNSTraverse/Referral.src/M000083.html +0 -28
- data/doc/classes/DNSTraverse/Referral.src/M000084.html +0 -29
- data/doc/classes/DNSTraverse/Referral.src/M000085.html +0 -55
- data/doc/classes/DNSTraverse/Referral.src/M000086.html +0 -30
- data/doc/classes/DNSTraverse/Referral.src/M000087.html +0 -24
- data/doc/classes/DNSTraverse/Referral.src/M000088.html +0 -20
- data/doc/classes/DNSTraverse/Referral.src/M000089.html +0 -58
- data/doc/classes/DNSTraverse/ResolveError.html +0 -111
- data/doc/classes/DNSTraverse/Response.html +0 -271
- data/doc/classes/DNSTraverse/Response.src/M000057.html +0 -27
- data/doc/classes/DNSTraverse/Response.src/M000058.html +0 -21
- data/doc/classes/DNSTraverse/Response.src/M000059.html +0 -19
- data/doc/classes/DNSTraverse/Response.src/M000060.html +0 -21
- data/doc/classes/DNSTraverse/Response.src/M000061.html +0 -31
- data/doc/classes/DNSTraverse/Response.src/M000062.html +0 -23
- data/doc/classes/DNSTraverse/Response/NoGlue.html +0 -222
- data/doc/classes/DNSTraverse/Response/NoGlue.src/M000007.html +0 -32
- data/doc/classes/DNSTraverse/Response/NoGlue.src/M000008.html +0 -18
- data/doc/classes/DNSTraverse/Response/NoGlue.src/M000009.html +0 -18
- data/doc/classes/DNSTraverse/Response/NoGlue.src/M000010.html +0 -18
- data/doc/classes/DNSTraverse/Traverser.html +0 -247
- data/doc/classes/DNSTraverse/Traverser.src/M000040.html +0 -17
- data/doc/classes/DNSTraverse/Traverser.src/M000041.html +0 -52
- data/doc/classes/DNSTraverse/Traverser.src/M000042.html +0 -61
- data/doc/classes/DNSTraverse/Traverser.src/M000043.html +0 -110
- data/doc/classes/DNSTraverse/Traverser.src/M000044.html +0 -63
- data/doc/classes/DNSTraverse/Traverser.src/M000045.html +0 -28
- data/doc/classes/DNSTraverse/Traverser.src/M000046.html +0 -18
- data/doc/classes/FingerprintRules.html +0 -175
- data/doc/classes/Log.html +0 -174
- data/doc/classes/Log.src/M000002.html +0 -18
- data/doc/classes/Log.src/M000003.html +0 -18
- data/doc/classes/Log.src/M000004.html +0 -18
- data/doc/classes/Log/Formatter.html +0 -165
- data/doc/classes/Log/Formatter.src/M000005.html +0 -22
- data/doc/classes/Log/Formatter.src/M000006.html +0 -24
- data/doc/classes/TestFingerprint.html +0 -137
- data/doc/classes/TestFingerprint.src/M000001.html +0 -22
- data/doc/created.rid +0 -1
- data/doc/files/lib/dnstraverse/caching_resolver_rb.html +0 -132
- data/doc/files/lib/dnstraverse/decoded_query_cache_rb.html +0 -132
- data/doc/files/lib/dnstraverse/decoded_query_rb.html +0 -132
- data/doc/files/lib/dnstraverse/fingerprint_rb.html +0 -134
- data/doc/files/lib/dnstraverse/fingerprint_rules_rb.html +0 -143
- data/doc/files/lib/dnstraverse/info_cache_rb.html +0 -131
- data/doc/files/lib/dnstraverse/log_rb.html +0 -131
- data/doc/files/lib/dnstraverse/message_utility_rb.html +0 -124
- data/doc/files/lib/dnstraverse/referral_rb.html +0 -134
- data/doc/files/lib/dnstraverse/response_noglue_rb.html +0 -124
- data/doc/files/lib/dnstraverse/response_rb.html +0 -132
- data/doc/files/lib/dnstraverse/traverser_rb.html +0 -137
- data/doc/files/test/test_fingerprint_rb.html +0 -133
- data/doc/fr_class_index.html +0 -43
- data/doc/fr_file_index.html +0 -39
- data/doc/fr_method_index.html +0 -115
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
data/Rakefile
CHANGED
@@ -1,19 +1,62 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'lib/dnstraverse/version'
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler'
|
7
|
+
begin
|
8
|
+
Bundler.setup(:default, :development)
|
9
|
+
rescue Bundler::BundlerError => e
|
10
|
+
$stderr.puts e.message
|
11
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
12
|
+
exit e.status_code
|
13
|
+
end
|
14
|
+
require 'rake'
|
15
|
+
|
16
|
+
require 'jeweler'
|
17
|
+
Jeweler::Tasks.new do |gem|
|
18
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
19
|
+
gem.name = 'dnstraverse'
|
20
|
+
gem.summary = 'Complete DNS traversal checker'
|
21
|
+
gem.description = File.read(File.join(File.dirname(__FILE__), 'README'))
|
22
|
+
gem.homepage = 'http://www.squish.net/dnstraverse/'
|
23
|
+
gem.license = "GPL"
|
24
|
+
gem.email = 'james@squish.net'
|
25
|
+
gem.authors = ['James Ponder']
|
26
|
+
gem.required_ruby_version = '>=1.8'
|
27
|
+
gem.version = DNSTraverse::Version::STRING;
|
28
|
+
gem.files = FileList["Rakefile", "{bin,generators,lib,test}/**/*"]
|
29
|
+
gem.extra_rdoc_files = ['README', 'LICENSE']
|
30
|
+
gem.executables = [ 'dnstraverse' ]
|
31
|
+
gem.has_rdoc = true
|
32
|
+
# gem.test_files = Dir["test/test*.rb"]
|
33
|
+
# dependencies defined in Gemfile
|
34
|
+
end
|
35
|
+
Jeweler::RubygemsDotOrgTasks.new
|
36
|
+
|
37
|
+
require 'rake/testtask'
|
38
|
+
Rake::TestTask.new(:test) do |test|
|
39
|
+
test.libs << 'lib' << 'test'
|
40
|
+
test.pattern = 'test/**/test_*.rb'
|
41
|
+
test.verbose = true
|
42
|
+
end
|
43
|
+
|
44
|
+
#require 'rcov/rcovtask'
|
45
|
+
#Rcov::RcovTask.new do |test|
|
46
|
+
# test.libs << 'test'
|
47
|
+
# test.pattern = 'test/**/test_*.rb'
|
48
|
+
# test.verbose = true
|
49
|
+
# test.rcov_opts << '--exclude "gems/*"'
|
50
|
+
#end
|
51
|
+
|
52
|
+
task :default => :test
|
53
|
+
|
54
|
+
require 'rdoc/task'
|
55
|
+
RDoc::Task.new do |rdoc|
|
56
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
57
|
+
|
58
|
+
rdoc.rdoc_dir = 'rdoc'
|
59
|
+
rdoc.title = "dnstraverse #{version}"
|
60
|
+
rdoc.rdoc_files.include('README*')
|
61
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
18
62
|
end
|
19
|
-
Rake::GemPackageTask.new(spec).define
|
data/bin/dnstraverse
CHANGED
@@ -6,34 +6,6 @@
|
|
6
6
|
#
|
7
7
|
# = Usage
|
8
8
|
# dnstraverse [options] DOMAIN
|
9
|
-
# -t, --type TYPE Select record type (A, AAAA, SRV, WKS, NS,
|
10
|
-
# CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, ANY)
|
11
|
-
# --root-server HOST Root DNS server (default - ask local resolver)
|
12
|
-
# --[no-]all-root-servers Find all root servers (default false)
|
13
|
-
# --root-aaaa TODO Look for IPv6 addresses for root servers
|
14
|
-
# --follow-aaaa TODO Only follow AAAA records for referrals
|
15
|
-
# --udp-size SIZE Turn on EDNS0 with given UDP size
|
16
|
-
# --max-depth DEPTH Maximum depth to traverse (default 10)
|
17
|
-
# --retries TIMES Number of 2s retries before timing out (2)
|
18
|
-
# --[no-]allow-tcp Try using tcp if udp truncated (default true)
|
19
|
-
# --[no-]always-tcp Always use tcp (default false)
|
20
|
-
#
|
21
|
-
# --[no-]show-progress Display progress information (default true)
|
22
|
-
# --[no-]show-all-stats Display statistics as we go (default false)
|
23
|
-
# --[no-]show-resolves Display referral resolutions (default false)
|
24
|
-
# --[no-]show-serverlist Display list of servers seen (default true)
|
25
|
-
# --[no-]show-versions Display versions of dns servers (default true)
|
26
|
-
# --[no-]show-results Display the results (default true)
|
27
|
-
#
|
28
|
-
# --fast Short-cut answers using previous information,
|
29
|
-
# less accurate but usually ok - by-passes the
|
30
|
-
# proper simulation of the resolver cache.
|
31
|
-
#
|
32
|
-
# -v, --[no-]verbose Run verbosely
|
33
|
-
# -d, --debug Debug mode: One -d for DNSCheck debug
|
34
|
-
# Two -d also turns on library debug
|
35
|
-
# -h, --help Show full help
|
36
|
-
# -V, --version Show version and exit
|
37
9
|
#
|
38
10
|
# == Example
|
39
11
|
# dnstraverse www.nic.uk
|
@@ -56,8 +28,7 @@ require 'pp'
|
|
56
28
|
require 'dnstraverse/traverser'
|
57
29
|
require 'dnstraverse/log'
|
58
30
|
require 'dnstraverse/fingerprint'
|
59
|
-
|
60
|
-
Version = [ 0, 0, 1].freeze
|
31
|
+
require 'dnstraverse/version'
|
61
32
|
|
62
33
|
EMPTY_STRING = ''.freeze
|
63
34
|
|
@@ -136,7 +107,7 @@ options[:broken] = false
|
|
136
107
|
options[:progress] = true
|
137
108
|
options[:summary] = true
|
138
109
|
options[:resolves] = false
|
139
|
-
options[:
|
110
|
+
options[:servers] = false
|
140
111
|
options[:versions] = true
|
141
112
|
options[:domainname] = nil
|
142
113
|
options[:follow_aaaa] = false
|
@@ -145,36 +116,37 @@ options[:always_tcp] = false
|
|
145
116
|
options[:allow_tcp] = false
|
146
117
|
options[:allstats] = false
|
147
118
|
options[:saveobjects] = false
|
148
|
-
options[:fast] =
|
149
|
-
options[:udpsize] =
|
150
|
-
options[:maxdepth] =
|
119
|
+
options[:fast] = true
|
120
|
+
options[:udpsize] = 2048
|
121
|
+
options[:maxdepth] = 24
|
151
122
|
options[:retries] = 2
|
152
123
|
options[:results] = true
|
153
124
|
|
154
125
|
opts = OptionParser.new
|
155
126
|
opts.banner = "Usage: #{File.basename($0)} [options] DOMAIN"
|
156
|
-
opts.on("-v", "--[no-]verbose") { |o| options[:verbose] = o }
|
157
|
-
opts.on("-d", "--[no-]debug") { |o| options[:debug]+= 1 }
|
158
|
-
opts.on("-r", "--root-server HOST") { |o| options[:root] = o }
|
159
|
-
opts.on("-a", "--all-root-servers") { |o| options[:allroots] = o }
|
160
|
-
opts.on("-t", "--type TYPE", Dnsruby::Types.constants
|
161
|
-
|
162
|
-
opts.on("--
|
163
|
-
opts.on("--
|
164
|
-
opts.on("--
|
165
|
-
opts.on("--
|
166
|
-
opts.on("--
|
167
|
-
opts.on("--[no-]
|
168
|
-
opts.on("--[no-]
|
169
|
-
opts.on("--[no-]show-
|
170
|
-
opts.on("--[no-]show-
|
171
|
-
opts.on("--[no-]show-
|
172
|
-
opts.on("--[no-]show-
|
173
|
-
opts.on("--[no-]show-
|
127
|
+
opts.on("-v", "--[no-]verbose", "Run verbosely") { |o| options[:verbose] = o }
|
128
|
+
opts.on("-d", "--[no-]debug", "Debug mode. Use twice to turn on library debug.") { |o| options[:debug]+= 1 }
|
129
|
+
opts.on("-r", "--root-server HOST", "Root DNS server (default - ask local resolver)") { |o| options[:root] = o }
|
130
|
+
opts.on("-a", "--all-root-servers", "Find all root servers (default false)") { |o| options[:allroots] = o }
|
131
|
+
opts.on("-t", "--type TYPE", Dnsruby::Types.constants,
|
132
|
+
"Record type (A, AAAA, SRV, WKS, NS, CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, ANY") { |o| options[:type] = o }
|
133
|
+
opts.on("--udp-size SIZE", "UDP packet size (default 2048). Set to 512 to turn off EDNS0.") { |o| options[:udpsize] = o }
|
134
|
+
opts.on("--allow-tcp", "Try using tcp if udp truncated (default true)") { |o| options[:allow_tcp] = o }
|
135
|
+
opts.on("--always-tcp", "Always use tcp (default false)") { |o| options[:always_tcp] = o }
|
136
|
+
opts.on("--max-depth DEPTH", "Maximum traversal depth (default 24)") { |o| options[:maxdepth] = o }
|
137
|
+
opts.on("--retries TIMES", "Number of 2s retries before timing out (default 2)") { |o| options[:retries] = o }
|
138
|
+
opts.on("--[no-]follow-aaaa", "Only follow AAAA records for referrals (default false)") { |o| options[:follow_aaaa] = o }
|
139
|
+
opts.on("--[no-]root-aaaa", "Look for IPv6 addresses for root servers (default false)") { |o| options[:root_aaaa] = o }
|
140
|
+
opts.on("--[no-]show-progress", "Display progress information (default true)") { |o| options[:progress] = o }
|
141
|
+
opts.on("--[no-]show-resolves", "Display referral resolutions (default false)") { |o| options[:resolves] = o }
|
142
|
+
opts.on("--[no-]show-servers", "Display list of servers seen (default false)") { |o| options[:servers] = o }
|
143
|
+
opts.on("--[no-]show-versions", "Display versions of dns servers (default true)") { |o| options[:versions] = o }
|
144
|
+
opts.on("--[no-]show-all-stats", "Display statistics as we go (default false)") { |o| options[:allstats] = o }
|
145
|
+
opts.on("--[no-]show-results", "Display the results (default true)") { |o| options[:results] = o }
|
174
146
|
opts.on("--save-objects") { |o| options[:saveobjects] = o }
|
175
|
-
opts.on("--fast") { |o| options[:fast] = o }
|
176
|
-
opts.on_tail("-h", "--help") {
|
177
|
-
opts.on_tail("-V", "--version") { puts Version
|
147
|
+
opts.on("--[no-]fast", "Fast mode (default true) turn off to be more accurate" ) { |o| options[:fast] = o }
|
148
|
+
opts.on_tail("-h", "--help", "Show full help") { puts opts; exit }
|
149
|
+
opts.on_tail("-V", "--version", "Show version") { puts DNSTraverse::Version::STRING; exit }
|
178
150
|
begin
|
179
151
|
opts.parse!
|
180
152
|
if ARGV.size != 1 then
|
@@ -183,7 +155,8 @@ begin
|
|
183
155
|
options[:domainname] = ARGV.shift
|
184
156
|
rescue OptionParser::ParseError => e
|
185
157
|
puts e
|
186
|
-
|
158
|
+
puts opts
|
159
|
+
exit
|
187
160
|
end
|
188
161
|
Log.level = options[:debug] > 0 ? Logger::DEBUG : Logger::UNKNOWN
|
189
162
|
Log.debug {"Options chosen:\n" }
|
@@ -232,7 +205,7 @@ begin
|
|
232
205
|
:maxdepth => options[:maxdepth],
|
233
206
|
:retries => options[:retries])
|
234
207
|
puts if options[:progress]
|
235
|
-
if options[:
|
208
|
+
if options[:servers] then
|
236
209
|
puts "The following servers were encountered:"
|
237
210
|
fp = options[:versions] ? DNSTraverse::Fingerprint.new : nil
|
238
211
|
seen = traverser.servers_encountered
|
@@ -34,7 +34,6 @@ module DNSTraverse
|
|
34
34
|
@requests+= 1
|
35
35
|
ip = self.config.nameserver[0]
|
36
36
|
udp_size = self.udp_size
|
37
|
-
self.udp_size = udp_size # workaround for bug in dnsruby
|
38
37
|
Log.debug { "Querying #{name} to #{ip} class #{klass} type #{type}"}
|
39
38
|
key = "key:res:#{ip}:#{name}:#{klass}:#{type}:#{udp_size}"
|
40
39
|
if @cache.has_key?(key) then
|
@@ -46,9 +45,8 @@ module DNSTraverse
|
|
46
45
|
begin
|
47
46
|
msg = Dnsruby::Message.new
|
48
47
|
msg.add_question(name, type, klass)
|
49
|
-
|
50
|
-
|
51
|
-
id, result, error = q.pop
|
48
|
+
msg.add_additional(Dnsruby::RR::OPT.new(udp_size)) if udp_size > 512
|
49
|
+
result, error = send_plain_message(msg)
|
52
50
|
answer = result || error
|
53
51
|
rescue => e
|
54
52
|
answer = RuntimeError.new "Dnsruby failure: " + e.to_s
|
@@ -30,6 +30,7 @@ module DNSTraverse
|
|
30
30
|
attr_reader :auth_ns, :auth_soa, :auth_other # authority info
|
31
31
|
attr_reader :exception_message, :error_message # :exception/:error only
|
32
32
|
attr_reader :answers # :answered only
|
33
|
+
attr_reader :warnings # warnings about this query
|
33
34
|
attr_reader :authoritynames # auth_ns converted to array of strings
|
34
35
|
# attr_reader :stats_key
|
35
36
|
|
@@ -152,9 +152,7 @@ module DNSTraverse
|
|
152
152
|
msg = Dnsruby::Message.new
|
153
153
|
msg.header = fp2header(headerstr)
|
154
154
|
msg.add_question(decode_query(query))
|
155
|
-
|
156
|
-
@resolver.send_async(msg, q)
|
157
|
-
id, result, error = q.pop
|
155
|
+
result, error = @resolver.send_plain_message(msg)
|
158
156
|
ans = result || error
|
159
157
|
return nil, FINGERPRINT_TIMEOUT if ans.is_a? Dnsruby::ResolvTimeout
|
160
158
|
return nil, ans.to_s if ans.is_a? Exception
|
@@ -39,7 +39,7 @@ module FingerprintRules
|
|
39
39
|
"0,QUERY,0,0,0,0,0,1,NOERROR,0,0,0,0",
|
40
40
|
].freeze
|
41
41
|
|
42
|
-
INITRULE = { :header => QY[
|
42
|
+
INITRULE = { :header => QY[2], :query => ". IN MAILB" }.freeze
|
43
43
|
|
44
44
|
IQ = [ "1,IQUERY,0,0,1,0,0,0,FORMERR,0,0,0,0", # iq0
|
45
45
|
"1,IQUERY,0,0,1,0,0,0,FORMERR,1,0,0,0", # iq1
|
@@ -121,7 +121,7 @@ module FingerprintRules
|
|
121
121
|
"1,QUERY,0,0,1,1,0,0,FORMERR,1,0,0,0",
|
122
122
|
"1,QUERY,0,0,0,1,0,0,SERVFAIL,1,0,0,0",
|
123
123
|
"1,QUERY,0,0,1,1,0,0,NOERROR,1,1,0,0",
|
124
|
-
"1,IQUERY,1,0,1,0,0,0,NOERROR,1,0,
|
124
|
+
"1,IQUERY,1,0,1,0,0,0,NOERROR,1,0,1,0", #iq80
|
125
125
|
"1,IQUERY,1,0,1,1,0,0,NOTIMP,1,0,0,0",
|
126
126
|
"1,QUERY,0,0,1,1,0,0,NOERROR,1,0,0,0",
|
127
127
|
"1,QUERY,1,0,1,1,0,0,NOERROR,1,1,1,.+",
|
@@ -130,260 +130,285 @@ module FingerprintRules
|
|
130
130
|
"1,QUERY,1,0,0,1,0,0,NXDOMAIN,1,0,0,0",
|
131
131
|
"1,QUERY,0,0,0,1,0,0,NOTIMP,0,0,0,0",
|
132
132
|
"1,QUERY,0,0,0,0,0,0,REFUSED,1,0,0,0",
|
133
|
-
"1,QUERY,1,0,1,1,0,0,NXDOMAIN,1,0,0,0",
|
133
|
+
"1,QUERY,1,0,1,1,0,0,NXDOMAIN,1,0,0,0", #iq89
|
134
134
|
"1,QUERY,1,0,0,0,0,0,NOERROR,1,1,0,0", #iq90
|
135
135
|
"1,IQUERY,1,0,1,1,0,1,NOTIMP,1,0,0,0",
|
136
136
|
"1,QUERY,0,0,0,1,0,0,NOTIMP,1,0,0,0",
|
137
137
|
"1,QUERY,0,0,1,0,0,1,SERVFAIL,1,0,0,0",
|
138
|
+
"1,QUERY,0,0,0,1,0,0,NOERROR,1,0,13,13", #iq94
|
139
|
+
"1,QUERY,0,0,0,1,0,0,NOERROR,1,0,1,0", #iq95
|
140
|
+
"1,QUERY,0,0,1,0,0,0,NOERROR,1,0,13,13",
|
141
|
+
"1,IQUERY,1,0,0,0,0,0,NOTIMP,1,0,0,0", #iq97
|
142
|
+
"1,IQUERY,1,0,0,0,1,1,NOTIMP,1,0,0,0", #iq98
|
143
|
+
"1,IQUERY,0,0,1,1,0,0,NOERROR,1,0,1,0", #iq99
|
144
|
+
"1,QUERY,.,0,1,0,0,0,NOERROR,1,0,0,0", #iq100
|
145
|
+
"1,QUERY,0,0,1,0,0,0,NXDOMAIN,1,0,0,0", #101
|
138
146
|
].freeze
|
139
147
|
|
140
148
|
RULESET = [
|
141
|
-
{ :fingerprint =>
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
149
|
+
{ :fingerprint => IQ[89], :result => { :vendor => "Simon Kelley", :product => "dnsmasq", :version =>""}, :qv => "version.bind", },
|
150
|
+
{ :fingerprint => ".+", :header => QY[0], :query => ". IN A", :ruleset => [
|
151
|
+
{ :fingerprint => "query timed out" , :header => QY[0], :query => "com. IN A", :ruleset => [
|
152
|
+
{ :fingerprint => "query timed out", :header => QY[7], :query => ". CH A", :ruleset => [
|
153
|
+
{ :fingerprint => "query timed out", :header => QY[6], :query => ". IN A", :ruleset => [
|
154
|
+
{ :fingerprint => IQ[38], :result => { :vendor => "Digital Lumber", :product => "Oak DNS", :version =>"" }, :qv => ":version.oak",},
|
155
|
+
{ :fingerprint => "query timed out", :result => "TIMEOUT",},
|
156
|
+
{ :fingerprint => ".+", :state => "q0tq0tq7tq6r?", }, ]
|
157
|
+
},
|
158
|
+
{ :fingerprint => IQ[35], :result => { :vendor => "XBILL", :product => "jnamed (dnsjava)", :version => "" }, },
|
159
|
+
{ :fingerprint => IQ[36], :result => { :vendor => "Men & Mice", :product => "QuickDNS for MacOS Classic", :version => ""}, },
|
160
|
+
{ :fingerprint => IQ[37], :result => { :vendor => "unknown", :product => "NonSequitur DNS", :version => ""}, },
|
161
|
+
{ :fingerprint => ".+", :state => "q0tq0tq7r?", }, ]
|
147
162
|
},
|
148
|
-
{ :fingerprint => IQ[35], :result => { :vendor => "
|
149
|
-
{ :fingerprint =>
|
150
|
-
{ :fingerprint => IQ[37], :result => { :vendor => "unknown", :product => "NonSequitur DNS", :version => ""}, },
|
151
|
-
{ :fingerprint => ".+", :state => "q0tq0tq7r?", }, ]
|
163
|
+
{ :fingerprint => IQ[35], :result => { :vendor => "eNom", :product => "eNom DNS", :version =>""}, },
|
164
|
+
{ :fingerprint => ".+", :state => "q0tq0r?", },]
|
152
165
|
},
|
153
|
-
{ :fingerprint => IQ[35], :result => { :vendor => "eNom", :product => "eNom DNS", :version =>""}, },
|
154
|
-
{ :fingerprint => ".+", :state => "q0tq0r?", },]
|
155
|
-
},
|
156
166
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
167
|
+
{ :fingerprint => IQ[0], :header => QY[1], :query=> "jjjjjjjjjjjj IN A", :ruleset => [
|
168
|
+
{ :fingerprint => IQ[12], :result => { :vendor => "ISC", :product => "BIND", :version => "8.4.1-p1" }, :qv => ":version.bind",},
|
169
|
+
{ :fingerprint => IQ[13], :result => { :vendor => "ISC", :product => "BIND", :version => "8 plus root server modifications"}, :qv => ":version.bind",},
|
170
|
+
{ :fingerprint => IQ[15], :result => { :vendor => "Cisco", :product => "CNR", :version => ""}, },
|
171
|
+
{ :fingerprint => IQ[16], :header => QY[2], :query => "hostname.bind CH TXT", :ruleset => [
|
172
|
+
{ :fingerprint => IQ[58], :result => { :vendor => "ISC", :product => "BIND", :version => "8.3.0-RC1 -- 8.4.4"}, :qv => ":version.bind",},
|
173
|
+
{ :fingerprint => IQ[50], :result => { :vendor => "ISC", :product => "BIND", :version => "8.3.0-RC1 -- 8.4.4"}, :qv => ":version.bind",},
|
174
|
+
{ :fingerprint => IQ[48], :result => { :vendor => "ISC", :product => "BIND", :version => "8.2.2-P3 -- 8.3.0-T2A"}, :qv => ":version.bind",},
|
175
|
+
{ :fingerprint => ".+", :state => "q0r0q1r16q2r?", },]
|
176
|
+
},
|
177
|
+
{ :fingerprint => ".+", :state => "q0r0q1r?", },]
|
166
178
|
},
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
{ :fingerprint => ".+", :state => "
|
179
|
+
|
180
|
+
{ :fingerprint => IQ[1], :header => QY[2], :query => ". IN IXFR", :ruleset => [
|
181
|
+
{ :fingerprint => IQ[31], :result => { :vendor => "Microsoft", :product => "Windows DNS", :version => "2000" }, },
|
182
|
+
{ :fingerprint => IQ[32], :result => { :vendor => "Microsoft", :product => "Windows DNS", :version => "NT4" }, },
|
183
|
+
{ :fingerprint => IQ[50], :result => { :vendor => "Microsoft", :product => "Windows DNS", :version => "2003"}, },
|
184
|
+
{ :fingerprint => ".+", :state => "q0r1q2r?", }, ]
|
185
|
+
},
|
186
|
+
|
187
|
+
{ :fingerprint => IQ[2], :header => QY[1], :ruleset => [
|
188
|
+
{ :fingerprint => IQ[11], :result => { :vendor => "ISC", :product => "BIND", :version => "9.2.3rc1 -- 9.4.0a4" }, :qv => ":version.bind",},
|
189
|
+
{ :fingerprint => IQ[12], :header => QY[3], :ruleset => [
|
190
|
+
{ :fingerprint => IQ[25], :header => QY[6], :ruleset => [
|
191
|
+
{ :fingerprint => IQ[33], :result => { :vendor => "bboy", :product => "MyDNS", :version => "" },},
|
192
|
+
{ :fingerprint => IQ[34], :header => QY[2], :query => "012345678901234567890123456789012345678901234567890123456789012.012345678901234567890123456789012345678901234567890123456789012.012345678901234567890123456789012345678901234567890123456789012.0123456789012345678901234567890123456789012345678901234567890. IN A", :ruleset => [
|
193
|
+
{ :fingerprint => IQ[47], :result => { :vendor => "NLnetLabs", :product => "NSD", :version => "1.0.3 -- 1.2.1"}, :qv => ":version.server", },
|
194
|
+
{ :fingerprint => IQ[48], :header => QY[2], :query => "hostname.bind CH TXT", :ruleset => [
|
195
|
+
{ :fingerprint => IQ[50], :result => { :vendor => "NLnetLabs", :product => "NSD", :version => "1.2.2" }, :qv => ":version.server", },
|
196
|
+
{ :fingerprint => IQ[51], :header => QY[8], :query => ". IN A", :ruleset => [
|
197
|
+
{ :fingerprint => IQ[93], :result => { :vendor => "NLnetLabs", :product => "NSD", :version => "1.2.3 -- 2.1.2" } , :qv => ":version.server", },
|
198
|
+
{ :fingerprint => IQ[48], :result => { :vendor => "NLnetLabs", :product => "NSD", :version => "2.1.3" }, :qv => ":version.server", },
|
199
|
+
{ :fingerprint => ".+", :state => "q0r2q1r12q3r25q6r34q2r48q2r51q8r?", }, ]
|
200
|
+
},
|
201
|
+
{ :fingerprint => ".+", :state => "q0r2q1r12q3r25q6r34q2r48q2r?", }, ]
|
190
202
|
},
|
191
|
-
{ :fingerprint =>
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
{ :fingerprint => "
|
203
|
+
{ :fingerprint => IQ[49], :header => QY[2], :query => "hostname.bind CH TXT", :ruleset => [
|
204
|
+
{ :fingerprint => IQ[50], :result => { :vendor => "NLnetLabs", :product => "NSD", :version => "1.2.2 [root]"} , :qv => ":version.server", },
|
205
|
+
{ :fingerprint => IQ[51], :result => { :vendor => "NLnetLabs", :product => "NSD", :version => "1.2.3 [root]"}, :qv => ":version.server", },
|
206
|
+
{ :fingerprint => ".+", :state => "q0r2q1r12q3r25q6r34q2r49q2r?", }, ]
|
207
|
+
},
|
208
|
+
{ :fingerprint => IQ[53], :result => { :vendor => "NLnetLabs", :product=>"NSD", :version => "1.0.2"}, :qv => ":version.server", },
|
209
|
+
{ :fingerprint => ".+", :state => "q0r2q1r12q3r25q6r34q2a?", },]
|
197
210
|
},
|
198
|
-
{ :fingerprint =>
|
199
|
-
{ :fingerprint => ".+", :state => "q0r2q1r12q3r25q6r34q2a?", },]
|
211
|
+
{ :fingerprint => ".+", :state => "q0r2q1r12q3r25q6r?", },]
|
200
212
|
},
|
201
|
-
{ :fingerprint => "
|
213
|
+
{ :fingerprint => IQ[26], :result => { :vendor => "VeriSign", :product => "ATLAS", :version => ""},},
|
214
|
+
{ :fingerprint => ".+", :state => "q0r2q1r12q3r?", },]
|
202
215
|
},
|
203
|
-
{ :fingerprint => IQ[
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
{ :fingerprint =>
|
212
|
-
{ :fingerprint => ".+", :state => "q0r2q1r15q6r46q7r?", }, ]
|
216
|
+
{ :fingerprint => IQ[15], :header => QY[6], :ruleset => [
|
217
|
+
{ :fingerprint => IQ[45], :result => { :vendor => "Nominum", :product =>"ANS", :version =>""}, :qv => ":version.bind",},
|
218
|
+
{ :fingerprint => IQ[65], :result => { :vendor => "ISC", :product => "BIND", :version => "9.2.3rc1 -- 9.4.0a4" }, :qv => ":version.bind",},
|
219
|
+
{ :fingerprint => IQ[46], :header => QY[7], :ruleset => [
|
220
|
+
{ :fingerprint => IQ[56], :result => { :vendor => "ISC", :product => "BIND", :version => "9.0.0b5 -- 9.0.1" }, :qv => ":version.bind",},
|
221
|
+
{ :fingerprint => IQ[57], :result => { :vendor => "ISC", :product => "BIND", :version => "9.1.0 -- 9.1.3" }, :qv => ":version.bind",},
|
222
|
+
{ :fingerprint => ".+", :state => "q0r2q1r15q6r46q7r?", }, ]
|
223
|
+
},
|
224
|
+
{ :fingerprint => ".+", :state => "q0r2q1r15q6r?", },]
|
213
225
|
},
|
214
|
-
{ :fingerprint =>
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
{ :fingerprint => ".+", :
|
226
|
+
{ :fingerprint => IQ[16], :header => QY[4], :ruleset => [
|
227
|
+
{ :fingerprint => IQ[29], :result => { :vendor => "ISC", :product => "BIND", :version => "9.2.0a1 -- 9.2.0rc3"}, :qv => ":version.bind",},
|
228
|
+
{ :fingerprint => IQ[30], :header => QY[0], :query => ". A CLASS0" , :ruleset => [
|
229
|
+
{ :fingerprint => IQ[2], :result => { :vendor=>"ISC", :product => "BIND", :version =>"9.2.0rc7 -- 9.2.2-P3"}, :qv => ":version.bind", },
|
230
|
+
{ :fingerprint => IQ[0], :result => { :vendor=>"ISC", :product => "BIND", :version =>"9.2.0rc4 -- 9.2.0rc6"}, :qv => ":version.bind", },
|
231
|
+
{ :fingerprint => ".+", :result => { :vendor => "ISC", :product => "BIND", :version =>"9.2.0rc4 -- 9.2.2-P3"}, :qv => ":version.bind", }, ]
|
232
|
+
},
|
233
|
+
{ :fingerprint => ".+", :state => "q0r2q1r16q4r?", },]
|
222
234
|
},
|
223
|
-
{ :fingerprint => ".+", :state => "
|
235
|
+
{ :fingerprint => ".+", :state => "q0r2q1r?", }, ]
|
224
236
|
},
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
{ :fingerprint =>
|
237
|
+
|
238
|
+
{ :fingerprint => IQ[3], :header => QY[1], :ruleset => [
|
239
|
+
{ :fingerprint => "query timed out", :header => QY[5], :ruleset => [
|
240
|
+
{ :fingerprint => IQ[3], :result => { :vendor => "sourceforge", :product =>"Dents", :version =>""}, :qv => ":version.bind", },
|
241
|
+
{ :fingerprint => IQ[81], :result => { :vendor => "Microsoft", :product => "Windows DNS", :version => "2003" },},
|
242
|
+
{ :fingerprint => IQ[91], :result => { :vendor => "Microsoft", :product => "Windows DNS", :version => "2003" },},
|
243
|
+
{ :fingerprint => ".+", :state => "q0r3q1tq5r?", }, ]
|
244
|
+
|
245
|
+
},
|
246
|
+
{ :fingerprint => IQ[14], :result => { :vendor => "UltraDNS", :product => "", :version =>"v2.7.0.2 -- 2.7.3"}, :qv => ":version.bind", },
|
247
|
+
{ :fingerprint => IQ[13], :header => QY[5], :ruleset => [
|
248
|
+
{ :fingerprint => IQ[39], :result => { :vendor => "pliant", :product => "DNS Server", :version =>""},},
|
249
|
+
{ :fingerprint => IQ[7], :result => { :vendor => "JHSOFT", :product => "simple DNS plus", :version =>""}, },
|
250
|
+
{ :fingerprint => IQ[71], :header => QY[6], :ruleset => [
|
251
|
+
{ :fingerprint => IQ[41], :result => { :vendor =>"Netnumber", :product =>"ENUM server", :version =>""}, },
|
252
|
+
{ :fingerprint => IQ[85], :result => { :vendor =>"Raiden", :product => "DNSD", :version => ""}, }, ]
|
253
|
+
},
|
254
|
+
{ :fingerprint => ".+", :state => "q0r3q1r13q5r?", }, ]
|
243
255
|
},
|
244
|
-
{ :fingerprint => ".+", :state => "
|
256
|
+
{ :fingerprint => ".+", :state => "q0r3q1r?", }, ]
|
245
257
|
},
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
{ :fingerprint => "
|
258
|
+
|
259
|
+
{ :fingerprint => IQ[4], :header => QY[1], :query=> "jjjjjjjjjjjj IN A", :ruleset => [
|
260
|
+
{ :fingerprint => IQ[17], :result => { :vendor => "ISC", :product => "BIND", :version =>"9.0.0b5 -- 9.0.1 [recursion enabled]"}, :qv => ":version.bind", },
|
261
|
+
{ :fingerprint => IQ[18], :header => QY[5], :query=> ". IN A" , :ruleset => [
|
262
|
+
{ :fingerprint => IQ[27], :result => { :vendor => "ISC", :product => "BIND", :version => "4.9.3 -- 4.9.11"}, :qv => ":version.bind", },
|
263
|
+
{ :fingerprint => IQ[28], :result => { :vendor => "ISC", :product => "BIND", :version => "4.8 -- 4.8.3"}, },
|
264
|
+
{ :fingerprint => ".+", :state => "q0r4q1r18q5r?", }, ]
|
265
|
+
},
|
266
|
+
{ :fingerprint => IQ[19], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.2.1 [recursion enabled]"}, :qv => ":version.bind", },
|
267
|
+
{ :fingerprint => IQ[20], :header => QY[3], :query=> ". IN A", :ruleset => [
|
268
|
+
{ :fingerprint => IQ[42], :result => {:vendor => "ISC", :product =>"BIND", :version =>"8.1-REL -- 8.2.1-T4B [recursion enabled]"}, :qv => ":version.bind", },
|
269
|
+
{ :fingerprint => ".+", :state => "q0r4q1r20q3r?", },]
|
270
|
+
},
|
271
|
+
{ :fingerprint => IQ[21], :header => QY[2], :query => "hostname.bind CH TXT", :ruleset => [
|
272
|
+
{ :fingerprint => IQ[60], :result => {:vendor =>"ISC", :product => "BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion enabled]"}, :qv => ":version.bind",},
|
273
|
+
{ :fingerprint => IQ[59], :header => QY[7], :query=> ". IN A", :ruleset => [
|
274
|
+
{ :fingerprint => IQ[68], :result => {:vendor =>"ISC", :product => "BIND", :version => "8.1-REL -- 8.2.1-T4B [recursion enabled]"}, :qv => ":version.bind", },
|
275
|
+
{ :fingerprint => IQ[69], :result => {:vendor =>"ISC", :product => "BIND", :version => "8.2.2-P3 -- 8.3.0-T2A [recursion enabled]"}, :qv => ":version.bind",},
|
276
|
+
{ :fingerprint => "connection failed", :result => { :vendor =>"Runtop", :product => "dsl/cable", :version =>""},},
|
277
|
+
{ :fingerprint => ".+", :state => "q0r4q1r21q2r59q7r?", },]
|
278
|
+
},
|
279
|
+
|
280
|
+
{ :fingerprint => IQ[58], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion local]"}, :qv => ":version.bind",},
|
281
|
+
{ :fingerprint => IQ[50], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion local]"}, :qv => ":version.bind",},
|
282
|
+
{ :fingerprint => IQ[61], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion local]"}, :qv => ":version.bind",},
|
283
|
+
{ :fingerprint => IQ[48], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.2.2-P3 -- 8.3.0-T2A [recursion local]"}, :qv => ":version.bind",},
|
284
|
+
{ :fingerprint => ".+", :state => "q0r4q1r21q2r?", },]
|
285
|
+
},
|
286
|
+
{ :fingerprint => ".+", :state => "q0r4q1r?", }, ]
|
255
287
|
},
|
256
|
-
|
257
|
-
{ :fingerprint => IQ[
|
258
|
-
{ :fingerprint => IQ[
|
259
|
-
{ :fingerprint => "
|
288
|
+
|
289
|
+
{ :fingerprint => IQ[5], :header => QY[1], :ruleset => [
|
290
|
+
{ :fingerprint => IQ[11], :result => { :vendor => "ISC", :product => "BIND", :version => "9.2.3rc1 -- 9.4.0a4", :option => "recursion enabled,split view" }, :qv => ":version.bind",},
|
291
|
+
{ :fingerprint => IQ[17], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.3rc1 -- 9.4.0a4 [recursion enabled]"}, :qv => ":version.bind",},
|
292
|
+
{ :fingerprint => IQ[18], :header => QY[5], :ruleset => [
|
293
|
+
{ :fingerprint => IQ[5], :header => QY[7], :query => ". IN A", :ruleset => [
|
294
|
+
{ :fingerprint => IQ[84], :result => {:vendor => "Nominum", :product =>"CNS", :version => ""}, :qv => ":version.bind",},
|
295
|
+
{ :fingerprint => IQ[59], :result => {:vendor => "Mikrotik", :product =>"dsl/cable", :version => ""}, },
|
296
|
+
{ :fingerprint => IQ[82], :result => {:vendor => "Mikrotik", :product =>"dsl/cable", :version => ""}, },
|
297
|
+
{ :fingerprint => ".+", :state => "q0r5q1r18q5r5q7r?", }, ]
|
298
|
+
},
|
299
|
+
## { :fingerprint => IQ[64], :result => "unknown, smells like old BIND 4", },
|
300
|
+
{ :fingerprint => ".+", :state => "q0r5q1r18q5r?", }, ]
|
301
|
+
},
|
302
|
+
{ :fingerprint => IQ[20], :header => QY[7], :ruleset => [
|
303
|
+
{ :fingerprint => IQ[54], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.0.0b5 -- 9.0.1 [recursion enabled]"}, :qv => ":version.bind",},
|
304
|
+
{ :fingerprint => IQ[55], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.1.0 -- 9.1.3 [recursion enabled]"}, :qv => ":version.bind",},
|
305
|
+
{ :fingerprint => IQ[63], :result => {:vendor => "ISC", :product =>"BIND", :version => "4.9.3 -- 4.9.11 [recursion enabled]"}, :qv => ":version.bind",},
|
306
|
+
{ :fingerprint => IQ[61], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.0.0b5 -- 9.1.3 [recursion local]"}, :qv => ":version.bind",},
|
307
|
+
{ :fingerprint => ".+", :state => "q0r5q1r20q7r?", }, ]
|
308
|
+
},
|
309
|
+
{ :fingerprint => IQ[21], :header => QY[4], :ruleset => [
|
310
|
+
{ :fingerprint => "query timed out", :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.2-P3 [recursion enabled]"}, :qv => ":version.bind", },
|
311
|
+
{ :fingerprint => IQ[29], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.0rc3 [recursion enabled]"}, :qv => ":version.bind", },
|
312
|
+
{ :fingerprint => IQ[61], :header => QY[0], :query => ". A CLASS0" , :ruleset => [
|
313
|
+
{ :fingerprint => IQ[2], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0rc7 -- 9.2.2-P3 [recursion local]"}, :qv => ":version.bind", },
|
314
|
+
{ :fingerprint => IQ[0], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.0rc6 [recursion local]"}, :qv => ":version.bind", },
|
315
|
+
{ :fingerprint => ".+", :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.2-P3 [recursion local]"}, :qv => ":version.bind", }, ]
|
316
|
+
},
|
317
|
+
{ :fingerprint => IQ[30], :header => QY[0], :query => ". A CLASS0" , :ruleset => [
|
318
|
+
{ :fingerprint => IQ[2], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0rc7 -- 9.2.2-P3 [recursion enabled]"}, :qv => ":version.bind", },
|
319
|
+
{ :fingerprint => IQ[0], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0rc4 -- 9.2.0rc6 [recursion enabled]"}, :qv => ":version.bind", },
|
320
|
+
{ :fingerprint => ".+", :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0rc4 -- 9.2.2-P3 [recursion enabled]"}, :qv => ":version.bind", }, ]
|
321
|
+
},
|
322
|
+
{ :fingerprint => ".+", :state => "q0r5q1r21q4r?", }, ]
|
323
|
+
},
|
324
|
+
{ :fingerprint => ".+", :state => "q0r5q1r?", }, ]
|
260
325
|
},
|
261
|
-
|
262
|
-
|
263
|
-
{ :fingerprint => IQ[
|
264
|
-
|
265
|
-
{ :fingerprint => IQ[
|
266
|
-
{ :fingerprint =>
|
267
|
-
{ :fingerprint => ".+", :state => "
|
326
|
+
|
327
|
+
{ :fingerprint => IQ[6], :header => QY[1], :ruleset => [
|
328
|
+
{ :fingerprint => IQ[15], :result => {:vendor => "incognito", :product =>"DNS commander", :version => "v2.3.1.1 -- 4.0.5.1"}, :qv => ":version.bind", },
|
329
|
+
{ :fingerprint => IQ[19], :header => QY[3], :ruleset => [
|
330
|
+
{ :fingerprint => IQ[66], :result => {:vendor => "vermicelli", :product =>"totd", :version => ""}, },
|
331
|
+
{ :fingerprint => IQ[67], :result => {:vendor => "JHSOFT", :product =>"simple DNS plus", :version => "[recursion enabled]"}, },
|
332
|
+
{ :fingerprint => ".+", :state => "q0r6q1r19q3r?", }, ]
|
268
333
|
},
|
269
|
-
|
270
|
-
{ :fingerprint => IQ[58], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion local]"}, :qv => ":version.bind",},
|
271
|
-
{ :fingerprint => IQ[50], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion local]"}, :qv => ":version.bind",},
|
272
|
-
{ :fingerprint => IQ[61], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.3.0-RC1 -- 8.4.4 [recursion local]"}, :qv => ":version.bind",},
|
273
|
-
{ :fingerprint => IQ[48], :result => {:vendor => "ISC", :product =>"BIND", :version => "8.2.2-P3 -- 8.3.0-T2A [recursion local]"}, :qv => ":version.bind",},
|
274
|
-
{ :fingerprint => ".+", :state => "q0r4q1r21q2r?", },]
|
334
|
+
{ :fingerprint => ".+", :state => "q0r6q1r?", }, ]
|
275
335
|
},
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
{ :fingerprint => IQ[18], :header => QY[5], :ruleset => [
|
283
|
-
{ :fingerprint => IQ[5], :header => QY[7], :query => ". IN A", :ruleset => [
|
284
|
-
{ :fingerprint => IQ[84], :result => {:vendor => "Nominum", :product =>"CNS", :version => ""}, :qv => ":version.bind",},
|
285
|
-
{ :fingerprint => IQ[59], :result => {:vendor => "Mikrotik", :product =>"dsl/cable", :version => ""}, },
|
286
|
-
{ :fingerprint => IQ[82], :result => {:vendor => "Mikrotik", :product =>"dsl/cable", :version => ""}, },
|
287
|
-
{ :fingerprint => ".+", :state => "q0r5q1r18q5r5q7r?", }, ]
|
288
|
-
},
|
289
|
-
## { :fingerprint => IQ[64], :result => "unknown, smells like old BIND 4", },
|
290
|
-
{ :fingerprint => ".+", :state => "q0r5q1r18q5r?", }, ]
|
291
|
-
},
|
292
|
-
{ :fingerprint => IQ[20], :header => QY[7], :ruleset => [
|
293
|
-
{ :fingerprint => IQ[54], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.0.0b5 -- 9.0.1 [recursion enabled]"}, :qv => ":version.bind",},
|
294
|
-
{ :fingerprint => IQ[55], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.1.0 -- 9.1.3 [recursion enabled]"}, :qv => ":version.bind",},
|
295
|
-
{ :fingerprint => IQ[63], :result => {:vendor => "ISC", :product =>"BIND", :version => "4.9.3 -- 4.9.11 [recursion enabled]"}, :qv => ":version.bind",},
|
296
|
-
{ :fingerprint => IQ[61], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.0.0b5 -- 9.1.3 [recursion local]"}, :qv => ":version.bind",},
|
297
|
-
{ :fingerprint => ".+", :state => "q0r5q1r20q7r?", }, ]
|
298
|
-
},
|
299
|
-
{ :fingerprint => IQ[21], :header => QY[4], :ruleset => [
|
300
|
-
{ :fingerprint => "query timed out", :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.2-P3 [recursion enabled]"}, :qv => ":version.bind", },
|
301
|
-
{ :fingerprint => IQ[29], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.0rc3 [recursion enabled]"}, :qv => ":version.bind", },
|
302
|
-
{ :fingerprint => IQ[61], :header => QY[0], :query => ". A CLASS0" , :ruleset => [
|
303
|
-
{ :fingerprint => IQ[2], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0rc7 -- 9.2.2-P3 [recursion local]"}, :qv => ":version.bind", },
|
304
|
-
{ :fingerprint => IQ[0], :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.0rc6 [recursion local]"}, :qv => ":version.bind", },
|
305
|
-
{ :fingerprint => ".+", :result => {:vendor => "ISC", :product =>"BIND", :version => "9.2.0a1 -- 9.2.2-P3 [recursion local]"}, :qv => ":version.bind", }, ]
|
336
|
+
|
337
|
+
{ :fingerprint => IQ[7], :header => QY[1], :ruleset => [
|
338
|
+
{ :fingerprint => IQ[22], :header => QY[3], :ruleset => [
|
339
|
+
{ :fingerprint => IQ[97], :result => {:vendor => "PowerDNS", :product =>"PowerDNS", :version => "2.9.4 -- 2.9.19"}, :qv => "version.bind", },
|
340
|
+
{ :fingerprint => IQ[98], :result => {:vendor => "Stanford", :product =>"lbnamed", :version => "1.0.0 -- 2.3.2"}, },
|
341
|
+
{ :fingerprint => ".+", :state => "q0r7q1r22q3r?", }, ]
|
306
342
|
},
|
307
|
-
{ :fingerprint => IQ[
|
308
|
-
|
309
|
-
|
310
|
-
|
343
|
+
{ :fingerprint => IQ[24], :result => {:vendor => "PowerDNS", :product =>"PowerDNS", :version => "2.8 -- 2.9.3"}, :qv => ":version.bind", },
|
344
|
+
{ :fingerprint => ".+", :state => "q0r7q1r?", }, ]
|
345
|
+
},
|
346
|
+
|
347
|
+
{ :fingerprint => IQ[8], :header => QY[1], :ruleset => [
|
348
|
+
{ :fingerprint => IQ[23], :header => QY[2] , :query => ". CH A", :ruleset => [
|
349
|
+
{ :fingerprint => "query timed out", :result => { :vendor => "DJ Bernstein", :product => "TinyDNS", :version => "1.04"} ,},
|
350
|
+
{ :fingerprint => IQ[32], :result => {:vendor => "DJ Bernstein", :product => "TinyDNS", :version => "1.05"} ,},
|
351
|
+
{ :fingerprint => ".+", :state => "q0r8q1r23q2r?",},]
|
311
352
|
},
|
312
|
-
{ :fingerprint => ".+", :state => "
|
313
|
-
},
|
314
|
-
{ :fingerprint => ".+", :state => "q0r5q1r?", }, ]
|
315
|
-
},
|
316
|
-
|
317
|
-
{ :fingerprint => IQ[6], :header => QY[1], :ruleset => [
|
318
|
-
{ :fingerprint => IQ[15], :result => {:vendor => "incognito", :product =>"DNS commander", :version => "v2.3.1.1 -- 4.0.5.1"}, :qv => ":version.bind", },
|
319
|
-
{ :fingerprint => IQ[19], :header => QY[3], :ruleset => [
|
320
|
-
{ :fingerprint => IQ[66], :result => {:vendor => "vermicelli", :product =>"totd", :version => ""}, },
|
321
|
-
{ :fingerprint => IQ[67], :result => {:vendor => "JHSOFT", :product =>"simple DNS plus", :version => "[recursion enabled]"}, },
|
322
|
-
{ :fingerprint => ".+", :state => "q0r6q1r19q3r?", }, ]
|
353
|
+
{ :fingerprint => ".+", :state => "q0r8q1r?", }, ]
|
323
354
|
},
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
{ :fingerprint => IQ[22], :result => {:vendor => "PowerDNS", :product =>"PowerDNS", :version => "2.9.4 -- 2.9.11"}, :qv => ":version.bind", },
|
329
|
-
{ :fingerprint => IQ[24], :result => {:vendor => "PowerDNS", :product =>"PowerDNS", :version => "2.8 -- 2.9.3"}, :qv => ":version.bind", },
|
330
|
-
{ :fingerprint => ".+", :state => "q0r7q1r?", }, ]
|
331
|
-
},
|
332
|
-
|
333
|
-
{ :fingerprint => IQ[8], :header => QY[1], :ruleset => [
|
334
|
-
{ :fingerprint => IQ[23], :header => QY[2] , :query => ". CH A", :ruleset => [
|
335
|
-
{ :fingerprint => "query timed out", :result => { :vendor => "DJ Bernstein", :product => "TinyDNS", :version => "1.04"} ,},
|
336
|
-
{ :fingerprint => IQ[32], :result => {:vendor => "DJ Bernstein", :product => "TinyDNS", :version => "1.05"} ,},
|
337
|
-
{ :fingerprint => ".+", :state => "q0r8q1r23q2r?",},]
|
355
|
+
|
356
|
+
{ :fingerprint => IQ[9], :header => QY[1], :ruleset => [
|
357
|
+
{ :fingerprint => IQ[9], :result => { :vendor => "Sam Trenholme", :product =>"MaraDNS", :version => ""}, :qv => "erre-con-erre-cigarro.maradns.org"},
|
358
|
+
{ :fingerprint => ".+", :state => "q0r9q1r?", }, ]
|
338
359
|
},
|
339
|
-
|
340
|
-
|
360
|
+
|
361
|
+
{ :fingerprint => IQ[10], :result => { :vendor => "Microsoft", :product =>"?", :version => ""}, },
|
362
|
+
{ :fingerprint => IQ[26], :result => { :vendor => "Meilof Veeningen", :product =>"Posadis", :version =>""}, },
|
363
|
+
{ :fingerprint => IQ[43], :header => QY[6], :ruleset => [
|
364
|
+
{ :fingerprint => IQ[34], :result => { :vendor => "Paul Rombouts", :product =>"pdnsd", :version =>""}, },
|
365
|
+
{ :fingerprint => IQ[75], :result => { :vendor => "antirez", :product =>"Yaku-NS", :version =>""}, },
|
366
|
+
{ :fingerprint => ".+", :state => "q0r43q6r?", }, ]
|
367
|
+
},
|
368
|
+
|
369
|
+
{ :fingerprint => IQ[44], :result => { :vendor =>"cpan", :product=>"Net::DNS Nameserver", :version =>""}, :qv => ":version.bind", },
|
370
|
+
{ :fingerprint => IQ[52], :result => { :vendor =>"NLnetLabs", :product=>"NSD", :version => "1.0 alpha"}, },
|
341
371
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
372
|
+
{ :fingerprint => IQ[55], :header => QY[3], :ruleset => [
|
373
|
+
{ :fingerprint => IQ[94], :result => { :vendor =>"robtex", :product=>"Viking DNS module", :version=>""}, },
|
374
|
+
{ :fingerprint => IQ[95], :result => { :vendor =>"cisco", :product=>"dns resolver/server", :version=>""}, },
|
375
|
+
{ :fingerprint => ".+", :state => "q0r55q3r?", }, ]
|
376
|
+
},
|
346
377
|
|
347
|
-
|
348
|
-
|
349
|
-
{ :fingerprint => IQ[43], :header => QY[6], :ruleset => [
|
350
|
-
{ :fingerprint => IQ[34], :result => { :vendor => "Paul Rombouts", :product =>"pdnsd", :version =>""}, },
|
351
|
-
{ :fingerprint => IQ[75], :result => { :vendor => "antirez", :product =>"Yaku-NS", :version =>""}, },
|
352
|
-
{ :fingerprint => ".+", :state => "q0r43q6r?", }, ]
|
353
|
-
},
|
378
|
+
{ :fingerprint => IQ[59], :result => { :vendor =>"Max Feoktistov", :product=>"small HTTP server [recursion enabled]", :version =>""}, },
|
379
|
+
{ :fingerprint => IQ[60], :result => { :vendor =>"Axis", :product=>"video server", :version =>""}, },
|
354
380
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
{ :fingerprint => IQ[83], :result => { :vendor =>"Netopia", :product =>"dsl/cable", :version => ""},},
|
364
|
-
{ :fingerprint => IQ[90], :result => { :vendor =>"TZO", :product=>"Tzolkin DNS",:version=>""}, },
|
365
|
-
{ :fingerprint => "query timed out", :result => { :vendor =>"Netopia", :product =>"dsl/cable", :version=>""},},
|
366
|
-
{ :fingerprint => ".+", :state => "q0r62q7r?", }, ]
|
367
|
-
},
|
368
|
-
{ :fingerprint => IQ[70], :result => { :vendor =>"Yutaka Sato", :product=>"DeleGate DNS", :version=>""},},
|
369
|
-
{ :fingerprint => IQ[72], :result => { :vendor =>"", :product =>"sheerdns", :version=>""}, },
|
370
|
-
{ :fingerprint => IQ[73], :result => { :vendor =>"Matthew Pratt", :product=>"dproxy", :version=>""}, },
|
371
|
-
{ :fingerprint => IQ[74], :result => { :vendor =>"Brad Garcia", :product=>"dnrd",:version=>""}, },
|
372
|
-
{ :fingerprint => IQ[76], :result => { :vendor =>"Sourceforge", :product=>"JDNSS",:version=>""}, },
|
373
|
-
{ :fingerprint => IQ[77], :result => { :vendor =>"Dan Kaminsky", :product=>"nomde DNS tunnel",:version=>""}, },
|
374
|
-
{ :fingerprint => IQ[78], :result => { :vendor =>"Max Feoktistov", :product=>"small HTTP server", :version =>""}, },
|
375
|
-
{ :fingerprint => IQ[79], :result => { :vendor =>"robtex", :product=>"Viking DNS module", :version=>""}, },
|
376
|
-
{ :fingerprint => IQ[80], :result => { :vendor =>"Fasthosts", :product=>"Envisage DNS server", :version=>""}, },
|
377
|
-
{ :fingerprint => IQ[81], :result => { :vendor =>"WinGate", :product=>"Wingate DNS", :version=>""},},
|
378
|
-
{ :fingerprint => IQ[82], :result => { :vendor =>"Ascenvision", :product=>"SwiftDNS", :version=>""},},
|
379
|
-
{ :fingerprint => IQ[86], :result => { :vendor =>"Nortel Networks", :product=>"Instant Internet",:version=>""}, },
|
380
|
-
{ :fingerprint => IQ[87], :result => { :vendor =>"ATOS", :product=>"Stargate ADSL", :version=>""},},
|
381
|
-
{ :fingerprint => IQ[88], :result => { :vendor =>"3Com", :product=>"Office Connect Remote", :version=>""},},
|
382
|
-
{ :fingerprint => IQ[89], :result => { :vendor =>"Alteon", :product=>"ACEswitch", :version=>""},},
|
383
|
-
{ :fingerprint => IQ[90], :result => { :vendor =>"javaprofessionals", :product=>"javadns/jdns", :version=>""},},
|
381
|
+
{ :fingerprint => IQ[62], :header => QY[7], :query => "1.0.0.127.in-addr.arpa. IN PTR", :ruleset => [
|
382
|
+
{ :fingerprint => IQ[62], :result => { :vendor =>"Michael Tokarev", :product=>"rbldnsd",:version=>""}, :qv => ":version.bind", },
|
383
|
+
{ :fingerprint => IQ[79], :result => { :vendor =>"4D", :product=>"WebSTAR", :version=>""}, },
|
384
|
+
{ :fingerprint => IQ[83], :result => { :vendor =>"Netopia", :product =>"dsl/cable", :version => ""},},
|
385
|
+
{ :fingerprint => IQ[90], :result => { :vendor =>"TZO", :product=>"Tzolkin DNS",:version=>""}, },
|
386
|
+
{ :fingerprint => "query timed out", :result => { :vendor =>"Netopia", :product =>"dsl/cable", :version=>""},},
|
387
|
+
{ :fingerprint => ".+", :state => "q0r62q7r?", }, ]
|
388
|
+
},
|
384
389
|
|
385
|
-
|
386
|
-
|
390
|
+
{ :fingerprint => IQ[70], :result => { :vendor =>"Yutaka Sato", :product=>"DeleGate DNS", :version=>""},},
|
391
|
+
{ :fingerprint => IQ[72], :result => { :vendor =>"", :product =>"sheerdns", :version=>""}, },
|
392
|
+
{ :fingerprint => IQ[73], :result => { :vendor =>"Matthew Pratt", :product=>"dproxy", :version=>""}, },
|
393
|
+
{ :fingerprint => IQ[74], :result => { :vendor =>"Brad Garcia", :product=>"dnrd",:version=>""}, },
|
394
|
+
{ :fingerprint => IQ[76], :result => { :vendor =>"Sourceforge", :product=>"JDNSS",:version=>""}, },
|
395
|
+
{ :fingerprint => IQ[77], :result => { :vendor =>"Dan Kaminsky", :product=>"nomde DNS tunnel",:version=>""}, },
|
396
|
+
{ :fingerprint => IQ[78], :result => { :vendor =>"Max Feoktistov", :product=>"small HTTP server", :version =>""}, },
|
397
|
+
{ :fingerprint => IQ[79], :result => { :vendor =>"robtex", :product=>"Viking DNS module", :version=>""}, },
|
398
|
+
{ :fingerprint => IQ[80], :result => { :vendor =>"Fasthosts", :product=>"Envisage DNS server", :version=>""}, },
|
399
|
+
{ :fingerprint => IQ[81], :result => { :vendor =>"WinGate", :product=>"Wingate DNS", :version=>""},},
|
400
|
+
{ :fingerprint => IQ[82], :result => { :vendor =>"Ascenvision", :product=>"SwiftDNS", :version=>""},},
|
401
|
+
{ :fingerprint => IQ[86], :result => { :vendor =>"Nortel Networks", :product=>"Instant Internet",:version=>""}, },
|
402
|
+
{ :fingerprint => IQ[87], :result => { :vendor =>"ATOS", :product=>"Stargate ADSL", :version=>""},},
|
403
|
+
{ :fingerprint => IQ[88], :result => { :vendor =>"3Com", :product=>"Office Connect Remote", :version=>""},},
|
404
|
+
{ :fingerprint => IQ[89], :result => { :vendor =>"Alteon", :product=>"ACEswitch", :version=>""},},
|
405
|
+
{ :fingerprint => IQ[90], :result => { :vendor =>"javaprofessionals", :product=>"javadns/jdns", :version=>""},},
|
406
|
+
{ :fingerprint => IQ[92], :result => { :vendor =>"Beehive", :product=>"CoDoNS",:version=>""}, },
|
407
|
+
{ :fingerprint => IQ[96], :result => { :vendor =>"Beevihe", :product=>"AAAAAA",:version=>""}, :qv => "version.bind", },
|
408
|
+
{ :fingerprint => IQ[100], :result => { :vendor =>"ValidStream", :product=>"ValidDNS",:version=>""}, },
|
409
|
+
{ :fingerprint => IQ[101], :result => { :vendor =>"ValidStream", :product=>"ValidDNS",:version=>""}, },
|
410
|
+
{ :fingerprint => ".+", :state => "q0r?", }, ]
|
411
|
+
}
|
387
412
|
|
388
413
|
].freeze
|
389
414
|
end
|