Example 1
PHP Code:
The code is as follows |
Copy Code |
<?php @exec ("Arp-a", $array); Executes the ARP-A command, and the result is placed in the array $array echo "<pre>"; Print_r ($array); Print fetched array
foreach ($array as $value) { if (//match result put to array $mac_array Strpos ($value, $_server["REMOTE_ADDR"]) && Preg_match ("/(:? [ 0-9a-f]{2}[:-]) {5}[0-9a-f]{2}/i ", $value, $mac _array) ) { $mac = $mac _array[0]; Break } } Echo $mac; Output Client Mac ?> |
Example 2
The code is as follows |
Copy Code |
<?php Class Macaddr { Public $returnArray = Array (); Public $macAddr;
function __contruct ($os _type=null) { if (Is_null ($os _type)) $os _type = Php_os; Switch (Strtolower ($os _type)) { Case "Linux": $this->forlinux (); Break Case "Solaris": Break Case "UNIX": Break Case "AIX": Break Default $this->forwindows (); Break } $temp _array = Array (); foreach ($this->returnarray as $value) { if (Preg_match ("/[0-9a-f][0-9a-f][:-]". " [0-9a-f] [0-9a-f] [:-]"." [0-9a-f] [0-9a-f] [:-]"." [0-9a-f] [0-9a-f] [:-]"." [0-9a-f] [0-9a-f] [:-]"." [0-9a-f] [0-9a-f]/i, $value, $temp _array)) { $this->macaddr = $temp _array[0]; Break } } unset ($temp _array); return $this->macaddr; }
function Forwindows () { @exec ("Ipconfig/all", $this->returnarray); if ($this->returnarray) return $this->returnarray; else{ $ipconfig = $_server["windir"]. " System32ipconfig.exe "; if (Is_file ($ipconfig)) @exec ($ipconfig. "/all", $this->returnarray); Else @exec ($_server["windir"]. " Systemipconfig.exe/all ", $this->returnarray); return $this->returnarray; } }
function Forlinux () { @exec ("Ifconfig-a", $this->returnarray); return $this->returnarray; } }
$mac = new Macaddr (php_os); Echo $mac->macaddr; echo "<br/>";
Get Client Linux $command = "Arp-a {$_server[' remote_addr ']}"; Echo $command; echo "<br/>"; $result = ' {$command} ';
Windows $command = "Nbtstat-a {$_server[' remote_addr ']}"; Echo $command; echo "<br/>"; $result = ' {$command} '; Print_r ($result); ?> |
There is no big problem getting the server-side logic, and there may be permissions issues.
It may be slower to get the client, and the Arp/nbstat command execution will be slower.
The code is as follows |
Copy Code |
<script language= "JScript" event= "oncompleted (Hresult,perrorobject, Pasynccontext)" for= "foo" > Document.forms[0].lbmacaddr.value=unescape (MACADDR); </script> <script language= "JScript" event= "OnObjectReady (objobject,objasynccontext)" for= "foo" > if (objobject.ipenabled!= null && objobject.ipenabled!= "undefined" && objobject.ipenabled = = True & & objobject.macaddress!= null && objobject.macaddress!= "undefined") macaddr = objobject.macaddress; </script> <object id= "locator" classid= "Clsid:76a64158-cb41-11d1-8b02-00600806d9b6" ></object> <object id= "foo" classid= "clsid:75718c9a-f029-11d1-a1ac-00c04fb6c223" ></object> <script language= "JScript" > var service = Locator. ConnectServer (); var macaddr; var ipaddr; var domainaddr; var sdnsname; Service. Security_. impersonationlevel=3; Service. Instancesofasync (foo, ' Win32_NetworkAdapterConfiguration '); </script> <form><input type= "text" id= ' lbmacaddr ' name= ' lbmacaddr '/></form> |
Only for IE browsers, and alerts are available