复代码码 代码如下:
function ce_getmac()
{
if(PHP_OS == 'WINNT')
{
$return_array = 배열();
$temp_array = 배열();
$mac_addr = "";
@exec("arp -a",$return_array);
foreach($return_array as $value)
{
if(strpos($value,$_SERVER["HTTP_CLIENT_IP"]) !== false &&
preg_match("/(:?[0 -9a-f]{2}[:-]){5}[0-9a-f]{2}/i",$value,$temp_array))
{
$mac_addr = $temp_array[ 0];
휴식;
}
}
$mac_addr을 반환 ? strtoupper($mac_addr) : '';
}
else if(PHP_OS == 'Linux')
{
return true;
}
}
함수가 수정되었습니다. LINUX에서는 EXEC 함수를 사용할 수 없어 MAC 주소를 얻을 수 없다는 뜻입니다. 통신 후에는 프로젝트를 LINUX 서버에 배포해야 합니다. 저자는 오랜 고민 끝에 마침내 EXEC를 실행하지 않고도 인트라넷 사용자의 MAC 주소를 얻을 수 있다는 것을 알게 되었습니다.
인트라넷 서버에는 192.168.1.151에 서버가 있는데, 이 API에 접속하면 사용자의 MAC 정보를 JOSN 모드로 출력할 수 있기 때문입니다. MAC을 얻으면 조금 더 활용할 수 있습니다.
CURL을 사용하여 원본 IP(IP는 LINUX 서버의 IP가 아니라 클라이언트가 액세스하는 IP 주소)를 위조하고 151 서버에 CURL을 적용하면 서버는 이에 따라 응답을 얻을 수 있습니다. 사용자 IP 주소와 ARP -A 매개변수의 일반적인 방법에 대해 클라이언트의 MAC 주소는 151이고 151은 WINDOWS 2008 서버입니다. 그러나 REMOTE_ADDR은 사용할 수 없으며 HTTP_CLIENT_IP를 사용해야 합니다. 그 이유는 CURL을 사용하여 HTTP_CLIENT_IP를 위조할 수 있기 때문에 LINUX를 사용하여 사용자 IP를 얻은 다음 처리를 위해 151로 보낼 수 있기 때문입니다.
질문: 사용자의 IP를 기준으로 MAC 주소를 얻으세요. 사용자가 IP를 변경하면 어떻게 해야 하나요? CMD에서 ARP -A 분석을 사용하면 사용자가 IP를 변경하더라도 해당 사용자에 해당하는 컴퓨터의 MAC 주소는 기본적으로 변경되지 않습니다.
다음은 IP 획득에 대한 한 네티즌의 글에서 발췌한 내용입니다.
IP를 판별하는 dz 코드가 너무 번거롭습니다. REMOTE_ADDR, HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR 세 가지는 기본적으로 설명서에 자세히 나와 있지 않습니다. 아무것도 아님.
온라인에서 뭔가를 발견했습니다. 게다가 JS를 사용하여 IP를 얻은 다음 서버에 POST를 사용하여 서버를 속이는 아이디어도 있습니다. 온라인에 접속할 용기가 있다면 먼저 JS를 꺼보세요! ! 아하하, 앞으로 기회가 된다면 ajax로 해볼 텐데, 만약에 이 세 가지 변수를 사용하는 것에 대해서는 걱정 안 하셔도 될 것 같아요.
$_SERVER['...']; // php의 경우
1. 프록시 서버를 사용하지 않는 경우:
REMOTE_ADDR = 사용자 IP
HTTP_VIA = 값이 없거나 표시되지 않음
HTML_ 프록시 서버가 여러 개 있는 경우 이 값은 203.98.182.163, 203.98.182.163, 203.129.72.215와 유사합니다.
이 유형의 프록시 서버는 귀하가 방문하는 사람에게 귀하의 정보를 계속 전달하며 귀하의 실제 신원을 숨기는 목적을 달성할 수 없습니다.
3. 일반 익명 프록시 서버를 사용하는 상황: 익명 프록시
REMOTE_ADDR = 마지막 프록시 서버 IP
HTTP_VIA = 프록시 서버 IP
HTTP_X_FORWARDED_FOR = 프록시 서버 IP, 여러 프록시 서버를 통과하는 경우 값은 203.98.182.163, 203.98.182.163, 203.129.72.215와 유사합니다.
실제 IP를 숨기되 방문자에게 액세스하기 위해 프록시 서버를 사용하고 있다는 사실을 공개하세요.
4. 거짓 프록시 서버 사용: 프록시 왜곡
REMOTE_ADDR = 프록시 서버 IP
HTTP_VIA = 프록시 서버 IP
HTTP_X_FORWARDED_FOR = 임의 IP, 여러 프록시 서버를 통과할 때 이 값은 다음과 같습니다. 다음: 203.98.182.163, 203.98.182.163, 203.129.72.215.
방문자에게 프록시 서버를 사용하고 있다고 말하되 실제 IP 대신 가짜 임의 IP를 만들어 속이세요.
5. 익명성이 높은 프록시 서버 사용: 익명성이 높은 프록시(엘리트 프록시)
REMOTE_ADDR = 프록시 서버 IP
HTTP_VIA = 값이 없거나 표시되지 않음
HTTP_X_FORWARDED_FOR = 값이 없거나 표시되지 않음, after 여러 프록시 서버가 있는 경우 이 값은 203.98.182.163, 203.98.182.163, 203.129.72.215와 유사합니다.
프록시 서버를 사용하여 객체에 직접 액세스하는 것처럼 모든 정보를 프록시 서버의 정보로 완전히 대체합니다.
REMOTE_ADDR은 클라이언트가 서버와 "핸드셰이크"할 때의 IP입니다. "익명 프록시"가 사용되는 경우 REMOTE_ADDR은 프록시 서버의 IP를 표시합니다.
HTTP_CLIENT_IP는 프록시 서버가 보낸 HTTP 헤더입니다. "수퍼 익명 프록시"인 경우 없음 값이 반환됩니다. 마찬가지로 REMOTE_ADDR은 이 프록시 서버의 IP로 대체됩니다.
$_SERVER['REMOTE_ADDR']; //액세스 끝(사용자일 수 있음, 프록시일 수 있음)
$_SERVER['HTTP_CLIENT_IP'] //프록시 끝(존재할 수 있음, 위조 가능) 🎜>$_SERVER['HTTP_X_FORWARDED_FOR']; //사용자가 프록시로 사용하는 IP(존재하거나 위조될 수 있음)
위 내용은 Windows Live Messenger 2011의 내용을 포함하여 Windows Live Messenger 2011 PHP에서 인트라넷 사용자(WINDOWS/linux)의 MAC 주소를 얻기 위한 구현 코드를 소개하고 있습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.