wmap 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +141 -0
  3. data/LICENSE.txt +15 -0
  4. data/README.rdoc +98 -0
  5. data/TODO +13 -0
  6. data/bin/deprime +21 -0
  7. data/bin/distrust +38 -0
  8. data/bin/googleBot +23 -0
  9. data/bin/prime +21 -0
  10. data/bin/refresh +26 -0
  11. data/bin/run_tests +16 -0
  12. data/bin/spiderBot +26 -0
  13. data/bin/trust +38 -0
  14. data/bin/updateAll +57 -0
  15. data/bin/wadd +25 -0
  16. data/bin/wadds +26 -0
  17. data/bin/wcheck +28 -0
  18. data/bin/wdel +25 -0
  19. data/bin/wdump +21 -0
  20. data/bin/wmap +151 -0
  21. data/bin/wscan +32 -0
  22. data/data/cidrs +2 -0
  23. data/data/deactivated_sites +1 -0
  24. data/data/domains +2 -0
  25. data/data/hosts +1 -0
  26. data/data/prime_hosts +1 -0
  27. data/data/sites +2 -0
  28. data/data/sub_domains +2 -0
  29. data/demos/bruter.rb +27 -0
  30. data/demos/dns_brutes.rb +28 -0
  31. data/demos/filter_cidr.rb +18 -0
  32. data/demos/filter_crawls.rb +5 -0
  33. data/demos/filter_domain.rb +25 -0
  34. data/demos/filter_geoip.rb +26 -0
  35. data/demos/filter_known_services.rb +59 -0
  36. data/demos/filter_netinfo.rb +23 -0
  37. data/demos/filter_prime.rb +25 -0
  38. data/demos/filter_profiler.rb +3 -0
  39. data/demos/filter_redirection.rb +19 -0
  40. data/demos/filter_site.rb +40 -0
  41. data/demos/filter_siteip.rb +31 -0
  42. data/demos/filter_status.rb +17 -0
  43. data/demos/filter_timestamp.rb +23 -0
  44. data/demos/filter_url.rb +19 -0
  45. data/demos/new_fnd.rb +66 -0
  46. data/demos/nmap_parser.pl +138 -0
  47. data/demos/site_format.rb +18 -0
  48. data/demos/whois_domain.rb +78 -0
  49. data/dicts/GeoIP.dat +0 -0
  50. data/dicts/GeoIPASNum.dat +0 -0
  51. data/dicts/GeoLiteCity.dat +0 -0
  52. data/dicts/ccsld.txt +2646 -0
  53. data/dicts/cctld.txt +243 -0
  54. data/dicts/gtld.txt +25 -0
  55. data/dicts/hostnames-dict.big +1402 -0
  56. data/dicts/hostnames-dict.txt +101 -0
  57. data/lib/wmap/cidr_tracker.rb +327 -0
  58. data/lib/wmap/dns_bruter.rb +308 -0
  59. data/lib/wmap/domain_tracker/sub_domain.rb +142 -0
  60. data/lib/wmap/domain_tracker.rb +342 -0
  61. data/lib/wmap/geoip_tracker.rb +72 -0
  62. data/lib/wmap/google_search_scraper.rb +177 -0
  63. data/lib/wmap/host_tracker/primary_host.rb +130 -0
  64. data/lib/wmap/host_tracker.rb +550 -0
  65. data/lib/wmap/network_profiler.rb +144 -0
  66. data/lib/wmap/port_scanner.rb +208 -0
  67. data/lib/wmap/site_tracker/deactivated_site.rb +85 -0
  68. data/lib/wmap/site_tracker.rb +937 -0
  69. data/lib/wmap/url_checker.rb +314 -0
  70. data/lib/wmap/url_crawler.rb +381 -0
  71. data/lib/wmap/utils/domain_root.rb +184 -0
  72. data/lib/wmap/utils/logger.rb +53 -0
  73. data/lib/wmap/utils/url_magic.rb +343 -0
  74. data/lib/wmap/utils/utils.rb +333 -0
  75. data/lib/wmap/whois.rb +76 -0
  76. data/lib/wmap.rb +227 -0
  77. data/logs/wmap.log +17 -0
  78. data/ruby_whois_patches/base_cocca2.rb +149 -0
  79. data/ruby_whois_patches/kero.yachay.pe.rb +120 -0
  80. data/ruby_whois_patches/whois.PublicDomainRegistry.com.rb +124 -0
  81. data/ruby_whois_patches/whois.above.com.rb +61 -0
  82. data/ruby_whois_patches/whois.adamsnames.tc.rb +107 -0
  83. data/ruby_whois_patches/whois.aeda.net.ae.rb +105 -0
  84. data/ruby_whois_patches/whois.ai.rb +112 -0
  85. data/ruby_whois_patches/whois.arnes.si.rb +121 -0
  86. data/ruby_whois_patches/whois.ascio.com.rb +91 -0
  87. data/ruby_whois_patches/whois.cnnic.cn.rb +123 -0
  88. data/ruby_whois_patches/whois.corporatedomains.com.rb +67 -0
  89. data/ruby_whois_patches/whois.crsnic.net.rb +108 -0
  90. data/ruby_whois_patches/whois.denic.de.rb +174 -0
  91. data/ruby_whois_patches/whois.dk-hostmaster.dk.rb +120 -0
  92. data/ruby_whois_patches/whois.dns.be.rb +134 -0
  93. data/ruby_whois_patches/whois.dns.lu.rb +129 -0
  94. data/ruby_whois_patches/whois.dns.pl.rb +150 -0
  95. data/ruby_whois_patches/whois.dns.pt.rb +119 -0
  96. data/ruby_whois_patches/whois.domain.kg.rb +126 -0
  97. data/ruby_whois_patches/whois.domainregistry.my.rb +123 -0
  98. data/ruby_whois_patches/whois.domreg.lt.rb +110 -0
  99. data/ruby_whois_patches/whois.dot.tk.rb +140 -0
  100. data/ruby_whois_patches/whois.hkirc.hk.rb +121 -0
  101. data/ruby_whois_patches/whois.isnic.is.rb +130 -0
  102. data/ruby_whois_patches/whois.je.rb +119 -0
  103. data/ruby_whois_patches/whois.jprs.jp.rb +137 -0
  104. data/ruby_whois_patches/whois.kenic.or.ke.rb +140 -0
  105. data/ruby_whois_patches/whois.markmonitor.com.rb +118 -0
  106. data/ruby_whois_patches/whois.melbourneit.com.rb +58 -0
  107. data/ruby_whois_patches/whois.nic.as.rb +96 -0
  108. data/ruby_whois_patches/whois.nic.at.rb +109 -0
  109. data/ruby_whois_patches/whois.nic.ch.rb +141 -0
  110. data/ruby_whois_patches/whois.nic.cl.rb +117 -0
  111. data/ruby_whois_patches/whois.nic.ec.rb +157 -0
  112. data/ruby_whois_patches/whois.nic.im.rb +120 -0
  113. data/ruby_whois_patches/whois.nic.it.rb +170 -0
  114. data/ruby_whois_patches/whois.nic.lv.rb +116 -0
  115. data/ruby_whois_patches/whois.nic.ly.rb +127 -0
  116. data/ruby_whois_patches/whois.nic.mu.rb +27 -0
  117. data/ruby_whois_patches/whois.nic.mx.rb +123 -0
  118. data/ruby_whois_patches/whois.nic.net.sa.rb +111 -0
  119. data/ruby_whois_patches/whois.nic.or.kr.rb +101 -0
  120. data/ruby_whois_patches/whois.nic.tel.rb +129 -0
  121. data/ruby_whois_patches/whois.nic.tr.rb +133 -0
  122. data/ruby_whois_patches/whois.nic.us.rb +129 -0
  123. data/ruby_whois_patches/whois.nic.ve.rb +135 -0
  124. data/ruby_whois_patches/whois.norid.no.rb +127 -0
  125. data/ruby_whois_patches/whois.pandi.or.id.rb +118 -0
  126. data/ruby_whois_patches/whois.psi-usa.info.rb +63 -0
  127. data/ruby_whois_patches/whois.registro.br.rb +109 -0
  128. data/ruby_whois_patches/whois.registrygate.com.rb +55 -0
  129. data/ruby_whois_patches/whois.rrpproxy.net.rb +61 -0
  130. data/ruby_whois_patches/whois.sgnic.sg.rb +130 -0
  131. data/ruby_whois_patches/whois.srs.net.nz.rb +166 -0
  132. data/ruby_whois_patches/whois.tucows.com.rb +70 -0
  133. data/ruby_whois_patches/whois.twnic.net.tw.rb +133 -0
  134. data/settings/discovery_ports +24 -0
  135. data/settings/google_keywords.txt +9 -0
  136. data/settings/google_locator.txt +23 -0
  137. data/test/domain_tracker_test.rb +31 -0
  138. data/test/utils_test.rb +168 -0
  139. data/version.txt +13 -0
  140. data/wmap.gemspec +49 -0
  141. metadata +202 -0
