Arch Linux - Передача MAC-адреса подключенного клиента веб-приложению через веб-сервер [закрыто]

В настоящее время у меня есть Raspberry Pi, работающий под управлением Arch Linux, который действует как точка доступа Wi-Fi. На Pi работает веб-сервер с веб-приложением LAN (PHP).

Я хочу, чтобы мое веб-приложение знало MAC-адрес пользователя, отправляющего запрос.Могу ли я получить MAC-адрес подключающегося пользователя, отправить его в lighttpd и передать его как переменную среды?

Веб-сервер будет знать IP-адрес LAN запрашивающего пользователя. Можно ли это использовать для получения MAC-адреса от системы?

Спасибо

-1
задан 13 December 2016 в 17:35
1 ответ

Это можно легко сделать. Сначала я покажу вам список всех пар IP / MAC на случай, если вам это понадобится. Затем он анализирует список MAC-адресов подключенного в данный момент клиента. Второй способ, просто быстро захватывает IP-адрес подключенного в данный момент клиента.

Первый способ:

Запустите это в командной строке, чтобы проверить, что он дает вам список IP-адресов = MAC-адресов:

arp -en | grep ether | sed -e "s/ \+ether \+/=/g" | grep -ioE "[0-9]{1,3}+(\.[0-9]{1,3}){3}=[0-9a-f]{2}(\:[0-9a-f]{2}){5}"`

Как только вы его узнаете работает, вы можете включить его в свой код. Сначала вы получите IP-адрес клиента.

$client_ip=$_SERVER['REMOTE_ADDR'];

Затем получите список MAC-адресов:

$arp_output=`arp -en | grep ether | sed -e "s/ \+ether \+/=/g" | grep -ioE "[0-9]{1,3}+(\.[0-9]{1,3}){3}=[0-9a-f]{2}(\:[0-9a-f]{2}){5}"`;

Затем проанализируйте их, чтобы найти правильный:

$mac_addresses=explode("\n", $arp_output);

foreach($mac_addresses as $mac_address)
{
  $values=explode('=', trim($mac_address));
  if ($values[0]==$client_ip)
   {
     $client_mac_address=$values[1];
   }
}

Второй способ

Поместите $ client_ip в командная строка, чтобы получить MAC-адрес напрямую:

$client_ip=escapeshellarg($_SERVER['REMOTE_ADDR']);

$client_mac_address=`arp -en | grep {$client_ip} | grep -ioE "[0-9a-f]{2}(\:[0-9a-f]{2}){5}" | head -c-1`
1
ответ дан 5 December 2019 в 19:45

Теги

Похожие вопросы