Recuperar la IP y la MAC mediante un script PHP

Thomas -  
 plefebv -
Hola a todos,

Debo crear, en el marco de mi tfe, una página php dependiente de una base de datos mysql.
Esta página permite a un cliente identificarse.
Lo que permite enviar el identificador, la ip y la mac a la base de datos.

Mi pregunta: estoy buscando un script php que sirva para recolectar la ip y la mac del usuario para enviarlas a la base de datos

Gracias
Configuración: athlon 64 300+, gforce 7900gt, 1,5 go ram, 500 go sata, windows xp, ubuntu

18 respuestas

wAx Mensajes publicados 1596 Fecha de registro   Estado Miembro Última intervención   202
 
Hola,

Es importante saber que es imposible conocer la dirección MAC de la máquina que se conecta en cuanto hay cualquier router entre la máquina y el servidor.

Las direcciones MAC se utilizan para transmitir la información de router a router, desde el puesto cliente hasta el servidor y viceversa cuando el servidor responde.

Esto significa que la dirección MAC de la máquina que se conecta solo es visible para el primer router (a menudo incluso la 'box' Freebox, Livebox, etc.), después, el segundo intermediario ve los datos que llegan desde la dirección MAC de la box, etc., etc.
Por lo tanto, el servidor que aloja el sitio ve TODAS las conexiones llegar con la dirección MAC de su router (evidentemente, a menos que la solicitud provenga de la misma red que el servidor mismo).

Recuperar las direcciones MAC es, por lo tanto, inútil y casi siempre imposible.

Hasta pronto

wAx
35
Ssylvainsab Mensajes publicados 2892 Estado Moderador 825
 
Hola.

Para la IP, es la variable:
$_SERVER['REMOTE_ADDR']

por ejemplo:
<?php //mostramos la dirección IP echo $_SERVER['REMOTE_ADDR']; ?>


Para la dirección MAC, no sé, pero creo que es según los componentes (tarjeta ethernet, wi-fi...) y no el ordenador.

https://www.php.net/manual/es/reserved.variables.php

hasta luego
--
Sylvain
12
neo673
 
wAx tiene toda la razón, es imposible conocer la dirección MAC de la máquina desde un script PHP.

Si bricolas un poco creando un mini software que envías en cada conexión del cliente como si fuera una cookie, pero que se ejecute en el cliente para pedirle su dirección MAC y la devuelva a tu servidor, entonces podrás divertirte almacenándola en una base de datos SQL y probándola en cada conexión del usuario...

En otras palabras, por un lado será muy incómodo para el usuario, por otro, una especie de script que se ejecute en el cliente no es realmente genial, y además, buena suerte programando todo eso :-D
8
omniarchos
 
Hola a todos,

al leer este tema, me surgió una pregunta cuya respuesta podría tal vez permitir obtener la dirección MAC del cliente (el último post es cierto que es antiguo, pero siempre puede ser útil para otros).

El javascript (si he seguido bien los diferentes tutoriales que he leído ^^) se ejecuta en el pc del cliente... ¿un script js puede, por tanto, recuperar la dirección MAC (sin problema de "enrutamiento" ya que está en el mismo pc) y enviarla a una variable? Tal vez podríamos tener acceso a ella, ¿no?
3
pmag
 
<?php
ob_start();
system("ipconfig /all");
$mycom=ob_get_contents();
ob_clean();
$findme = "físico";
$pmac = strpos($mycom, $findme);
$mac=substr($mycom,($pmac+36),17);
echo $mac;
?>

me devuelve 15-9E-36-F6-06

¿no es eso???
3
SupKawai
 
Es la MAC del servidor, sin embargo siempre es imposible en PHP recuperar la del cliente.
0
wAx
 
¡Siempre imposible y no cambiará!
0
Duncan Idaho
 
¡Gracias SupKawai, es exactamente lo que estaba buscando! (la dirección MAC del servidor)
0
jules
 
Si los clientes que se van a conectar están en la misma LAN, se puede hacer un pequeño script en PHP que lance un comando del sistema.

$resultado=system("arp -a");

proporcionará todas las MAC asociadas a las IP que se han conectado al servidor... luego un tratamiento de cadenas de caracteres permitirá encontrar la MAC de una IP en particular.

Pero esto solo funcionaría en una LAN. Las MAC tienen un significado local.
2
Usuario anónimo
 
La dirección MAC está inscrita en la tarjeta de red (ya sea integrada o no en la placa base)
--
"El fin del mundo no es para mañana, llegó ayer" (Lapinkiller)
1
Thomas
 
La teoría del protocolo ISO la conozco, pero no es lo que estoy pidiendo. En fin, gracias de todos modos.

Si alguien tiene una idea, siempre estoy aquí.
1
wAx Mensajes publicados 1596 Fecha de registro   Estado Miembro Última intervención   202
 
Buenas noches,

En este caso, conociendo la teoría del proto ethernet y el modelo ISO, ya deberías saber que si tu cliente no está en la misma red física, es imposible obtener la dirección MAC.

Además, es una información que no llega hasta la capa 7, donde tú trabajas. La IP forma parte de las variables de entorno del servidor web y, por lo tanto, es accesible a través de diversos métodos en PHP. La MAC no es accesible...

Buena suerte.
0
mmlpipf
 
