class Anamo::Ports::Thor
Public Instance Methods
exec()
click to toggle source
# File lib/anamo/ports/thor.rb, line 17 def exec data = inspect false ::Anamo::Api.new.post_ports MultiJson.dump data end
inspect(output = true)
click to toggle source
# File lib/anamo/ports/thor.rb, line 28 def inspect output = true netstat_results = nil nmap_results = nil status, stdout, stderr = systemu "netstat -lnutp" if status.success? netstat_results = [] stdout.split("\n").drop(2).each do |line| cols = line.gsub(/\s+/m, ' ').strip.split(" ") cols.delete_at(5) if cols.length == 7 process = cols[5].match(/^([^\/]*)\/(.*)$/) netstat_results << { 'proto' => cols[0], 'l_addr' => cols[3].split(':')[0], 'l_port' => cols[3].split(':')[1], 'f_addr' => cols[4].split(':')[0], 'f_port' => cols[4].split(':')[1], 'p_id' => process[1], 'p_name' => process[2] } end end l_addr = "127.0.0.1" # tcp scan status, stdout, stderr = systemu "nmap -sS --open -p1-65535 #{l_addr}" if status.success? nmap_results = [] unless nmap_results stdout.split("\n").each do |line| cols = line.gsub(/\s+/m, ' ').strip.split(" ") next unless cols.length > 0 port_col = cols[0].match(/([^\/]*)\/tcp/) next unless port_col nmap_results << { 'proto' => 'tcp', 'l_addr' => l_addr, 'l_port' => port_col[1] } end end status, stdout, stderr = systemu "nmap -sU --open -p1-65535 #{l_addr}" if status.success? nmap_results = [] unless nmap_results stdout.split("\n").each do |line| cols = line.gsub(/\s+/m, ' ').strip.split(" ") next unless cols.length > 0 port_col = cols[0].match(/([^\/]*)\/udp/) next unless port_col nmap_results << { 'proto' => 'udp', 'l_addr' => l_addr, 'l_port' => port_col[1] } end end data = {} data['nmap'] = nmap_results if nmap_results data['netstat'] = netstat_results if netstat_results puts data if output data end