下面的代码是如何获取的MAC地址。
在底层,不能授予另一个网络时,PHP引擎和Windows NT机器
MAC地址可以通过Microsoft的NetBEUI协议
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' );
?>
没有评论:
发表评论