2012年9月12日水曜日

PHPでNT Mac Addressを入手する




以下のコードは、Mac Addressを取得する方法です。
他のネットワーク上は不可能であり、PHPエンジンがWindows NTマシンに敷かれている状態で、
Microsoft NetBEUI protocolを使用してMAC Addrを取得することができます


class NtMacAddress{
 function getMac($ what){
  $ what=&strtolower($ what);
  if($ what=='server'){
   return$ this->__server_macaddress();
  }
  elseif($ what=='client'){
   return$ this->__client_macaddress();
  }
  else{
   return'' client"or" server"?";
  }
 }
 function __ server_macaddress(){
  $ output= Array();
  exec("netstat-r"、$ output);
  for($ a=0、$ b=&count($ output);$ a<$ b、$ a + +){
   if(preg_match("/(?i)([a-z0-9]{2}){6}/"、$ output[$ a])== true){
    $ macaddress=&$ output[$ a];
    $ uniquekey=&md5($ macaddress);
    $ output[$ a]=&preg_replace("/(?i)([^ a-z0-9]*?)([a-z0-9]{2}){6}/ i"、"1{$ uniquekey}"、$ output[$ a]);
    $ output[$ a]=&explode("{$ uniquekey}"、$ output[$ a]);
    $ uniquekey= Array(trim($ output[$ a][0])、trim($ output[$ a][1]));
    $ macaddress=&str_replace($ uniquekey、""、$ macaddress);
    return trim($ macaddress);
   }
  }
  return'not found';
 }
 function __ client_macaddress(){
  $ output= Array();
  exec("nbtstat-A'、$_SERVER[' REMOTE_ADDR ']、$ output);
  $ reg="([a-f0-9]{2} - ){5}([a-f0-9]{2})';
  for($ a=0、$ b=&count($ output);$ a<$ b、$ a + +){
   if(preg_match("/(?i){$ reg}/"、$ output[$ a])== true){
           return preg_replace("/(?iU)(。+)({$ reg})(*)/"、"2"、$ output[$ a]);
   }
  }
  return'not found';
 }
}

// How to..
$ mac=&new NtMacAddress();
echo'SERVER MAC:'、$ mac-> getMac('server')。'
CLIENT MAC:'、$ mac-> getMac(' client');
?>

0 件のコメント:

コメントを投稿