lib/scanner/plugins/dns/generic.rb in yawast-0.6.0.beta4 vs lib/scanner/plugins/dns/generic.rb in yawast-0.6.0.beta5

- old
+ new

@@ -103,52 +103,15 @@ Yawast::Utilities.puts_info "\t\tNS: #{rec.name} - #{ip} (#{get_network_info(ip.to_s)})" end end if options.srv - File.open(File.dirname(__FILE__) + '/../../../resources/srv_list.txt', 'r') do |f| - f.each_line do |line| - host = line.strip + '.' + root_domain - begin - srv = resv.getresources(host, Resolv::DNS::Resource::IN::SRV) - - unless srv.empty? - srv.each do |rec| - ip = resv.getaddress rec.target - - Yawast::Utilities.puts_info "\t\tSRV: #{host}: #{rec.target}:#{rec.port} - #{ip} (#{get_network_info(ip.to_s)})" - end - end - rescue - #if this fails, don't really care - end - end - end + find_srv root_domain, resv end if options.subdomains - File.open(File.dirname(__FILE__) + '/../../../resources/subdomain_list.txt', 'r') do |f| - f.each_line do |line| - host = line.strip + '.' + root_domain - - begin - a = resv.getresources(host, Resolv::DNS::Resource::IN::A) - - unless a.empty? - a.each do |ip| - if IPAddr.new(ip.address.to_s, Socket::AF_INET).private? - Yawast::Utilities.puts_info "\t\tA: #{host}: #{ip.address}" - else - Yawast::Utilities.puts_info "\t\tA: #{host}: #{ip.address} (#{get_network_info(ip.address)})" - end - end - end - rescue - #if this fails, don't really care - end - end - end + find_subdomains root_domain, resv end end #get the CAA info Yawast::Scanner::Plugins::DNS::CAA.caa_info uri @@ -158,10 +121,55 @@ Yawast::Utilities.puts_error "Error getting basic information: #{e.message}" raise end end + def self.find_srv(root_domain, resv) + File.open(File.dirname(__FILE__) + '/../../../resources/srv_list.txt', 'r') do |f| + f.each_line do |line| + host = line.strip + '.' + root_domain + begin + srv = resv.getresources(host, Resolv::DNS::Resource::IN::SRV) + + unless srv.empty? + srv.each do |rec| + ip = resv.getaddress rec.target + + Yawast::Utilities.puts_info "\t\tSRV: #{host}: #{rec.target}:#{rec.port} - #{ip} (#{get_network_info(ip.to_s)})" + end + end + rescue + #if this fails, don't really care + end + end + end + end + + def self.find_subdomains(root_domain, resv) + File.open(File.dirname(__FILE__) + '/../../../resources/subdomain_list.txt', 'r') do |f| + f.each_line do |line| + host = line.strip + '.' + root_domain + + begin + a = resv.getresources(host, Resolv::DNS::Resource::IN::A) + + unless a.empty? + a.each do |ip| + if IPAddr.new(ip.address.to_s, Socket::AF_INET).private? + Yawast::Utilities.puts_info "\t\tA: #{host}: #{ip.address}" + else + Yawast::Utilities.puts_info "\t\tA: #{host}: #{ip.address} (#{get_network_info(ip.address)})" + end + end + end + rescue + #if this fails, don't really care + end + end + end + end + def self.get_network_info(ip) #check to see if we have this one cached @netinfo = Hash.new if @netinfo == nil return @netinfo[ip] if @netinfo[ip] != nil @@ -169,10 +177,10 @@ #connections are blocked. @netinfo_failed = false if @netinfo_failed == nil return 'Network Information disabled due to prior failure' if @netinfo_failed begin - network_info = JSON.parse(Net::HTTP.get(URI("https://api.iptoasn.com/v1/as/ip/#{ip}"))) + network_info = Yawast::Shared::Http.get_json URI("https://api.iptoasn.com/v1/as/ip/#{ip}") ret = "#{network_info['as_country_code']} - #{network_info['as_description']}" @netinfo[ip] = ret return ret