PHP에서 연결된 클라이언트의 MAC 및 IP 주소를 얻으려면 어떻게 해야 합니까?
접속 클라이언트의 MAC와 IP 주소를 알아야 하는데, PHP에서는 어떻게 해야 하나요?
서버 IP
는, 「IP」로부터 할 수 .$_SERVER['SERVER_ADDR']
서버 MAC 주소
주소의 는, 의 할 수 있습니다.netstat -ie Linux 。ipconfig /allWindows 의 windows 、 조 windows windows windows 。
클라이언트 IP 주소
는, 「IP」, 「URL」로부터 할 수 .$_SERVER['REMOTE_ADDR']
클라이언트 MAC 주소
클라이언트가 서버와 같은 이더넷세그먼트상에 있는 경우라는 특수한 경우를 제외하고, 클라이언트의 MAC 주소는 사용할 수 없습니다.
따라서 LAN 기반 시스템을 구축하고 클라이언트가 같은 이더넷세그먼트상에 있는 경우, 다음의 출력을 해석하는 것으로 MAC 주소를 취득할 수 있습니다.arp -n (linux) (linux)arp -a( 도 ( )
편집: 외부 명령어의 출력을 얻는 방법을 코멘트에서 묻습니다.한 가지 방법은 예를 들어 백틱을 사용하는 것입니다.
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
하지만 클라이언트가 LAN에 접속되어 있지 않다면?
음, 고객이 자발적으로 정보를 전달하지 않으면 당신은 운이 없을 거예요.
클라이언트와 서버 사이의 모든 라우터는 클라이언트의 MAC 주소를 덮어씁니다(HTTP 요구를 발행한 컴퓨터의 의미).
는, 「IP」의 에 간단하게 됩니다.$_SERVER['REMOTE_ADDR']의 배후에 .$_SERVER['REMOTE ADDR']프록시의 IP를 반환하고 대부분의 경우 추가 값이 있습니다.$_SERVER['HTTP_X_FORWARDED_FOR']IP를 사용하다
특히 사용자가 제어할 수 없는 익명화 프록시를 처리할 때 프록시가 실제 IP 주소를 반환하지 않을 수 있으며, 사용자가 원하는 것은 프록시의 IP 주소뿐입니다.
PHP에서는수 만, 는 PHP에서 할 수 .$_SERVER['REMOTE_ADDR']★★★★★★ 。
Windows 서버의 경우는, 다음과 같이 사용할 수 있습니다.
<?php
echo exec('getmac');
?>
필요한 것은 arp를 다른 그룹에 넣는 것뿐입니다.
디폴트:
-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*
명령어 사용 시:
sudo chown root:www-data /usr/sbin/arp
다음을 얻을 수 있습니다.
-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*
Apache는 사용자 www-data에서 실행되는 데몬이기 때문에 이제 이 명령을 실행할 수 있습니다.
이제 PHP 스크립트를 사용하는 경우, 예를 들어 다음과 같습니다.
<?php
$mac = system('arp -an');
echo $mac;
?>
을 얻을 수 .arp -an명령어를 입력합니다.
이 클래스 사용(https://github.com/BlakeGardner/php-mac-address)
이것은 Unix, Linux 및 Mac OS X 운영 체제 상에서 MAC 주소 조작을 위한 PHP 클래스입니다.주로 무선 보안 감사를 위한 스푸핑을 지원하기 위해 작성되었습니다.
Windows 에서는, 유저가 스크립트를 로컬로 사용하고 있는 경우는, 매우 간단합니다.
<?php
// get all the informations about the client's network
$ipconfig = shell_exec ("ipconfig/all"));
// display those informations
echo $ipconfig;
/*
look for the value of "physical adress" and use substr() function to
retrieve the adress from this long string.
here in my case i'm using a french cmd.
you can change the numbers according adress mac position in the string.
*/
echo substr(shell_exec ("ipconfig/all"),1821,18);
?>
이 코드를 사용하여 MAC 주소 또는 물리 주소를 얻을 수 있습니다.
$d = explode('Physical Address. . . . . . . . .',shell_exec ("ipconfig/all"));
$d1 = explode(':',$d[1]);
$d2 = explode(' ',$d1[1]);
return $d2[1];
shell_exec("ipconfig/all")이 모든 네트워크에 대한 완전한 세부사항을 반환하기 때문에 여러 번 폭발을 사용했습니다.한 명씩 나눠야 돼요.이 코드를 실행하면
MAC 주소 00-#-#-#-CV-12 // 이것은 표시용 가짜 주소입니다.
다음 솔루션을 사용하여 문제를 해결할 수 있습니다.
$mac='UNKNOWN';
foreach(explode("\n",str_replace(' ','',trim(`getmac`,"\n"))) as $i)
if(strpos($i,'Tcpip')>-1){$mac=substr($i,0,17);break;}
echo $mac;
Mac 주소를 취득하는 것은, 인터넷을 개입시켜 클라이언트의 머신을 검증하는 최선의 방법은 아닐지도 모릅니다.대신 관리자의 로그인에 의해 클라이언트의 브라우저에 저장되는 토큰을 사용하는 것이 좋습니다.
따라서 클라이언트가 이 토큰을 가질 수 있는 것은 관리자가 브라우저를 통해 토큰을 부여한 경우뿐입니다.토큰이 없거나 유효하지 않으면 클라이언트의 시스템이 유효하지 않습니다.
대답하기엔 너무 늦었지만, 아무도 여기에 언급하지 않았기 때문에 나의 접근방식은 다음과 같다.
클라이언트 측 솔루션이 아닌 이유는 무엇입니까?
전에 할 수 있습니다)mac의 Javascript 구현(Javascript)
각 요청에는 해당 쿠키 이름이 포함되어야 합니다.그렇지 않으면 거부됩니다.
, 검증, 서버측 검증, 서버측 검증, 서버측 합니다.
얻을 수 가 있습니다).mac manifacturer는 manifacturer를 사용할 수 있습니다(API를 사용할 수 있습니다.
그런 다음 이를 user_agent 값과 비교하여 조작이 있었는지 확인합니다.
HP(R) MAC (R) + Safari = (R)
이 방법으로 Ubuntu에서 MAC 주소를 php에서 얻을 수 있습니다.
$ipconfig = shell_exec ("ifconfig -a | grep -Po 'HWaddr \K.*$'");
// display mac address
echo $ipconfig;
PHP를 사용한 MAC 주소 가져오기: (Ubuntu 18.04에서 테스트 완료) - 2020 업데이트
코드는 다음과 같습니다.
<?php
$mac = shell_exec("ip link | awk '{print $2}'");
preg_match_all('/([a-z0-9]+):\s+((?:[0-9a-f]{2}:){5}[0-9a-f]{2})/i', $mac, $matches);
$output = array_combine($matches[1], $matches[2]);
$mac_address_values = json_encode($output, JSON_PRETTY_PRINT);
echo $mac_address_values
?>
출력:
{
"lo": "00:00:00:00:00:00",
"enp0s25": "00:21:cc:d4:2a:23",
"wlp3s0": "84:3a:4b:03:3c:3a",
"wwp0s20u4": "7a:e3:2a:de:66:09"
}
이거면 되겠네요.
<?php
// PHP code to get the MAC address of Server
$MAC = exec('getmac');
// Storing 'getmac' value in $MAC
$MAC = strtok($MAC, ' ');
// Updating $MAC value using strtok function,
// strtok is used to split the string into tokens
// split character of strtok is defined as a space
// because getmac returns transport name after
// MAC address
echo "MAC address of Server is: $MAC";
?>
출처 : https://www.geeksforgeeks.org/how-to-get-the-mac-and-ip-address-of-a-connected-client-in-php/
// Turn on output buffering
ob_start();
//Get the ipconfig details using system commond
system('ipconfig /all');
// Capture the output into a variable
$mycomsys=ob_get_contents();
// Clean (erase) the output buffer
ob_clean();
$find_mac = "Physical";
//find the "Physical" & Find the position of Physical text
$pmac = strpos($mycomsys, $find_mac);
// Get Physical Address
$macaddress=substr($mycomsys,($pmac+36),17);
//Display Mac Address
echo $macaddress;
에서는, 서음 、 Windows 음음 windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows 。ipconfig /all§ Windows 시스템
iptables를 사용하는 Linux에서는 IP 주소를 사용하여 php lookup last item에서 mac address와 ip.를 사용하여 웹 서버에 대한 각 요청을 파일에 기록할 수 있습니다.
전술한 바와 같이 MAC 주소는 트레이스상의 마지막 라우터의 주소입니다.
openWRT를 사용하면 쉽게 할 수 있습니다.캡티브 포털을 사용하는 경우 php를 혼합하여 열 수 있습니다.IP와 MAC의 관계를 확립합니다.
다음과 같이 간단한 PHP 코드를 작성할 수 있습니다.
$localIP = getHostByName(getHostName());
나중에 open 사용접속할 수 있는 WRT/tmp/dhcp.leases, 다음과 같은 폼이 표시됩니다.
e4:a7:a0:29:xx:xx 10.239.3.XXX DESKTOP-XXX
MAC, IP 주소, 호스트명이 표시됩니다.
언급URL : https://stackoverflow.com/questions/1420381/how-can-i-get-the-mac-and-the-ip-address-of-a-connected-client-in-php
'source' 카테고리의 다른 글
| 수집되지 않은 유형 오류: null의 속성 '$store'를 읽을 수 없습니다. (0) | 2023.01.16 |
|---|---|
| Java 2D 어레이를 인쇄하는 가장 좋은 방법은 무엇입니까? (0) | 2023.01.16 |
| 가장 일반적인 Python 문서 문자열 형식은 무엇입니까? (0) | 2023.01.16 |
| SELECT 목록이 GROUP BY 절에 없으며 집계되지 않은 열 ......이(가) sql_mode=only_full_group_by와 호환되지 않습니다. (0) | 2023.01.15 |
| Vuetify에서 의 동적 자리 표시자 텍스트를 표시하는 방법은 무엇입니까? (0) | 2023.01.15 |