MAC アドレスはネットワーク カードのアドレスです。通常、ブラウザーのセキュリティ制限により、ユーザーの MAC アドレスを取得することはほとんど不可能です。ここでは、誰でも遊べるコードを 2 つ紹介します。
例1
PHPコード:
コードは次のとおりです |
コードをコピー |
@exec("arp -a",$array); // arp -a コマンドを実行し、結果を配列 $array に入れます
echo "";
Print_r($array); //取得した配列を出力します
foreach($array as $value)
{
if( //一致した結果は配列 $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];
休憩;
}
}
echo $mac // クライアント MAC を出力します
?> |
例2
代码如下 |
复制幣 |
クラス MacAddr
{
パブリック $returnArray = array();
パブリック $macAddr;
関数 __contruct($os_type=null){
if(is_null($os_type)) $os_type = PHP_OS;
スイッチ (strto lower($os_type)){
ケース「Linux」:
$this->forLinux();
壊す;
ケース「ソラリス」:
壊す;
ケース「unix」:
壊す;
ケース「aix」:
壊す;
デフォルト:
$this->forWindows();
壊す;
}
$temp_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];
壊す;
}
}
unset($temp_array);
$this->macAddr を返す;
}
関数 forWindows(){
@exec("ipconfig /all", $this->returnArray);
if($this->returnArray)
$this->returnArray を返す;
それ以外の場合{
$ipconfig = $_SERVER["WINDIR"]."system32ipconfig.exe";
if (is_file($ipconfig))
@exec($ipconfig." /all", $this->returnArray);
その他
@exec($_SERVER["WINDIR"]."systemipconfig.exe /all", $this->returnArray);
$this->returnArray を返す;
}
}
Linux 用関数(){
@exec("ifconfig -a", $this->returnArray);
$this->returnArray を返す;
} }
$mac = 新しい MacAddr(PHP_OS);
エコー $mac->macAddr;
エコー " ";
// クライアントを取得します
// Linux
$command = "arp -a {$_SERVER['REMOTE_ADDR']}";
エコー $ コマンド
エコー " ";
$結果=`{$コマンド}`;
// ウィンドウ
$command = "nbtstat -a {$_SERVER['REMOTE_ADDR']}";
エコー $ コマンド
エコー " ";
$結果=`{$コマンド}`;
print_r($result);
?>
サーバー側ロジックの取得に大きな問題はありませんが、権限の問題が発生する可能性があります。
クライアントの取得が遅くなる場合があり、arp/nbstat コマンドの実行も遅くなります。
コードは次のとおりです
| コードをコピー
<スクリプト言語="JScript" イベント="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">
document.forms[0].lbMacAddr.value=unescape(MACAddr);
スクリプト>
<スクリプト言語="JScript" イベント="OnObjectReady(objObject,objAsyncContext)" for="foo">
if(objObject.IPEnabled != null && objObject.IPEnabled != "未定義" && objObject.IPEnabled == true && objObject.MACAddress != null && objObject.MACAddress != "未定義") MACAddr = objObject.MACAddress;
スクリプト>
<スクリプト言語="JScript">
var サービス = locator.ConnectServer();
varMACAddr ;
var IPAddr ;
var ドメインアドレス
変数 sDNS 名
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
スクリプト>
|
|
IE ブラウザにのみ適用され、アラーム プロンプトが表示されます
http://www.bkjia.com/PHPjc/632908.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/632908.html
技術記事
MAC アドレスはネットワーク カードのアドレスです。通常、ブラウザーのセキュリティ制限により、ユーザーの MAC アドレスを取得することはほぼ不可能です。ここに 2 つのコードを示します。
|