Php получить mac адрес клиента

Как я могу получить MAC и IP-адрес подключенного клиента в PHP?

Мне нужно знать MAC и IP-адрес подключаемых клиентов, как я могу это сделать в PHP?

ОТВЕТЫ

Ответ 1

IP-адрес сервера

Вы можете получить IP-адрес сервера с $_SERVER[‘SERVER_ADDR’] .

MAC-адрес сервера

Для MAC-адреса вы можете анализировать вывод netstat -ie в Linux или ipconfig /all в Windows.

IP-адрес клиента

Вы можете получить IP-адрес клиента от $_SERVER[‘REMOTE_ADDR’]

MAC-адрес клиента

MAC-адрес клиента не будет доступен вам, за исключением одного особого обстоятельства: если клиент находится в том же сегменте Ethernet, что и сервер.

Итак, если вы строите какую-то систему на базе локальной сети, а ваши клиенты находятся в одном сегменте Ethernet, вы можете получить MAC-адрес, проанализировав вывод arp -n (linux) или arp -a (windows),

Изменить: вы спрашиваете в комментариях, как получить вывод внешней команды — одним из способов является использование обратных ссылок, например.

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

Но что, если клиент не находится в локальной сети?

Ну, вам не повезло, если вы не можете заставить клиента добровольно передать эту информацию и передать другим способом.

Читайте также:  Php как создать таблицу в бд mysql

Ответ 2

MAC-адрес клиента (в смысле компьютера, который выдал HTTP-запрос) перезаписывается каждым маршрутизатором между клиентом и сервером.

Клиентский IP-адрес обычно предоставляется script в $_SERVER[‘REMOTE_ADDR’] . В некоторых сценариях, особенно если ваш веб-сервер находится за прокси-сервером (т.е. Прокси-сервер кэширования), $_SERVER[‘REMOTE ADDR’] вернет IP-адрес прокси-сервера, и будет добавлено дополнительное значение, часто $_SERVER[‘HTTP_X_FORWARDED_FOR’] , которое содержит IP-адрес оригинала запросить клиента.

Иногда, особенно когда вы имеете дело с анонимным прокси, который вы не контролируете, прокси не вернет реальный IP-адрес, и все, на что вы можете надеяться, это IP-адрес прокси.

Ответ 3

Я не думаю, что вы можете получить MAC-адрес в PHP, но вы можете получить IP-адрес от переменной $_SERVER[‘REMOTE_ADDR’] .

Ответ 4

Для сервера Windows я думаю, что вы можете использовать это:

Ответ 5

Все, что вам нужно сделать, это поместить 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-данными, теперь он может выполнить эту команду.

Итак, если вы теперь используете PHP script, например:

вы получите вывод команды linux arp -an .

Ответ 6

Это класс PHP для обработки MAC-адресов поверх операционных систем Unix, Linux и Mac OS X. это было написано в первую очередь, чтобы помочь с подделкой для проверок беспроводной безопасности.

Ответ 7

В окнах, если пользователь использует ваш script локально, это будет очень просто:

Ответ 8

Мы можем получить MAC-адрес в Ubuntu этим способом в php

$ipconfig = shell_exec ("ifconfig -a | grep -Po 'HWaddr \K.*$'"); // display mac address echo $ipconfig; 

Ответ 9

Вы можете получить 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//это поддельный адрес только для показа.

Ответ 10

Для решения вашей проблемы вы можете использовать следующее решение:

$mac='UNKNOWN'; foreach(explode("\n",str_replace(' ','',trim('getmac',"\n"))) as $i) if(strpos($i,'Tcpip')>-1) echo $mac; 

Ответ 11

 //get user real ip function kh_getUserIP()< $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP))< $ip = $client; >elseif(filter_var($forward, FILTER_VALIDATE_IP))< $ip = $forward; >else < $ip = $remote; >return $ip; > 

Ответ 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; 

Это работает для меня в Windows, так как ipconfig /all является системной командой Windows.

Ответ 13

под linux с помощью iptables вы можете записывать в файл каждый запрос на веб-сервер с адресом mac и ip. от php искать последний элемент с ip-адресом и получить адрес mac.

Как указано, помните, что адрес mac от последнего маршрутизатора на трассе.

Ответ 14

Вы можете сделать это легко, используя openWRT. Если вы используете портативный портал, вы можете смешивать php и openWRT и устанавливать связь между IP и маком.

Вы можете написать простой PHP-код, используя:

 $localIP = getHostByName(getHostName()); 

Позже, используя openWRT, вы можете перейти к /tmp/dhcp.leases , вы получите что-то с формой:

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

Там, у вас есть mac, IP-адрес и имя хоста.

Источник

How can I get the MAC and the IP address of a connected client in PHP?

You can use the $_SERVER[‘REMOTE_ADDR’] variable in PHP to get the IP address of a connected client. However, you cannot get the MAC address of a client using PHP alone, as the MAC address is not transmitted in the HTTP request headers.

To get the MAC address of a client, you will need to use a language or library that provides access to the client’s network information, such as Java or Python’s socket library. Alternatively, you can use a system command like arp on the server to get the MAC address of a connected client, but this will only work if the client is on the same local network as the server.

Here is an example of how you might use the arp command to get the MAC address of a client in PHP:

 // Get the client's IP address $client_ip = $_SERVER['REMOTE_ADDR']; // Execute the arp command and store the output in $output exec("arp -a $client_ip", $output); // The MAC address should be the second element in the array $mac_address = $output[1]; // Print the MAC address echo "The MAC address for $client_ip is $mac_address";

