Resolve MAC addresses?

Is there some kind of variable (like cgi.remote_host for ip's) for retriving MAC addresses? I am using IIS3 and Cold Fusion 3.
Thanks for your help.
LVL 2
jagoodieAsked:
Who is Participating?
 
thoellriConnect With a Mentor Commented:
As said before by faster and mouatts, the MAC address of a system connecting to you server is not available in the environment. All you get is the ip-address and/or hostname of the system talking to your server. However, for packets being transported back to the system in question, the MAC address has to be know.
You can try the following from a CMD.EXE seesion: After getting the IP-address from the cgi.remote_host field, ping the system using "ping ip-address". Now do a "arp -a"  and look for the ip-address of the system you just pinged. You will see that the matching MAC-address appears in the second column.
A look through the Windows Socket 2 documentation should get you on the right track.
Here is what I did for UNIX/Perl5. The following sub gets either ip or mac-address and return ip and MAC-address (filling in the missing one). This is done after the system has been pinged to make sure that the MAC/IP-addresses are known to ARP:
sub fromarp {
    my($ip,$ether) = @_;
    my ($a_name, $a_ether, $a_ip, $addr);
    open(PIPE,"arp -a|") || return (undef, undef);
    while (<PIPE>) {
        chomp;
        $addr=undef;
        if (/^\S+\s+(\S+)\s+.*\s+([\dabcdef:]+)$/) {
            $a_name=$1;$a_ether=$2;
            if ($addr=gethostbyname($a_name)) {
                $addr=inet_ntoa($addr);
            }
        } else {
            next;
        }
        if (defined($ip)) {
            if (defined($addr) && ($ip eq $addr)) {
                $ether=$a_ether;
                last;
            }
        } else {
            if (defined($addr) && ($ether eq $a_ether)) {
                $ip=$addr;
                last;
            }
        }
    }
    close(PIPE);
    return ($ip, $ether);
}

Hope this helps
Tobias
0
 
fasterCommented:
The answer is definetly NO.  A browser never send the MAC address to the server.  If you really need it, you can consider to write an ActiveX control, which get the MAX address by itself and then fill it in the form using VB script (or directly talk to the server).
0
 
jagoodieAuthor Commented:
Pretty cockey to think you are the end all know it all (if I don't know it, it doesn't exist attitude).
Thanks for your comment/opionion.
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
fasterCommented:
It is not that I know it all, but I did read the whole http 1.0 and http 1.1 protocol, all the information sent from a browser are based on these two protocols.  So if you have a look at the these two RFCs, you will know that it is not possible that a browser will ever send this kind of information to the server, unless you send it by yourself, that is, writing your own ActiveX or the kind.
0
 
jagoodieAuthor Commented:
my point is that someone has this code that i am looking for and i am hoping that they read this question, and if i accept your answer then i have to learn programming just to get this script.
any idea where i would find this script?
0
 
mouattsCommented:
faster is correct in that the client does not send back the MAC address. To do so would require the application protocol to understand the details of the lower level protocols which runs contrary to the entire approach of network communications.

There are functions within the WINSOCK API that will allow you to obtain the MAC address from an IP address but to utilise these you will need to learn how to write programs.

But given I can't see what you will use these four unless you are writing a program I can't see your problem.

Incidently its worth remembering that the IP address (and thus the resultant MAC address) will not always be that of the client but that of a proxy that the client has accessed you site through.

Steve
0
 
jagoodieAuthor Commented:
if this is the answer, faster deserves the points.
i am not collecting outside our LAN, in is for internal use- maintaining a bootp table, so i don't care about any proxys.
0
 
mouattsCommented:
Fine then award them. Just because you don't like an answer is not the reason to reject an answer.

Incidently using WEB access to maintain a bootp table is a recipe for disaster.

Steve
0
All Courses

From novice to tech pro — start learning today.