@@ -0,0 +1,101 @@
1
+ # The top 100 most common hostname prefix
2
+ www
3
+ host
4
+ mail
5
+ dummy
6
+ router
7
+ ns
8
+ ftp
9
+ gw
10
+ server
11
+ user
12
+ gateway
13
+ pc1
14
+ pc3
15
+ pc2
16
+ smtp
17
+ pc4
18
+ ns1
19
+ pc5
20
+ www2
21
+ pc6
22
+ a
23
+ ns2
24
+ broadcast
25
+ pc10
26
+ pc11
27
+ pc12
28
+ ip
29
+ proxy
30
+ pc7
31
+ pc8
32
+ gate
33
+ test
34
+ pc9
35
+ dns
36
+ news
37
+ mailhost
38
+ pc13
39
+ network
40
+ s0
41
+ pc14
42
+ home
43
+ pc15
44
+ pc16
45
+ pc18
46
+ pc17
47
+ host3
48
+ host4
49
+ pc19
50
+ pc20
51
+ cisco
52
+ host5
53
+ host1
54
+ pc22
55
+ host11
56
+ pc21
57
+ host10
58
+ host12
59
+ pc23
60
+ host13
61
+ pc24
62
+ pc25
63
+ venus
64
+ host2
65
+ host6
66
+ pc26
67
+ pc27
68
+ mars
69
+ pc28
70
+ zeus
71
+ host7
72
+ host8
73
+ host9
74
+ ppp1
75
+ pluto
76
+ host14
77
+ pc29
78
+ web
79
+ host27
80
+ jupiter
81
+ host20
82
+ admin
83
+ host15
84
+ ppp2
85
+ host22
86
+ host18
87
+ host28
88
+ host23
89
+ host25
90
+ host19
91
+ host24
92
+ host21
93
+ host26
94
+ firewall
95
+ mercury
96
+ pc30
97
+ alpha
98
+ host29
99
+ host17
100
+ ws1
101
+ ws2
@@ -0,0 +1,327 @@
1
+ #--
2
+ # Wmap
3
+ #
4
+ # A pure Ruby library for the Internet web application discovery and tracking.
5
+ #
6
+ # Copyright (c) 2012-2015 Yang Li <yang.li@owasp.org>
7
+ #++
8
+ require "netaddr"
9
+
10
+ # Class to track host/IP to the known (trusted) network CIDR blocks
11
+ class Wmap::CidrTracker
12
+ include Wmap::Utils
13
+
14
+ attr_accessor :cidr_seeds, :verbose, :known_cidr_blks, :data_dir
15
+
16
+ # Set class default variables
17
+ def initialize (params = {})
18
+ @verbose=params.fetch(:verbose, false)
19
+ @data_dir=params.fetch(:data_dir, File.dirname(__FILE__)+'/../../data/')
20
+ @file_cidr_seeds=params.fetch(:cidr_seeds, @data_dir + 'cidrs')
21
+ @known_cidr_blks={}
22
+ @known_cidr_blks_desc_index=[]
23
+ @known_cidr_blks_asce_index=[]
24
+ File.write(@file_cidr_seeds, "") unless File.exist?(@file_cidr_seeds)
25
+ load_cidr_blks_from_file(@file_cidr_seeds)
26
+ end
27
+
28
+ # Main worker method to retrieve known network information for a host / ip
29
+ def cidr_worker (host)
30
+ puts "Starting tracking of known CIDR information for host: #{host}" if @verbose
31
+ begin
32
+ host=host.strip.downcase
33
+ ip=host_2_ip(host)
34
+ cidr=cidr_lookup(ip)
35
+ ref=get_cidr_ref(cidr)
36
+ netname=get_cidr_netname(cidr)
37
+ # save the data
38
+ tracker=Hash.new
39
+ tracker['host']=host
40
+ tracker['ip']=ip
41
+ tracker['cidr']=cidr
42
+ tracker['ref']=ref
43
+ tracker['netname']=netname
44
+ return tracker
45
+ rescue => ee
46
+ puts "Exception on method #{__method__} for host #{host}: #{ee}" # if @verbose
47
+ return nil
48
+ end
49
+ end
50
+ alias_method :track, :cidr_worker
51
+
52
+ # 'setter' to load the known CIDR blocks into an instance variable @known_cidr_blks
53
+ def load_cidr_blks_from_file (file_cidrs=@file_cidr_seeds)
54
+ puts "Load the known CIDR seed file: #{file_cidrs}" if @verbose
55
+ begin
56
+ f=File.open(file_cidrs, 'r')
57
+ f.each do |line|
58
+ entry=line.chomp.split(',')
59
+ next unless is_cidr?(entry[0])
60
+ puts "Loading: #{entry[0]}" if @verbose
61
+ key=entry[0].strip
62
+ @known_cidr_blks[key] = Hash.new if not @known_cidr_blks.key?(key)
63
+ @known_cidr_blks[key]['ref']=entry[1].nil? ? nil : entry[1].strip
64
+ @known_cidr_blks[key]['netname']=entry[2].nil? ? nil : entry[2].strip
65
+ end
66
+ f.close
67
+ # Sort the blocks in order once for better performance
68
+ @known_cidr_blks_desc_index=NetAddr.sort(@known_cidr_blks.keys, :Desc=>true)
69
+ @known_cidr_blks_asce_index=NetAddr.sort(@known_cidr_blks.keys, :Desc=>false)
70
+ rescue => ee
71
+ puts "Exception on method #{__method__}: #{ee}" # if @verbose
72
+ end
73
+ end
74
+
75
+ # 'setter' to add an entry to CIDR store @known_cidr_blks
76
+ def add (cidr,ref=nil,netname=nil)
77
+ puts "Load the entry into the CIDR store: #{cidr}"
78
+ begin
79
+ raise "Unknown CIDR format: #{cidr}" unless is_cidr?(cidr)
80
+ # Obtain the 'ref' and 'netname' value automatically in case not passed as method parameters
81
+ if ref.nil? or netname.nil?
82
+ whois = Wmap::Whois.new
83
+ # Note 11/1/2014: Use IP instead of the CIDR to perform the query, as the current ruby-whois query does not support CIDR as query input
84
+ ip=cidr.split("/")[0]
85
+ ref=whois.get_net_desc(ip)
86
+ netname=whois.get_netname(ip)
87
+ whois=nil
88
+ end
89
+ if @known_cidr_blks.key?(cidr)
90
+ puts "Skip! Entry is already exist: #{cidr}"
91
+ return nil
92
+ else
93
+ @known_cidr_blks[cidr] = Hash.new
94
+ @known_cidr_blks[cidr]['ref']=ref
95
+ @known_cidr_blks[cidr]['netname']=netname
96
+ puts "Entry loaded!"
97
+ end
98
+ # Re-sort the blocks in order for better performance
99
+ @known_cidr_blks_desc_index=NetAddr.sort(@known_cidr_blks.keys, :Desc=>true)
100
+ @known_cidr_blks_asce_index=NetAddr.sort(@known_cidr_blks.keys, :Desc=>false)
101
+ rescue => ee
102
+ puts "Exception on method #{__method__}: #{ee}" # if @verbose
103
+ end
104
+ end
105
+
106
+ # 'setter' to remove an entry to CIDR store @known_cidr_blks
107
+ def delete (cidr,ref=nil,netname=nil)
108
+ puts "Remove the entry from the CIDR store: #{cidr}"
109
+ begin
110
+ #cidr.strip!
111
+ raise "Unknown CIDR format: #{cidr}" unless is_cidr?(cidr)
112
+ if @known_cidr_blks.key?(cidr)
113
+ puts "Deleting ..."
114
+ @known_cidr_blks.delete(cidr)
115
+ puts "Entry cleared!"
116
+ else
117
+ raise "Unknown CIDR entry: #{cidr}"
118
+ end
119
+ # Re-sort the blocks in order for better performance
120
+ @known_cidr_blks_desc_index=NetAddr.sort(@known_cidr_blks.keys, :Desc=>true)
121
+ @known_cidr_blks_asce_index=NetAddr.sort(@known_cidr_blks.keys, :Desc=>false)
122
+ rescue => ee
123
+ puts "Exception on method #{__method__}: #{ee}" # if @verbose
124
+ end
125
+ end
126
+ alias_method :del, :delete
127
+
128
+ # Count numbers of CIDR object entries in the CIDR cache table
129
+ def count
130
+ puts "Counting number of entries in the CIDR cache table ..." if @verbose
131
+ begin
132
+ cnt=0
133
+ @known_cidr_blks.keys.map do |key|
134
+ if is_cidr?(key)
135
+ cnt=cnt+1
136
+ end
137
+ end
138
+ puts "Current number of CIDR object entries: #{cnt}" if @verbose
139
+ return cnt
140
+ rescue => ee
141
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
142
+ end
143
+ end
144
+
145
+ # Count numbers of IPs within the trusted CIDR objects
146
+ def counts
147
+ puts "Counting number of IPs within the CIDR store:" if @verbose
148
+ begin
149
+ cnt=0
150
+ @known_cidr_blks.keys.map do |key|
151
+ cnt=cnt+size(key)
152
+ end
153
+ puts "Total number of trusted IPs: #{cnt}" if @verbose
154
+ return cnt
155
+ rescue => ee
156
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
157
+ end
158
+ end
159
+
160
+ # Check if the specific IP within the range of a list of known CIDR blocks
161
+ def ip_trusted? (ip)
162
+ puts "Check if the IP within the range of the known CIDR blocks: #{ip}" if @verbose
163
+ known = false
164
+ begin
165
+ return false if @known_cidr_blks==nil
166
+ first_octet_ip = ip.split('.').first.to_i
167
+ @known_cidr_blks_desc_index.each do |line|
168
+ first_octet_blk = line.split('.').first.to_i
169
+ next if first_octet_blk > first_octet_ip
170
+ cidr4 = NetAddr::CIDR.create(line)
171
+ known = cidr4.contains?(ip+'/32')
172
+ break if known
173
+ end
174
+ rescue => ee
175
+ if @verbose
176
+ puts "Exception on method #{__method__}: #{ee}"
177
+ end
178
+ return false
179
+ end
180
+ return known
181
+ end
182
+ alias_method :is_trusted?, :ip_trusted?
183
+
184
+ # Return the matching CIDR block for a ip
185
+ def cidr_lookup (ip)
186
+ puts "Lookup the CIDR name from the known CIDR list for the IP: #{ip}" if @verbose
187
+ begin
188
+ return nil if @known_cidr_blks==nil
189
+ puts "CIDR Lookup: #{ip} ..." if @verbose
190
+ @known_cidr_blks_desc_index.each do |line|
191
+ first_octet_ip = ip.split('.').first.to_i
192
+ first_octet_blk = line.split('.').first.to_i
193
+ next if first_octet_blk > first_octet_ip
194
+ cidr4 = NetAddr::CIDR.create(line)
195
+ known = cidr4.contains?(ip+'/32')
196
+ return line if known
197
+ end
198
+ rescue => ee
199
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
200
+ return nil
201
+ end
202
+ return nil
203
+ end
204
+ alias_method :lookup, :cidr_lookup
205
+ alias_method :query, :cidr_lookup
206
+
207
+ # Determine if a CIDR entry is already known
208
+ def cidr_known? (cidr)
209
+ puts "Determine if the CIDR is known: #{cidr}" if @verbose
210
+ known=false
211
+ cidr=cidr.strip unless cidr.nil?
212
+ cidr=cidr+"/32" if is_ip?(cidr)
213
+ begin
214
+ raise "Invalid CIDR format: #{cidr}" unless is_cidr?(cidr)
215
+ return false if @known_cidr_blks==nil
216
+ return true if @known_cidr_blks.key?(cidr)
217
+ rescue => ee
218
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
219
+ return false
220
+ end
221
+ return known
222
+ end
223
+ alias_method :is_known?, :cidr_known?
224
+
225
+ # Determine if a cidr is within the range of our known network CIDR blocks
226
+ def cidr_trusted? (cidr)
227
+ puts "Determine if the CIDR within our ranges: #{cidr}" if @verbose
228
+ trusted=false
229
+ cidr=cidr.strip unless cidr.nil?
230
+ cidr=cidr+"/32" if is_ip?(cidr)
231
+ begin
232
+ raise "Invalid CIDR format: #{cidr}" unless is_cidr?(cidr)
233
+ return false if @known_cidr_blks==nil
234
+ return true if @known_cidr_blks.key?(cidr)
235
+ @known_cidr_blks_asce_index.each do |line|
236
+ cidr4 = NetAddr::CIDR.create(line)
237
+ return true if cidr4.contains?(cidr)
238
+ end
239
+ rescue => ee
240
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
241
+ return false
242
+ end
243
+ return trusted
244
+ end
245
+ alias_method :is_trusted?, :cidr_trusted?
246
+
247
+ # NetAddr wrapper to determine number of IPs within the CIDR object.
248
+ def size (cidr)
249
+ puts "Determine the size of CIDR object: #{cidr}" if @verbose
250
+ begin
251
+ raise "Invalid CIDR format: #{cidr}" unless is_cidr?(cidr)
252
+ obj = NetAddr::CIDR.create(cidr)
253
+ return obj.size.to_i
254
+ rescue => ee
255
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
256
+ return nil
257
+ end
258
+ end
259
+
260
+ # Retrieve the CIDR reference text for tracking purpose, if it's a known CIDR entry
261
+ def get_cidr_ref (cidr)
262
+ puts "Lookup CIDR block #{cidr} reference text ..." if @verbose
263
+ cidr=cidr.strip unless cidr.nil?
264
+ return nil unless @known_cidr_blks.key?(cidr)
265
+ return @known_cidr_blks[cidr]['ref']
266
+ end
267
+
268
+ # Retrieve the CIDR netname field for tracking purpose, if it's a known CIDR entry
269
+ def get_cidr_netname (cidr)
270
+ puts "Lookup CIDR block #{cidr} netname ..." if @verbose
271
+ cidr=cidr.strip unless cidr.nil?
272
+ return nil unless @known_cidr_blks.key?(cidr)
273
+ return @known_cidr_blks[cidr]['netname']
274
+ end
275
+
276
+ # Save the current cidr hash table into a file
277
+ def save_cidrs_to_file!(file_cidrs=@file_cidr_seeds)
278
+ puts "Saving the current cidrs cache table from memory to file: #{file_cidrs} ..." if @verbose
279
+ begin
280
+ timestamp=Time.now
281
+ f=File.open(file_cidrs, 'w')
282
+ f.write "# Local cidrs file created by Wmap::CidrTracker.save method at: #{timestamp}\n"
283
+ f.write "Network CIDR, CIDR RIPE Reference Text, CIDR NETNAME\n"
284
+ @known_cidr_blks_asce_index.map do |key|
285
+ ref=get_cidr_ref(key)
286
+ netname=get_cidr_netname(key)
287
+ f.write "#{key},#{ref},#{netname}\n"
288
+ end
289
+ f.close
290
+ puts "CIDR cache table is successfully saved: #{file_cidrs}"
291
+ rescue => ee
292
+ puts "Exception on method #{__method__}: #{ee}" if @verbose
293
+ end
294
+ end
295
+ alias_method :save!, :save_cidrs_to_file!
296
+
297
+ # Print summary report of a list of known CIDR blocks
298
+ def print_known_cidr_blks
299
+ puts "Print the known CIDR Netblocks in ascendant order" if @verbose
300
+ puts "Network CIDR, RIPE Reference Text, NETNAME"
301
+ @known_cidr_blks_asce_index.map do |key|
302
+ ref=@known_cidr_blks[key]['ref']
303
+ netname=@known_cidr_blks[key]['netname']
304
+ puts "#{key}, #{ref}, #{netname}"
305
+ end
306
+ puts "End of the summary"
307
+ end
308
+ alias_method :inspect, :print_known_cidr_blks
309
+
310
+ # Print summary report of a list of known CIDR blocks in the descendant order
311
+ def print_known_cidr_blks_desc
312
+ puts "\nIndex of known CIDR Net blocks in Descendant Order:"
313
+ puts @known_cidr_blks_desc_index
314
+ puts "End of the Index"
315
+ end
316
+
317
+ # Print summary report of a list of known CIDR blocks in the ascendant order
318
+ def print_known_cidr_blks_asce
319
+ puts "\nIndex of known CIDR Net blocks in Ascending Order:"
320
+ puts @known_cidr_blks_asce_index
321
+ puts "End of the Index"
322
+ end
323
+ alias_method :print, :print_known_cidr_blks_asce
324
+
325
+ private :load_cidr_blks_from_file
326
+
327
+ end