#!/usr/bin/env ruby # Executable to lookup then merge site tech details into the RHPG asset spreadsheet in CSV format only # ## Usage: RHPG [RHPG.csv] require "wmap" require "csv" include Wmap::Utils def print_usage puts "Program to lookup then merge the site details into RHPG asset spreadsheet. \nUsage: RHPG [RHPG.csv]" end def site_lookup(domain) tracker=Wmap::SiteTracker.new(:verbose=>false) #first order search tracker.known_sites.each do |key,val| if key.include?(domain.strip.downcase) && key.include?("https") tracker=nil return [key] + val.values end end #second order search tracker.known_sites.each do |key,val| if key.include?(domain.strip.downcase) tracker=nil return [key] + val.values end end tracker=nil return [nil]*9 end def wp_site_lookup(domain) tracker=Wmap::WpTracker.new(:verbose=>false) # first order tracker.known_wp_sites.each do |key,val| if key.include?(domain.strip.downcase) && val ver=tracker.wp_ver(key) tracker=nil return [val,ver] end end # second order tracker.known_wp_sites.each do |key,val| if key.include?(domain.strip.downcase) && key.include?("https") tracker=nil return [val,nil] end end # third order tracker.known_wp_sites.each do |key,val| if key.include?(domain.strip.downcase) tracker=nil return [val,nil] end end tracker=nil return [nil,nil] end puts Wmap.banner print_usage # open output file to write CSV.open("output.csv", "wb") do |csv| cnt=1 # open RHPG input file to read CSV.foreach(ARGV[0]) do |row| puts "Processing row #{cnt}" #puts row.inspect my_row=Array.new if cnt > 1 if is_domain?(row[0]) my_row = row + site_lookup(row[0]) + wp_site_lookup(row[0]) else my_row = row + [nil]*10 end else my_row = row + ["Website","Primary IP","Port","Hosting Status","Server","Response Code","MD5 Finger-print","Redirection","Timestamp", "WordPress", "WordPress Version"] end cnt+=1 csv << my_row end puts "All done. " end