Keep in mind that this approach may not work on all systems and may require additional configuration, such as setting appropriate permissions for the PHP script to execute system commands.

Источник

Как я могу получить MAC и IP-адрес подключенного клиента в PHP?

Мне нужно знать MAC и IP-адрес подключаемых клиентов, как я могу это сделать в PHP?

IP-адрес сервера

Вы можете получить IP-адрес сервера от $_SERVER[‘SERVER_ADDR’] .

MAC-адрес сервера

Для MAC-адреса вы можете анализировать вывод netstat -ie в Linux или ipconfig /all в Windows.

IP-адрес клиента

Вы можете получить IP-адрес клиента от $_SERVER[‘REMOTE_ADDR’]

MAC-адрес клиента

MAC-адрес клиента не будет доступен вам, кроме одного особого обстоятельства: если клиент находится в том же сегменте Ethernet, что и сервер.

Итак, если вы строите какую-то систему на базе локальной сети, а ваши клиенты находятся в одном сегменте Ethernet, тогда вы можете получить MAC-адрес, проанализировав вывод arp -n (linux) или arp -a (windows).

Редактировать : вы спрашиваете в комментариях, как получить выход внешней команды – одним из способов является использование обратных ссылок, например

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

Но что, если клиент не находится в локальной сети?

Ну, вам не повезло, если вы не можете заставить клиента добровольно передавать эту информацию и передавать с помощью других средств.

MAC-адрес клиента (в смысле компьютера, который выдал HTTP-запрос) перезаписывается каждым маршрутизатором между клиентом и сервером.

Клиентский IP-адрес удобно предоставляется скрипту в $_SERVER[‘REMOTE_ADDR’] . В некоторых сценариях, особенно если ваш веб-сервер находится за прокси-сервером (т. $_SERVER[‘HTTP_X_FORWARDED_FOR’] прокси), $_SERVER[‘REMOTE ADDR’] вернет IP-адрес прокси-сервера , и будет добавлено дополнительное значение, часто $_SERVER[‘HTTP_X_FORWARDED_FOR’] , который содержит IP исходного клиента запроса.

Иногда, особенно когда вы имеете дело с анонимным прокси, который вы не контролируете, прокси не вернет реальный IP-адрес, и все, на что вы можете надеяться, это IP-адрес прокси-сервера.

Я не думаю, что вы можете получить MAC-адрес в PHP, но вы можете получить IP из переменной $_SERVER[‘REMOTE_ADDR’] .

Все, что вам нужно сделать, – это включить 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-данными, теперь он может выполнить эту команду.

Поэтому, если теперь вы используете PHP-скрипт, например:

вы получите результат команды linux arp -an .

Для сервера Windows я думаю, что вы можете использовать это:

В окнах, если пользователь использует ваш скрипт локально, это будет очень просто:

Это класс PHP для обработки MAC-адресов поверх операционных систем Unix, Linux и Mac OS X. в основном это было написано, чтобы помочь с подделкой для проверок беспроводной безопасности.

под linux с помощью iptables вы можете записывать в файл каждый запрос на веб-сервер с адресом mac и ip. от php искать последний элемент с IP-адресом и получить MAC-адрес.

Как указано, помните, что адрес mac находится от последнего маршрутизатора на трассе.

Вы можете сделать это легко, используя openWRT. Если вы используете портативный портал, вы можете смешивать php и openWRT и устанавливать связь между IP и маком.

Вы можете написать простой PHP-код, используя:

 $localIP = getHostByName(getHostName()); 

Позже, используя openWRT, вы можете перейти в /tmp/dhcp.leases , вы получите что-то с формой:

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

Там у вас есть mac, IP-адрес и имя хоста.

 //get user real ip function kh_getUserIP()< $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP))< $ip = $client; >elseif(filter_var($forward, FILTER_VALIDATE_IP))< $ip = $forward; >else < $ip = $remote; >return $ip; > 
// 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, так как ipconfig /all – это системная команда Windows.

Источник

Как я могу получить MAC и IP-адрес подключенного клиента в PHP?

MAC-адрес клиента не будет доступен вам, за исключением одного особого обстоятельства: если клиент находится в том же сегменте Ethernet, что и сервер. Итак, если вы строите какую-то систему на базе локальной сети, а ваши клиенты находятся в одном сегменте Ethernet, вы можете получить MAC-адрес, проанализировав вывод arp -n (linux) или arp -a (windows), Изменить: вы спрашиваете в комментариях, как получить вывод внешней команды — одним из способов является использование обратных ссылок, например.

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

Но что, если клиент не находится в локальной сети?

Ну, вам не повезло, если вы не можете заставить клиента добровольно передать эту информацию и передать другим способом.

@jcho360 jcho360 Все еще невозможно получить MAC-адрес клиента. Я не ожидаю увидеть, что это произойдет в любом случае, потому что MAC-адрес не имеет значения связи и поэтому не будет сохранен в заголовке запроса het.

@Bearwulf большое спасибо за ответ, вот что я подумал, есть ли способ идентифицировать уникальные компьютеры, подключенные к сайту?

@jcho360 jcho360 Лично я бы использовал комбинацию IP-адрес + Запрос информации и сделал бы ее хеш, например, md5 ($ _ SERVER [‘REMOTE_ADDR’]. $ _SERVER [‘HTTP_USER_AGENT’]) ;. Это определенно не пуленепробиваемый, но это начало. Еще один более простой и безопасный способ — установить cookie с уникальным хешем. При использовании этого файла cookie каждый раз вы уверены, какой пользователь подключается к вашему веб-сайту.

Источник

Оцените статью