mac физический адрес устройства с использованием php [duplicate]

Он возвращает список, подобный массиву.

Вы делаете этот массив как пример

var el = getElementsByClassName("elem");
el = Array.prototype.slice.call(el); //this line
el[0].appendChild(otherElem);  
117
задан hakre 18 May 2012 в 23:07
поделиться

12 ответов

Используйте этот класс (https://github.com/BlakeGardner/php-mac-address)

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

1
ответ дан Ali 22 August 2018 в 19:19
поделиться

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

-2
ответ дан Bernat Pedrol Vozmediano 22 August 2018 в 19:19
поделиться

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

$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;
0
ответ дан Grant Miller 22 August 2018 в 19:19
поделиться
// 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.

-3
ответ дан Kevin Guan 22 August 2018 в 19:19
поделиться
  • 1
    Если этот ответ вам что-то учит, мы надеемся, что не будем копировать / вставлять код, который вы не понимаете. Он не делает то, что спросил ОП. – tripleee 26 November 2015 в 14:15

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

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

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

21
ответ дан Michał T 22 August 2018 в 19:19
поделиться

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

<?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); 
?>
1
ответ дан Mirtov 22 August 2018 в 19:19
поделиться

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

0
ответ дан Pankaj Kumar 22 August 2018 в 19:19
поделиться

Сервер 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 (окна).

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

$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?

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

156
ответ дан Paul Dixon 22 August 2018 в 19:19
поделиться
  • 1
    Как получить выход arp -a с помощью php ?? – Neveen 14 September 2009 в 13:04
  • 2
    @paulDixon привет, это старый пост, и мне интересно, есть ли новый способ получить адрес Mac? – jcho360 21 June 2012 в 13:58
  • 3
    @ jcho360 До сих пор невозможно получить MAC-адрес клиента. Я не ожидаю, что это произойдет, потому что MAC-адрес не имеет значения связи и поэтому не будет сохранен в заголовке запроса het. – Bearwulf 3 July 2012 в 13:18
  • 4
    @Bearwulf благодарю вас за ответ, вот что я подумал, есть ли способ идентифицировать уникальные компьютеры, подключенные к сайту? – jcho360 3 July 2012 в 15:17
  • 5
    @ jcho360 Лично я хотел бы использовать комбинацию IP-адреса + Запросить информацию и сделать ее хэш, например md5 ($ _ SERVER ['REMOTE_ADDR']. $ _SERVER ['HTTP_USER_AGENT']). Он определенно не пуленепробиваемый, но его начало. Другой более простой и безопасный способ - установить cookie с уникальным хешем. При использовании этого файла cookie каждый раз, когда вы уверены, что пользователь подключается к вашему веб-сайту. – Bearwulf 5 July 2012 в 12:50

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

8
ответ дан RaYell 22 August 2018 в 19:19
поделиться
  • 1
    Вы можете получить адрес mac, я думаю :) – Jitesh Sojitra 17 May 2016 в 07:17
  • 2
    MAC-адрес отображается только в локальных сетях, вы можете получить доступ к MAC-адресу любого устройства из своей локальной сети, например, ваш MAC-адрес будет сохранен и отображен на вашем локальном маршрутизаторе wifi, и за его пределами все устройство в вашей сети будет использовать и будет сообщаться с тем же IP-адресом, который маршрутизатор переведет на Mac-адрес и отправит его внутренне. – Dheeraj Thedijje 16 October 2016 в 09:05

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

<?php
echo exec('getmac');
?>
6
ответ дан Simos 22 August 2018 в 19:19
поделиться
  • 1
    & lt;? php echo exec ('getmac'); ? & GT; он работает только в локальной сети, но на этом показан весь MAC-адрес & lt; php system ('getmac'); ? & GT; – Giorgi Gogitidze 11 January 2017 в 13:50
  • 2
    И windows10 тоже. Кроме того, вы не должны использовать exec только `echo getmac – SaidbakR 18 April 2017 в 00:12

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

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

-2
ответ дан TexWiller 22 August 2018 в 19:19
поделиться

Все, что вам нужно сделать, это поместить arp в другую группу.

По умолчанию:

-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*

С командой:

sudo chown root:www-data /usr/sbin/arp

вы будете get:

-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*

И поскольку apache - это демон, запущенный под пользовательскими www-данными, теперь он может выполнить эту команду.

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

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

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

6
ответ дан user527987 22 August 2018 в 19:19
поделиться
  • 1
    Это даст вам только MAC-адреса устройств в вашей локальной сети. – duskwuff 17 August 2011 в 06:11
  • 2
    Изменение группы двоичных файлов arp является избыточным, www-data все еще имеет разрешения на выполнение из other umode. – deed02392 6 March 2014 в 15:36
Другие вопросы по тегам:

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