#!/usr/bin/env ruby
#
# $Id$
# $Revision$
#
# This small utility will display all the informations about the network interfaces
# that one can use under Windows with modules using pcaprub and having the INTERFACE option (ex: arp_poisonning, arp_sweep, ...).
# To use th interface option under  Windows use the Index value displayed by this tool (ex: "SET INTERFACE 1")
#
#

msfbase = __FILE__
while File.symlink?(msfbase)
	msfbase = File.expand_path(File.readlink(msfbase), File.dirname(msfbase))
end

$:.unshift(File.expand_path(File.join(File.dirname(msfbase), '..', 'lib')))
require 'fastlib'
require 'msfenv'

$:.unshift(ENV['MSF_LOCAL_LIB']) if ENV['MSF_LOCAL_LIB']


if RUBY_PLATFORM == "i386-mingw32"
	begin
		require 'network_interface'
	rescue ::Exception => e
		$stderr.puts "Error: NetworkInterface is not installed..."
		exit
	end

	unless (
		NetworkInterface.respond_to?(:interfaces) and
		NetworkInterface.respond_to?(:addresses)  and
		NetworkInterface.respond_to?(:interface_info)
	)
		$stderr.puts "Error: Looks like you are not running the latest version of NetworkInterface"
		exit
	end
	found = false
	NetworkInterface.interfaces.each_with_index do |iface, i|
		found = true
		detail = NetworkInterface.interface_info(iface)
		addr = NetworkInterface.addresses(iface)
		puts "#" * 70
		puts ""
		puts "INDEX        :  " + (i + 1).to_s
		puts "NAME         :  " + detail["name"]
		puts "DESCRIPTION  :  " + detail["description"]
		puts "GUID         :  " + detail["guid"]
		if addr[NetworkInterface::AF_LINK][0]['addr']
			puts "MAC ADDRESS  :  #{addr[NetworkInterface::AF_LINK][0]['addr']}"
		else
			puts "MAC ADDRESS  :  NONE"
		end
		if addr[NetworkInterface::AF_INET][0]['addr'] and addr[NetworkInterface::AF_INET][0]['netmask']
			puts "IP ADDRESS   :  #{addr[NetworkInterface::AF_INET][0]['addr']}/#{addr[NetworkInterface::AF_INET][0]['netmask']}"
		else
			puts "IP ADDRESS   :  NONE"
		end
		puts ""
	end
	if found
		puts "#" * 70
	else
		$stderr.puts "Error, no network interfaces have been detected"
	end
else
	$stderr.puts "Error: This script is useful only on Windows, under other OS just use the built-in commands (ifconfig, ip link show, ...)"
	exit
end
