Finding Mac Address of a System Using PHP

on Friday, August 14, 2009

Hi,

Here is the coding for finding the mac address of a system using php.


__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'; } } /****************************************** this is currently set to accept 11 parameters, although you can add as many as you want: 1. safe - returns true/false, you can determine what makes the browser be safe lower down, currently it's set for ns4 and pre version 1 mozillas not being safe, plus all older browsers 2. ie_version - tests to see what general IE it is, ie5x-6, ie4, or ieMac, returns these values. 3. moz_version - returns array of moz version, version number (includes full version, + etc), rv number (for math comparison), rv number (for full rv, including alpha and beta versions), and release date 4. dom - returns true/false if it is a basic dom browser, ie >= 5, opera >= 5, all new mozillas, safaris, konquerors
5. os - returns which os is being used
6. os_number - returns windows versions, 95, 98, me, nt 4, nt 5 [windows 2000], nt 5.1 [windows xp],
Just added: os x detection[crude] otherwise returns false
7. browser - returns the browser name, in shorthand: ie, ie4, ie5x, op, moz, konq, saf, ns4
8. number - returns the browser version number, if available, otherwise returns '' [not available]
9. full - returns this array: $browser_name, $version_number, $ie_version, $dom_browser,
$safe_browser, $os, $os_number, $s_browser [the browser search string from the browser array], $type
10. type - returns whether it's a bot or a browser
11. math_number - returns basic version number, for math comparison, ie. 1.2rel2a becomes 1.2
*******************************************/
function browser_detection( $which_test )
{
static $dom_browser, $safe_browser, $browser_user_agent, $os, $browser_name, $s_browser, $ie_version,
$version_number, $os_number, $b_repeat, $moz_version, $moz_version_number, $moz_rv, $moz_rv_full, $moz_release,
$type, $math_version_number;
if ( !$b_repeat )
{
//initialize all variables with default values to prevent error
$dom_browser = false;
$type = 'bot';// default to bot since you never know with bots
$safe_browser = false;
$os = '';
$os_number = '';
$a_os_data = '';
$browser_name = '';
$version_number = '';
$math_version_number = '';
$ie_version = '';
$moz_version = '';
$moz_version_number = '';
$moz_rv = '';
$moz_rv_full = '';
$moz_release = '';
$webkit_types = '';
$webkit_version = '';
$b_success = false;// boolean for if browser found in main test

//make navigator user agent string lower case to make sure all versions get caught
// isset protects against blank user agent failure
$browser_user_agent = ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : '';
// known browsers, list will be updated routinely, check back now and then
$a_browser_types[] = array( 'opera', true, 'op', 'bro' );
$a_browser_types[] = array( 'msie', true, 'ie', 'bro' );
$a_browser_types[] = array( 'konqueror', true, 'konq', 'bro' );
$a_browser_types[] = array( 'webkit', true, 'webkit', 'bro' );
// covers Netscape 6-7, K-Meleon, Most linux versions, uses moz array below
$a_browser_types[] = array( 'gecko', true, 'moz', 'bro' );
$a_browser_types[] = array( 'netpositive', false, 'netp', 'bbro' );// beos browser
$a_browser_types[] = array( 'lynx', false, 'lynx', 'bbro' ); // command line browser
$a_browser_types[] = array( 'elinks ', false, 'elinks', 'bbro' ); // new version of links
$a_browser_types[] = array( 'elinks', false, 'elinks', 'bbro' ); // alternate id for it
$a_browser_types[] = array( 'links ', false, 'links', 'bbro' ); // old name for links
$a_browser_types[] = array( 'links', false, 'links', 'bbro' ); // alternate id for it
$a_browser_types[] = array( 'w3m', false, 'w3m', 'bbro' ); // open source browser, more features than lynx/links
$a_browser_types[] = array( 'webtv', false, 'webtv', 'bbro' );// junk ms webtv
$a_browser_types[] = array( 'amaya', false, 'amaya', 'bbro' );// w3c browser
$a_browser_types[] = array( 'dillo', false, 'dillo', 'bbro' );// linux browser, basic table support
$a_browser_types[] = array( 'ibrowse', false, 'ibrowse', 'bbro' );// amiga browser
$a_browser_types[] = array( 'icab', false, 'icab', 'bro' );// mac browser
$a_browser_types[] = array( 'crazy browser', true, 'ie', 'bro' );// uses ie rendering engine
$a_browser_types[] = array( 'sonyericssonp800', false, 'sonyericssonp800', 'bbro' );// sony ericsson handheld

// search engine spider bots:
$a_browser_types[] = array( 'googlebot', false, 'google', 'bot' );// google
$a_browser_types[] = array( 'mediapartners-google', false, 'adsense', 'bot' );// google adsense
$a_browser_types[] = array( 'yahoo-verticalcrawler', false, 'yahoo', 'bot' );// old yahoo bot
$a_browser_types[] = array( 'yahoo! slurp', false, 'yahoo', 'bot' ); // new yahoo bot
$a_browser_types[] = array( 'yahoo-mm', false, 'yahoomm', 'bot' ); // gets Yahoo-MMCrawler and Yahoo-MMAudVid bots
$a_browser_types[] = array( 'inktomi', false, 'inktomi', 'bot' ); // inktomi bot
$a_browser_types[] = array( 'slurp', false, 'inktomi', 'bot' ); // inktomi bot
$a_browser_types[] = array( 'fast-webcrawler', false, 'fast', 'bot' );// Fast AllTheWeb
$a_browser_types[] = array( 'msnbot', false, 'msn', 'bot' );// msn search
$a_browser_types[] = array( 'ask jeeves', false, 'ask', 'bot' ); //jeeves/teoma
$a_browser_types[] = array( 'teoma', false, 'ask', 'bot' );//jeeves teoma
$a_browser_types[] = array( 'scooter', false, 'scooter', 'bot' );// altavista
$a_browser_types[] = array( 'openbot', false, 'openbot', 'bot' );// openbot, from taiwan
$a_browser_types[] = array( 'ia_archiver', false, 'ia_archiver', 'bot' );// ia archiver
$a_browser_types[] = array( 'zyborg', false, 'looksmart', 'bot' );// looksmart
$a_browser_types[] = array( 'almaden', false, 'ibm', 'bot' );// ibm almaden web crawler
$a_browser_types[] = array( 'baiduspider', false, 'baidu', 'bot' );// Baiduspider asian search spider
$a_browser_types[] = array( 'psbot', false, 'psbot', 'bot' );// psbot image crawler
$a_browser_types[] = array( 'gigabot', false, 'gigabot', 'bot' );// gigabot crawler
$a_browser_types[] = array( 'naverbot', false, 'naverbot', 'bot' );// naverbot crawler, bad bot, block
$a_browser_types[] = array( 'surveybot', false, 'surveybot', 'bot' );//
$a_browser_types[] = array( 'boitho.com-dc', false, 'boitho', 'bot' );//norwegian search engine
$a_browser_types[] = array( 'objectssearch', false, 'objectsearch', 'bot' );// open source search engine
$a_browser_types[] = array( 'answerbus', false, 'answerbus', 'bot' );// http://www.answerbus.com/, web questions
$a_browser_types[] = array( 'sohu-search', false, 'sohu', 'bot' );// chinese media company, search component
$a_browser_types[] = array( 'iltrovatore-setaccio', false, 'il-set', 'bot' );

// various http utility libaries
$a_browser_types[] = array( 'w3c_validator', false, 'w3c', 'lib' ); // uses libperl, make first
$a_browser_types[] = array( 'wdg_validator', false, 'wdg', 'lib' ); //
$a_browser_types[] = array( 'libwww-perl', false, 'libwww-perl', 'lib' );
$a_browser_types[] = array( 'jakarta commons-httpclient', false, 'jakarta', 'lib' );
$a_browser_types[] = array( 'python-urllib', false, 'python-urllib', 'lib' );

// download apps
$a_browser_types[] = array( 'getright', false, 'getright', 'dow' );
$a_browser_types[] = array( 'wget', false, 'wget', 'dow' );// open source downloader, obeys robots.txt

// netscape 4 and earlier tests, put last so spiders don't get caught
$a_browser_types[] = array( 'mozilla/4.', false, 'ns', 'bbro' );
$a_browser_types[] = array( 'mozilla/3.', false, 'ns', 'bbro' );
$a_browser_types[] = array( 'mozilla/2.', false, 'ns', 'bbro' );

//$a_browser_types[] = array( '', false ); // browser array template
$moz_types = array( 'firebird', 'flock', 'seamonkey', 'phoenix', 'iceweasel', 'firefox', 'galeon', 'k-meleon', 'camino', 'epiphany', 'netscape6', 'netscape', 'multizilla', 'swiftfox', 'rv' );
$webkit_types = array( 'arora', 'midori', 'chrome', 'epiphany', 'gtklauncher', 'iphone', 'omniweb', 'konqueror', 'safari', 'applewebkit' );
$i_count = count($a_browser_types);
for ($i = 0; $i < $i_count; $i++) { $s_browser = $a_browser_types[$i][0];// text string to id browser from array if (stristr($browser_user_agent, $s_browser)) { $safe_browser = true; $dom_browser = $a_browser_types[$i][1];// hardcoded dom support from array $browser_name = $a_browser_types[$i][2];// working name for browser $type = $a_browser_types[$i][3];// sets whether bot or browser switch ( $browser_name ) { case 'ns': $safe_browser = false; $version_number = browser_version( $browser_user_agent, 'mozilla' ); break; case 'moz': $moz_rv_full = browser_version( $browser_user_agent, 'rv' ); $moz_rv = substr( $moz_rv_full, 0, 3 ); $i_count = count( $moz_types ); for ( $i = 0; $i < $i_count; $i++ ) { if ( stristr( $browser_user_agent, $moz_types[$i] ) ) { $moz_version = $moz_types[$i]; $moz_version_number = browser_version( $browser_user_agent, $moz_version ); break; } } if ( !$moz_rv ) { $moz_rv = substr( $moz_version_number, 0, 3 ); $moz_rv_full = $moz_version_number; } if ( $moz_version == 'rv' ) { $moz_version = 'mozilla'; } $version_number = $moz_rv; $moz_release = browser_version( $browser_user_agent, 'gecko/' ); if ( ( $moz_release < safe_browser =" false;" version_number =" browser_version(" ie_version =" 'ieMac';">= 5 )
{
$ie_version = 'ie5x';
}
elseif ( ( $version_number > 3 ) && ( $version_number < dom_browser =" false;" ie_version =" 'ie4';" safe_browser =" true;" ie_version =" 'old';" dom_browser =" false;" safe_browser =" false;" version_number =" browser_version(" safe_browser =" false;" version_number =" browser_version(" i_count =" count(" i =" 0;" webkit_version =" $webkit_types[$i];" webkit_version_number =" browser_version(" s_browser =" 'Epiphany';" s_browser =" $webkit_types[$i];" version_number =" browser_version(" b_success =" true;" s_browser =" substr(" s_browser =" $r[0];" version_number =" browser_version(" a_os_data =" which_os(" os =" $a_os_data[0];//" os_number =" $a_os_data[1];//" b_repeat =" true;" m =" array();" math_version_number =" $m[0];" moz_array =" array(" full_array =" array(" os =" '';" os_version =" '';" a_mac =" array(" a_unix =" array(" a_linux =" array(" a_linux_process =" array" a_os =" array(" i_count =" count(" i =" 0;" s_os =" $a_os[$i];" os =" $s_os;" os_version =" '95';" os_version =" 'me';" os_version =" '98';" os_version =" 5.0;" os =" 'nt';" os_version =" 5.1;" os =" 'nt';" os_version =" 5.2;" os =" 'nt';" os_version =" 6.0;" os =" 'nt';" os_version =" 'ce';" os_version =" 6.1;" os =" 'nt';" os_version =" 6.0;" os =" 'nt';" os_version =" 5.2;" os =" 'nt';" os_version =" 5.1;//" os_version =" 5.0;" os_version =" 4;" os_version =" 3;" os_version =" 10;" browser_name ="="" browser_name ="="" browser_name ="="">= 1.3 ) ) ||
( ( $browser_name == 'ie' ) && ( $version_number >= 5.2 ) ) )
{
$os_version = 10;
}
break;
default:
break;
}
break;
}
elseif ( is_array( $s_os ) && ( $i == ( count( $a_os ) - 2 ) ) )
{
$i_count = count($s_os);
for ($j = 0; $j < $i_count; $j++) { if ( stristr( $browser_string, $s_os[$j] ) ) { $os = 'unix'; //if the os is in the unix array, it's unix, obviously... $os_version = ( $s_os[$j] != 'unix' ) ? $s_os[$j] : '';// assign sub unix version from the unix array break; } } } elseif ( is_array( $s_os ) && ( $i == ( count( $a_os ) - 1 ) ) ) { $i_count = count($s_os); for ($j = 0; $j < $i_count; $j++) { if ( stristr( $browser_string, $s_os[$j] ) ) { $os = 'lin'; $os_version = ( $s_os[$j] != 'linux' ) ? $s_os[$j] : ''; break; } } } } $os_data = array( $os, $os_version ); return $os_data; } function browser_version( $browser_user_agent, $search_string ) { $substring_length = 12; $browser_number = ''; $start_pos = 0; for ( $i = 0; $i < start_pos =" strpos(" search_string ="="" browser_number =" substr(" browser_number =" substr(" browser_number =" '';">
getMac( 'server' ).'
CLIENT MAC: '.$mac->getMac( 'client' );
}
else
{
$mac = new NtMacAddress();
echo 'SERVER MAC: '.$mac->getMac( 'server' ).'
CLIENT MAC: '.$mac->getMac( 'client' );
}
?>

0 comments:

Post a Comment