import java.io. * ;
import java.net. * ;
import java.util. * ;
public class getMac
{
public static void main(String[] args)
{
//Get IP of local host
String IP = "";
IP = getIP();
System.out.println(IP);
//Get OS type
String OSName = getOSName();
System.out.println("os.name:"+OSName);
//Get IPconfig command
String IPconfig = getIPconfig(OSName);
System.out.println("IPconfig:"+IPconfig);
//Get the configuration of your system
String sysconfig = getSysConfig(IPconfig);
System.out.println("sysconfig:"+sysconfig);
//Get MAC address of eth0
String MAC = getMAC(sysconfig,OSName);
System.out.println("MAC : "+MAC);
String DNS = getDNS(sysconfig,OSName);
System.out.println("DNS : "+DNS);
}
//Get OS type
public static String getOSName(){
Properties properties = null ;
properties = System.getProperties();
String OSName = properties.getProperty("os.name");
return OSName;
}
//Get IPconfig command
public static String getIPconfig(String OSName){
String IPconfig = "";
//RedHat Linux 9.0
if (OSName.compareToIgnoreCase("Linux")==0){
IPconfig="ifconfig";
//WINDOWS XP
} else if ( OSName.compareToIgnoreCase("Windows XP")==0 ){
IPconfig="ipconfig /all";
//other OS that I don't know
} else {
System.out.println("I don't know your os type !");
System.exit(1);
}
return IPconfig;
}
//Get the configuration of your system
public static String getSysConfig(String ipconfig){
String sysconfig = "";
try {
Process p = Runtime.getRuntime().exec(ipconfig);
InputStreamReader reader = new InputStreamReader(p.getInputStream());
char[] localConfig=new char[2000];
reader.read(localConfig);
for (int i=0;i<2000 ;i++ ){
sysconfig+=localConfig[i];
}
}
catch (java.io.IOException ex) {
System.err.println("Problems invoking "+ipconfig);
System.exit(1);
}
return sysconfig;
}
//Get MAC address of eth0
//This function can only be used by getMAC
private static String getmac(String sysconfig,String macstr){
String mac = "";
int index=sysconfig.indexOf(macstr);
index+=macstr.length();
for (; index<=sysconfig.length() ;index++ ){
if (sysconfig.charAt(index)>='0')
if (sysconfig.charAt(index)<='9')
break;
if (sysconfig.charAt(index)>='a')
if (sysconfig.charAt(index)<='f')
break;
if (sysconfig.charAt(index)>='A')
if (sysconfig.charAt(index)<='F')
break;
}
for (int i=0;i<17 ;i++ )
{
mac+=sysconfig.charAt(index);
index++;
}
return mac;
}
//Get MAC address of eth0
//This function can only be used by getMAC
private static String getdns(String sysconfig,String macstr){
String dns = "";
int index=sysconfig.indexOf(macstr);
index+=macstr.length();
for (; index<=sysconfig.length() ;index++ ){
if (sysconfig.charAt(index)>='0')
if (sysconfig.charAt(index)<='9')
break;
if (sysconfig.charAt(index)>='a')
if (sysconfig.charAt(index)<='f')
break;
if (sysconfig.charAt(index)>='A')
if (sysconfig.charAt(index)<='F')
break;
}
for (int i=0;i<15;i++ )
{
dns+=sysconfig.charAt(index);
index++;
}
for (int i=0;i<44;i++ )
{
index++;
}
for (int i=0;i<15;i++ )
{
dns+=sysconfig.charAt(index);
index++;
}
return dns;
}
//Get MAC address of eth0
public static String getMAC(String sysconfig,String OSName){
String MAC = "";
//RedHAT Linux 9.0
if (OSName.compareToIgnoreCase("Linux")==0){
MAC=getmac(sysconfig,"Ethernet HWaddr");
}
//WINDOWS XP
else if ( OSName.compareToIgnoreCase("Windows XP")==0 ){
MAC = getmac(sysconfig,"Physical Address");
}
else {
System.out.println("I don't know your os type !");
System.exit(1);
}
return MAC;
}
//Get MAC address of eth0
public static String getDNS(String sysconfig,String OSName){
String DNS = "";
//RedHAT Linux 9.0
if (OSName.compareToIgnoreCase("Linux")==0){
DNS=getmac(sysconfig,"Ethernet HWaddr");
}
//WINDOWS XP
else if ( OSName.compareToIgnoreCase("Windows XP")==0 ){
DNS = getdns(sysconfig,"DNS Servers");
}
else {
System.out.println("I don't know your os type !");
System.exit(1);
}
return DNS;
}
//Get IP of eth0
public static String getIP(){
String IP = "";
try {
Enumeration nifs= NetworkInterface.getNetworkInterfaces();
while (nifs.hasMoreElements()){
NetworkInterface netIf= (NetworkInterface)nifs.nextElement();
String nifName= netIf.getName();
if (nifName.compareToIgnoreCase("lo")==0){
continue ;
}
System.out.print(nifName + " : ");
for (Enumeration nifIp= netIf.getInetAddresses(); nifIp.hasMoreElements();) {
InetAddress address= (InetAddress)nifIp.nextElement();
IP= address.getHostAddress();
System.out.println(IP);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return IP;
}
}