Necesito saber el MAC y la dirección IP de los clientes conectados, ¿cómo puedo hacer esto en PHP?
php
mac-address
Neveen
fuente
fuente
Respuestas:
Servidor IP
Puede obtener la dirección IP del servidor
$_SERVER['SERVER_ADDR']
.Dirección MAC del servidor
Para la dirección MAC, puede analizar la salida de
netstat -ie
en Linux oipconfig /all
en Windows.Dirección IP del cliente
Puede obtener la IP del cliente de
$_SERVER['REMOTE_ADDR']
Dirección MAC del cliente
La dirección MAC del cliente no estará disponible para usted, excepto en una circunstancia especial: si el cliente está en el mismo segmento de Ethernet que el servidor.
Entonces, si está creando algún tipo de sistema basado en LAN y sus clientes están en el mismo segmento de Ethernet, entonces podría obtener la dirección MAC analizando la salida de
arp -n
(linux) oarp -a
(windows).Editar : pregunta en los comentarios cómo obtener la salida de un comando externo; una forma es usar backticks, por ejemplo
Pero, ¿qué pasa si el cliente no está en una LAN?
Bueno, no tienes suerte a menos que puedas hacer que el cliente ofrezca voluntariamente esa información y la transmita por otros medios.
fuente
La dirección MAC de un cliente (en el sentido de la computadora que emitió la solicitud HTTP) es sobrescrita por cada enrutador entre el cliente y el servidor.
La IP del cliente se proporciona convenientemente al script en
$_SERVER['REMOTE_ADDR']
. En algunos escenarios, particularmente si su servidor web está detrás de un proxy (es decir, un proxy de almacenamiento en caché)$_SERVER['REMOTE ADDR']
devolverá la IP del proxy y, a menudo$_SERVER['HTTP_X_FORWARDED_FOR']
, habrá un valor adicional que contiene la IP del cliente de solicitud original.A veces, particularmente cuando se trata de un proxy anónimo que no controla, el proxy no devolverá la dirección IP real, y todo lo que puede esperar es la dirección IP del proxy.
fuente
No creo que pueda obtener la dirección MAC en PHP, pero puede obtener IP de la
$_SERVER['REMOTE_ADDR']
variable.fuente
Para el servidor de Windows, creo que puedes usar esto:
fuente
exec
solo `echogetmac
Todo lo que necesita hacer es colocar arp en un grupo diferente.
Defecto:
Con comando:
conseguirás:
Y como apache es un demonio que se ejecuta bajo el usuario www-data, ahora puede ejecutar este comando.
Entonces, si ahora usa un script PHP, por ejemplo:
Obtendrá la salida del
arp -an
comando Linux .fuente
arp
binario es redundante,www-data
todavía tiene permisos de ejecución desde el modoother
u.Utilice esta clase (https://github.com/BlakeGardner/php-mac-address)
Esta es una clase PHP para la manipulación de direcciones MAC además de los sistemas operativos Unix, Linux y Mac OS X. fue escrito principalmente para ayudar con la falsificación de auditorías de seguridad inalámbricas.
fuente
En Windows, si el usuario usa su script localmente, será muy simple:
fuente
Puede usar la siguiente solución para resolver su problema:
fuente
Podemos obtener la dirección MAC en Ubuntu de esta manera en php
fuente
Obteniendo la dirección MAC usando PHP: (Probado en Ubuntu 18.04) - Actualización 2020
Aquí está el código:
Salida:
fuente
Quizás obtener la dirección Mac no sea el mejor enfoque para verificar la máquina de un cliente a través de Internet. Considere usar un token en su lugar que se almacena en el navegador del cliente mediante el inicio de sesión de un administrador.
Por lo tanto, el cliente solo puede tener este token si el administrador se lo otorga a través de su navegador. Si el token no está presente o no es válido, la máquina del cliente no es válida.
fuente
Puede obtener la dirección MAC o la dirección física con este código
Solía explotar muchas veces porque shell_exec ("ipconfig / all") devuelve detalles completos de toda la red. así que tienes que dividir uno por uno. cuando ejecute este código, obtendrá
su dirección MAC 00 - ## - ## - CV-12 // esta es una dirección falsa solo para mostrar.
fuente
Esto funciona para mí en Windows, como
ipconfig /all
es el comando del sistema de Windows.fuente
bajo linux usando iptables puede iniciar sesión en un archivo cada solicitud al servidor web con dirección mac e ip. desde el último elemento de búsqueda de php con dirección IP y obtener la dirección mac.
Como se indicó, recuerde que la dirección mac es del último enrutador en la traza.
fuente
Puede hacerlo fácilmente usando openWRT. Si usa un portal cautivo, puede mezclar php y openWRT y establecer una relación entre la IP y la mac.
Puede escribir un código PHP simple usando:
Más tarde, usando openWRT al que puede
/tmp/dhcp.leases
acceder, obtendrá algo con el formulario:Ahí tienes el mac, la dirección IP y el nombre de host.
fuente