2010-07-22 19 views
23

¿Puede alguien darme algunos consejos sobre cómo elegir la dirección MAC del usuario a partir de una solicitud HTTP?¿Cómo puedo obtener una dirección MAC de una solicitud HTTP?

Los usuarios serán de fuera de mi red.

+0

hola, Lo sentimos, se olvidó de decir que es un sitio asp.net. Cheers –

+0

duplicado posible de [Obtener el usuario de MAC del sitio web ASP.NET.] (Http://stackoverflow.com/questions/1342738/get-the-mac-of-asp-net-website-user) – Oded

+0

- 1 Ya respondió en la pregunta anterior de Richard (http://stackoverflow.com/questions/3308258/iis7-restrict-website-access-by-mac-dress). –

Respuesta

37

Depende de la configuración de su red. Pero probablemente no.

Aquí hay una breve actualización sobre Ethernet e IP. La dirección MAC es una dirección única de la tarjeta de red. Se usa para identificar para qué usuario en el segmento de red se encuentra un paquete. Puede usar ARP para obtener una dirección MAC para una dirección IP. Pero esto funciona como se esperaba solo si se encuentra en el mismo segmento de red.

Entonces la pregunta es, ¿qué es un segmento de red? Depende de la tecnología que use, pero aquí están los casos comunes. Una red inalámbrica completa es un segmento de red. Todos los usuarios de la red pueden hablar a través de Ethernet a cualquier otro usuario. En redes basadas en cables, esto depende del hardware. Si tiene un buen BNC o un concentrador, tiene un segmento de red con todos los usos. De nuevo, cada usuario puede hablar con cualquier otro. Con un interruptor en la red, un segmento de red es solo un cable que lo conecta al conmutador. Aquí solo puede hablar con el interruptor a través del Ethernet. Todos los demás usuarios necesitan al menos IP.

Lástima que la mayoría de las situaciones con HTTP, que se basa en TCP/IP, usted es 99.99% nunca en el mismo segmento de red que su usuario. Puede usar ARP, pero solo obtendrá la dirección MAC del primer salto. Es mejor, dependiendo de su hardware, es posible que ni siquiera esté en una red IP basada en Ethernet; Cajero automático, por ejemplo ...

+6

Hola Sean, ¡Gracias por confundir más la situación! jajaja, no en serio, buena publicación informativa, aplausos –

+0

¿Eh? ¿Qué? A menos que utilice una técnica que puede considerarse que infringe la privacidad básica de los usuarios, como instalar un complemento/activo-x/tojan en el sistema del usuario, la respuesta es: ** No, técnicamente imposible **. Solo traté de explicar por qué ... Tal vez usted u otra persona puedan aprender y comprender ... – rioki

+1

Creo que esto no es del todo correcto: los puertos del interruptor no son del mismo segmento, sin embargo, uno puede hablar a través de Ethernet entre diferentes conmutadores puertos. Hay un caché ARP en un interruptor para eso. – EFraim

0

Esto no es posible, a menos que tenga la intención de crear un componente ActiveX, en cuyo caso solo funcionará en IE.

+0

Un componente de ActiveX no estaría fuera de discusión, pero ¿se puede utilizar la dirección MAC? –

+0

utilizable para qué? – nos

+0

validación frente a un valor almacenado en la base de datos? –

1

No creo que haya una manera de hacerlo en ASP.NET.
MAC es una propiedad de un paquete TCP, y en el nivel HTTP no hay paquetes o MAC (por ejemplo, una sola solicitud HTTP puede ser ensamblada de varios paquetes TCP).

Puede intentar usar un detector de paquetes (como WireShark) para capturar paquetes TCP, y luego analizarlos para extraer los MAC y asignarlos a las solicitudes HTTP.

De todos modos, no obtendrá ningún dato útil a menos que el usuario se encuentre en el mismo segmento de red que su servidor.

UPD. Como se señaló en los comentarios, mezclé las capas de red. La dirección MAC es propiedad de Ethernet frame, no es un paquete TCP.
La conclusión sigue siendo correcta, sin embargo.

+4

¿La dirección MAC está en un paquete tcp? ¿Desde cuando? Las direcciones MAC provienen de una capa de transporte mucho más baja y ni siquiera están en el encabezado del paquete ip. –

+0

Sí, las direcciones MAC son de muy bajo nivel –

+0

Lo que quiso decir era un paquete en general. En el caso de TCP, no tiene paquetes, es una secuencia. En el caso de IP tiene marcos ... Y normalmente no puede acceder a ninguno de estos en el código de modo de usuario. – rioki

Cuestiones relacionadas