Preciso saber o MAC e o endereço IP dos clientes conectados, como posso fazer isso em PHP?
php
mac-address
Neveen
fonte
fonte
Respostas:
IP do servidor
Você pode obter o endereço IP do servidor
$_SERVER['SERVER_ADDR']
.Endereço MAC do servidor
Para o endereço MAC, você pode analisar a saída
netstat -ie
no Linux ouipconfig /all
no Windows.Endereço IP do cliente
Você pode obter o IP do cliente em
$_SERVER['REMOTE_ADDR']
Endereço MAC do cliente
O endereço MAC do cliente não estará disponível para você, exceto em uma circunstância especial: se o cliente estiver no mesmo segmento ethernet que o servidor.
Portanto, se você estiver construindo algum tipo de sistema baseado em LAN e seus clientes estiverem no mesmo segmento ethernet, poderá obter o endereço MAC analisando a saída de
arp -n
(linux) ouarp -a
(windows).Edit : você pergunta nos comentários como obter a saída de um comando externo - uma maneira é usar backticks, por exemplo
Mas e se o cliente não estiver em uma LAN?
Bem, você está sem sorte, a menos que possa fazer com que o cliente ofereça essas informações e transmita por outros meios.
fonte
O endereço MAC de um cliente (no sentido do computador que emitiu a solicitação HTTP) é substituído por todos os roteadores entre o cliente e o servidor.
O IP do cliente é convenientemente fornecido ao script em
$_SERVER['REMOTE_ADDR']
. Em alguns cenários, principalmente se o servidor da web estiver protegido por um proxy (ou seja, um proxy de cache)$_SERVER['REMOTE ADDR']
retornará o IP do proxy e haverá um valor extra, geralmente$_SERVER['HTTP_X_FORWARDED_FOR']
, que contém o IP do cliente de solicitação original.Às vezes, especialmente quando você está lidando com um proxy anônimo que não controla, o proxy não retornará o endereço IP real e tudo o que você pode esperar é o endereço IP do proxy.
fonte
Eu não acho que você pode obter o endereço MAC no PHP, mas você pode obter o IP da
$_SERVER['REMOTE_ADDR']
variável.fonte
Para o servidor Windows, acho que você pode usar isso:
fonte
exec
apenas `eco 'getmac
Tudo que você precisa fazer é colocar o arp em um grupo diferente.
Padrão:
Com o comando:
você vai ter:
E como o apache é um daemon em execução sob o usuário www-data, agora é capaz de executar este comando.
Portanto, se você agora usa um script PHP, por exemplo:
você receberá a saída do
arp -an
comando linux .fonte
arp
binário é redundante,www-data
ainda tem permissões de execução doother
umode.Use esta classe (https://github.com/BlakeGardner/php-mac-address)
Esta é uma classe PHP para manipulação de endereços MAC sobre os sistemas operacionais Unix, Linux e Mac OS X. foi escrito principalmente para ajudar na falsificação de auditorias de segurança sem fio.
fonte
No Windows, se o usuário estiver usando seu script localmente, será muito simples:
fonte
Você pode usar a seguinte solução para resolver seu problema:
fonte
Podemos obter o endereço MAC no Ubuntu desta maneira em php
fonte
Obtendo o endereço MAC usando o PHP: (Testado no Ubuntu 18.04) - Atualização 2020
Aqui está o código:
Resultado:
fonte
Talvez a obtenção do endereço Mac não seja a melhor abordagem para verificar a máquina de um cliente pela Internet. Considere usar um token que é armazenado no navegador do cliente pelo login de um administrador.
Portanto, o cliente só pode ter esse token se o administrador o conceder por meio do navegador. Se o token não estiver presente ou válido, a máquina do cliente é inválida.
fonte
Você pode obter MAC endereço ou o endereço físico usando este código
Eu costumava explodir muitas vezes porque shell_exec ("ipconfig / all") retorna detalhes completos de toda a rede. então você tem que dividir um por um. Quando você executa esse código, você obtém
seu endereço MAC 00 - ## - ## - CV-12 // este é um endereço falso apenas para exibição.
fonte
Isso funciona para mim no Windows, assim como
ipconfig /all
o comando do sistema Windows.fonte
no linux usando iptables, você pode registrar em um arquivo cada solicitação ao servidor web com endereço mac e ip. de pesquisa php último item com endereço IP e obter endereço MAC.
Conforme declarado, lembre-se de que o endereço mac é do último roteador no rastreamento.
fonte
Você pode fazer isso facilmente usando o openWRT. Se você usa um portal cativo, pode misturar php e openWRT e estabelecer uma relação entre o IP e o mac.
Você pode escrever um código PHP simples usando:
Mais tarde, usando o openWRT para o qual você pode acessar
/tmp/dhcp.leases
, você obterá algo com o formulário:Lá, você tem o mac, o endereço IP e o nome do host.
fonte