wmap 2.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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