Hola..WAX. Sabes, es cierto desde un punto de vista funcional, pero puede haber matices según yo, si ese es el caso para las direcciones MAC, diría que es válido para las direcciones IP, porque antes de salir de la red, la dirección de la máquina local se mapea a una dirección pública y un número de puerto (el protocolo NAT), y por lo tanto, la dirección IP local no es visible en la red, y aquí se plantea el mismo problema. Yo pienso que es posible conocer la dirección MAC, o bien esta funcionalidad no se tiene en cuenta.
¿Qué piensas?
¡Gracias!
0
bud35000 Mensajes publicados 155 Estado Miembro 103
 
De acuerdo, pero si está en la misma red, podemos recuperar esta dirección MAC con arp -a y este otro comando como nbtstat -a "<ip>".
Pero me gustaría saber también si hay alguna manera de automatizar esta tarea para registrar las direcciones MAC en una tabla SQL haciendo que correspondan con su IP fija.
Entonces, ya sea en PHP u otro, pero imagino que existe una consulta que lo permite.

Con un script por lotes, podemos visualizar a partir de las IP las direcciones MAC correspondientes. ¿Es posible recuperar estos valores en forma de variables?
1
tchicanos
 
Hola, ¿alguien podría ayudarme a encontrar un software o un programa en PHP, shell, Perl o incluso Cygwin que me permitiría recuperar una dirección MAC en el puerto de un switch? Este es un proyecto que debo realizar para mi pasantía, pero no tengo idea de cómo proceder. ¡Agradecería un poco de ayuda por favor, gracias de antemano!
1
Quick
 
Diría que ustedes no han entendido la cuestión, así que retomemos con calma.
La dirección MAC es una dirección definida en el componente del PC (ethernet o wifi). Para acceder a ella, no se puede pasar MÁS que por la máquina.
He leído más arriba que un astuto pensaba que se podría usar JavaScript para recuperar la dirección MAC... y bien, tendrán que seguir leyendo los tutoriales de JS. ¡El JS no permite acceder a la información del PC, en efecto, se limita al navegador! Es por razones de seguridad que los creadores del lenguaje JS han limitado su campo de acción, y los entendemos :) jaja

Una forma de recuperar la dirección MAC (porque sí hay una, de todos modos) es hacer un applet de Java. ¡Que devolverá la información desde la máquina! Personalmente... mi firewall bloqueará su intento de conexión exterior... o uno de los routers... jaja y eso si he aceptado el applet.

Así que lo más sencillo es pedir a los visitantes... ¡
1
wAx
 
mi firewall bloqueará su intento de conexión exterior...

A condición de que sea un firewall software instalado en la máquina cliente

o uno de los routers.

no. ¿Cómo puede un router diferenciar entre la conexión de la llamada y la del navegador cuando el usuario está navegando?

Pero bueno, todo esto está muy bien, pero todavía no veo el interés de recuperar la @ mac...
0
wAx > wAx
 
entre la conexión de la applet y cell
disculpa, validé demasiado rápido
0
dqs
 
un script no tiene por qué significar necesariamente Javascript. ¿El Java no puede acceder a los archivos? Sí.
Igualmente sucede con muchos otros lenguajes.
0
kenocouteau
 
Bueno, es una técnica antigua, pero si tienes la dirección IP de la máquina y quieres la dirección MAC, haces:
ping <dirección IP de la máquina> después de 2 o 3 pings detienes
y lanzas un arp -a y tendrás la dirección MAC correspondiente.

Deberías poder ejecutar comandos con PHP, así que deberías salir adelante.
a++

pd: esta respuesta seguramente llega demasiado tarde, pero puede servir a otros.
1
thomas
 
Sí, la dirección MAC está identificada de todos modos en el PC.
No obstante, no encuentro una forma de transcribirla mediante un script.
0
Ssylvainsab Mensajes publicados 2892 Estado Moderador 825
 
¿Es decir, no has encontrado una forma de conocer la dirección MAC?
--
Sylvain
-1
Thomas
 
He encontrado la IP, pero no consigo encontrar la dirección MAC con un código PHP o JavaScript.

Si alguien tiene una idea...
0
Usuario anónimo
 
Si lo pienso, le preguntaré a mi profe de informática...
--
"El fin del mundo no es para mañana, ya llegó ayer" (Lapinkiller)
0
Récuperer l'ip et la mac par un script PHP
 
mmm
0
ingenieurinfo Mensajes publicados 6 Estado Miembro
 
Hola,

si tu aplicación está en intranet y tu servidor es Linux. Puedes recuperar la dirección MAC del cliente de la siguiente manera:
<?php
// el código funciona en Debian 7.0, para otras versiones y distribuciones de Linux puedes cambiar el comando "cut" para recuperar el campo

$mac=system("/usr/sbin/arp -a|grep ".$_SERVER['REMOTE_ADDR']."\)|cut -f4 -d\" \"");
?>
0
plefebv
 
La técnica del ARP solo funciona para subredes cercanas.
Si la máquina a identificar está demasiado lejos, nunca verás la dirección MAC aparecer en las tablas de resolución de direcciones de tu red.
Incluso insistiendo mucho.
Una opción es ejecutar un código en Java (u otro) en la máquina remota.
0
plefebv
 
Otra solución :winck: es hackear todos los routers de Internet ...
pero eso se debía haber hecho antes del diseño de estos routers, integrando el código en los compiladores de silicio que luego se utilizaron para diseñar los routers, en forma de una "función oculta para mantenimiento u optimización del enrutamiento"...
0