복붙노트

PHP에서 연결된 클라이언트의 MAC 주소와 IP 주소를 얻으려면 어떻게해야합니까?

PHP

PHP에서 연결된 클라이언트의 MAC 주소와 IP 주소를 얻으려면 어떻게해야합니까?

연결하는 클라이언트의 MAC 주소와 IP 주소를 알아야합니다. 어떻게 PHP로이 작업을 수행 할 수 있습니까?

해결법

  1. ==============================

    1.$ _SERVER [ 'SERVER_ADDR']에서 서버 IP 주소를 가져올 수 있습니다.

    $ _SERVER [ 'SERVER_ADDR']에서 서버 IP 주소를 가져올 수 있습니다.

    MAC 주소의 경우 Linux에서 netstat -ie 또는 Windows에서 ipconfig / all의 출력을 구문 분석 할 수 있습니다.

    $ _SERVER [ 'REMOTE_ADDR']에서 클라이언트 IP를 얻을 수 있습니다.

    클라이언트 MAC 주소는 특별한 경우를 제외하고는 사용할 수 없습니다. 클라이언트가 서버와 동일한 이더넷 세그먼트에있는 경우는 예외입니다.

    따라서 어떤 종류의 LAN 기반 시스템을 구축하고 클라이언트가 동일한 이더넷 세그먼트에 있다면 arp -n (linux) 또는 arp -a (windows)의 출력을 구문 분석하여 MAC 주소를 얻을 수 있습니다.

    편집 : 외부 명령의 출력을 얻는 방법에 대해 의견을 묻습니다. 한 가지 방법은 역 따옴표를 사용하는 것입니다.

    $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];
       }
    }
    

    클라이언트가 정보를 자원하고 다른 방법을 통해 전송할 수 없다면 운이 없게됩니다.

  2. ==============================

    2.클라이언트의 MAC 주소 (HTTP 요청을 내린 컴퓨터의 관점에서)는 클라이언트와 서버 사이의 모든 라우터에 의해 덮어 쓰여집니다.

    클라이언트의 MAC 주소 (HTTP 요청을 내린 컴퓨터의 관점에서)는 클라이언트와 서버 사이의 모든 라우터에 의해 덮어 쓰여집니다.

    클라이언트 IP는 $ _SERVER [ 'REMOTE_ADDR']의 스크립트에 편리하게 제공됩니다. 일부 시나리오에서는 특히 웹 서버가 프록시 (예 : 캐싱 프록시) 뒤에있는 경우 $ _SERVER [ 'REMOTE ADDR'] 프록시의 IP를 반환하며 추가 값이 있습니다. 종종 $ _SERVER [ 'HTTP_X_FORWARDED_FOR' ], 원래 요청 클라이언트의 IP가 들어 있습니다.

    때로는 특히 제어하지 않는 익명 프록시를 처리 할 때 프록시는 실제 IP 주소를 반환하지 않으며 희망하는 것은 프록시의 IP 주소입니다.

  3. ==============================

    3.나는 당신이 PHP에서 MAC 주소를 얻을 수 있다고 생각하지 않지만 $ _SERVER [ 'REMOTE_ADDR'] 변수에서 IP를 얻을 수 있습니다.

    나는 당신이 PHP에서 MAC 주소를 얻을 수 있다고 생각하지 않지만 $ _SERVER [ 'REMOTE_ADDR'] 변수에서 IP를 얻을 수 있습니다.

  4. ==============================

    4.arp를 다른 그룹에 넣기 만하면됩니다.

    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*
    

    그리고 아파치는 사용자 www-data로 돌아가는 데몬이기 때문에 이제이 명령을 실행할 수 있습니다.

    따라서 PHP 스크립트를 사용하는 경우 (예 :

    <?php
    $mac = system('arp -an');
    echo $mac;
    ?>
    

    당신은 linux arp -an 명령의 출력을 얻을 것이다.

  5. ==============================

    5.Windows 서버에서 나는 이것을 사용할 수 있다고 생각한다.

    Windows 서버에서 나는 이것을 사용할 수 있다고 생각한다.

    <?php
    echo exec('getmac');
    ?>
    
  6. ==============================

    6.이 클래스 사용 (https://github.com/BlakeGardner/php-mac-address)

    이 클래스 사용 (https://github.com/BlakeGardner/php-mac-address)

    이것은 Unix, Linux 및 Mac OS X 운영 체제 위에 MAC 주소 조작을위한 PHP 클래스입니다. 주로 무선 보안 감사에 대한 스푸핑을 돕기 위해 작성되었습니다.

  7. ==============================

    7.창에서 사용자가 로컬에서 스크립트를 사용하는 경우 매우 간단합니다.

    창에서 사용자가 로컬에서 스크립트를 사용하는 경우 매우 간단합니다.

    <?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); 
    ?>
    
  8. ==============================

    8.이 코드를 사용하여 MAC 주소 또는 실제 주소를 얻을 수 있습니다.

    이 코드를 사용하여 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 // 이것은 단지 쇼를위한 가짜 주소입니다.

  9. ==============================

    9.다음 해결책을 사용하여 문제를 해결할 수 있습니다.

    다음 해결책을 사용하여 문제를 해결할 수 있습니다.

    $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;
    
  10. ==============================

    10.리눅스에서 iptables를 사용하면 mac 주소와 ip를 사용하여 웹 서버에 대한 각 요청을 파일에 기록 할 수 있습니다. PHP는 IP 주소와 마지막 항목을 조회하고 맥 주소를 얻을.

    리눅스에서 iptables를 사용하면 mac 주소와 ip를 사용하여 웹 서버에 대한 각 요청을 파일에 기록 할 수 있습니다. PHP는 IP 주소와 마지막 항목을 조회하고 맥 주소를 얻을.

    앞에서 언급했듯이 MAC 주소는 추적의 마지막 라우터에서 가져온 주소입니다.

  11. ==============================

    11.openWRT를 사용하면 쉽게이 작업을 수행 할 수 있습니다. 캡 티브 포털을 사용하는 경우 php와 openWRT를 혼합하여 IP와 mac 사이의 관계를 만들 수 있습니다.

    openWRT를 사용하면 쉽게이 작업을 수행 할 수 있습니다. 캡 티브 포털을 사용하는 경우 php와 openWRT를 혼합하여 IP와 mac 사이의 관계를 만들 수 있습니다.

    다음을 사용하여 간단한 PHP 코드를 작성할 수 있습니다.

     $localIP = getHostByName(getHostName()); 
    

    나중에 openWRT를 사용하면 /tmp/dhcp.leases에 갈 수 있습니다. 다음 형식으로 뭔가를 얻을 수 있습니다 :

     e4:a7:a0:29:xx:xx 10.239.3.XXX DESKTOP-XXX 
    

    거기에 Mac, IP 주소 및 호스트 이름이 있습니다.

  12. ==============================

    12.

    // 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;  
    

    이것은 ipconfig / all이 Windows 시스템 명령이기 때문에 Windows에서 나를 위해 작동합니다.

  13. from https://stackoverflow.com/questions/1420381/how-can-i-get-the-mac-and-the-ip-address-of-a-connected-client-in-php by cc-by-sa and MIT license