views:

144

answers:

3

Hi

Please can someone give me some pointers on picking up the Users MAC address from the HTTP request.

The users will be from OUTSIDE my network.

Any help appreciated.

Richard

+1  A: 

This is not possible, unless you intend to create an ActiveX component, in which case it will only work on IE.

zahstra
An activeX component would not be out of the question, but will the MAC address be usable?
Richard
usable for what ?
nos
validating vs a value held in database?
Richard
A: 

I don't think there is a way to do it in ASP.NET.
MAC is a property of a TCP packet, and on HTTP level there're no packets or MACs (for example, a single HTTP request might be assembled of several TCP packets).

You could try using a packet sniffer (like WireShark) to capture TCP packets, and then analyze them to extract MACs and map them to HTTP requests.

Anyway, you won't get any useful data unless the user is in the same network segment as your server.

UPD. As was pointed out in the comments, I mixed up the network layers. MAC address is a property of Ethernet frame, not a TCP packet.
The conclusion is still correct, however.

VladV
The MAC address is in a tcp packet? Since when? MAC addresses are from a much lower transport layer and not even in the ip packet header.
Christopher Creutzig
Yes, MAC addresses are very low level
Richard
What he meant was a packet in general. In the case from TCP you don't have packets, its a stream. In the case from IP you have frames... And normally you can't access any of these in user mode code.
Sean Farrell
+2  A: 

It depends on your network setup. But probably no.

Here is a short refresher on Ethernet and IP. The MAC address is a unique address of the network card. It is used to identify for which user on the network segment a packet is. You can use ARP to get a MAC address for an IP address. But this works as expected only if you are on the same network segment.

So the question is, what is a network segment? It depends on the technology you use, but here are the common cases. A entire wireless network is a network segment. Every user on the network can talk via Ethernet to every other user. On wire based networks, this depends on the hardware. If you have good old BNC or a hub you have one network segment with all uses. Again each user can talk to any other. With a switch in the network a network segment is only cable that connects you to the switch. Here you can only talk to the switch via Ethernet. Every other user needs at least IP.

Too bad that most situations with HTTP, which builds on TCP/IP, you are 99.99% never in the same network segment as your user. You can use ARP, but will only get the MAC address of the first hop. It get's better, depending on your hardware, you may not even be on a IP network that is based on Ethernet; ATM for example...

Sean Farrell
Hi Sean, Thank you for confusing the situation further! lol, no seriously, good informative post, cheers
Richard
Huh? Wha? Unless you use a technique that can be considered violating the basic privacy of users, such as installing a plugin/active-x/tojan on the user's system the answer is: **No, Technically impossible**. I only tried to explain why... Maybe you or someone else can learn and understand...
Sean Farrell