A tí no te vale, pero puede ser que a alguno que venga detrás sí.
Otra forma para conseguirlo (en una LAN) sería ésta:
supongamos este escenario
-tarjeta para recuperar la MAC debe conseguir la IP por DHCP
-IIS debe correr en el mismo servidor que esta el servidor DHCP
y el funcionamiento básico sería
-copiar el .log de DHCP (\windows\system32\dhcp\dhcpsrvlog.
DÍA.) a un directorio con permisos suficientes( Hay que copiarlo porque el archivo del día actual está en uso por el servidor DHCP y no puede abrirse directamente).
-Este fichero tiene la estructura
ID,Date,Time,Description,IP Address,Host Name,MAC Address
11,12/25/99,00:04:00,Renew,255.255.255.255,testbench,00C0F0 XXYYZZ
-Conseguir la IP del cliente
-buscarla en el log
-rescatar de esa línea la MAC (último campo de la línea)
-borrar el archivo copiado
y ahora, al turrón:
Código:
<% Option Explicit %>
<%
'<<<<< DECLARE ALL VARIABLES >>>>>'
Dim sRIPa
Dim sDate
Dim intRandom
Dim objFSO
Dim objTextFile
Dim sLine
Dim sMacAddr
'<<<<< OBTAIN CLIENT's IP ADDRESS >>>>>'
sRIPa = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
'<<<<< OBTAIN DATE AND FORMAT FOR APPROPRIATE DHCP LOG EXTENSION >>>>>'
sDate = LEFT(FormatDateTime(Date, 1), 3)
'<<<<< REDIRECT BAD IP RANGES TO APPROPRIATE PAGE >>>>>'
If LEFT(sRIPa, 7) <> "255.255" Then
Response.Redirect ("error_page.asp")
End If
'<<<<< CREATE TEMP FILE NAME - RANDOMLY GENERATED >>>>>'
Randomize
intRandom = Int((99999 - 11111 + 1) * Rnd + 1)
'<<<<< COPY THE DHCP LOG TO WORKING DIRECTORY>>>>>'
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\winnt\system32\dhcp\DhcpSrvLog." & _
sDate, "C:\working\"
& intRandom & ".txt"
Set objFSO = Nothing
'<<<<< OBTAIN THE MAC ADDRESS FROM THE COPIED DHCP LOG >>>>>'
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\working\" & _
intRandom & ".txt")
Do While Not objTextFile.AtEndOfStream
sLine = objTextFile.ReadLine
If InStr(sLine, sRIPa) Then
sMacAddr = LCASE(RIGHT(sLine,12))
End If
Loop
'<<<<< CLEAN UP AND DELETE THE TEMPORARY FILE >>>>>'
objTextFile.Close
Set objTextFile = Nothing
objFSO.DeleteFile ("C:\working\" & intRandom & ".txt")
Set objFSO = Nothing
'<<<<< FORMAT THE MAC ADDRESS >>>>>'
sMacAddr = LEFT(sMacAddr, 4) & "." & MID(sMacAddr, 5, 4) & "." &
RIGHT(sMacAddr, 4)
'<<<<< GENERATE THE HTML OUTPUT >>>>>'
Response.Write ("<HTML><FORM><TABLE BORDER=0 ALIGN=LEFT><TR><TD>")
Response.Write ("<B>IP Address:</B></TD><TD><INPUT TYPE='TEXT'")
Response.Write (" SIZE=15 VALUE='" & sRIPa & "'>")
Response.Write ("</TD></TR>")
Response.Write ("<TR><TD><B>MAC Address:</B> </TD><TD>")
Response.Write ("<INPUT TYPE=TEXT SIZE=15 VALUE='" & sMacAddr)
Response.Write ("'></TD>")
Response.write ("</TR></TABLE></FORM></HTML>")
%>
Nota: la MAC de los usuarios de Macintosh es más larga que las demás, pero los 12 últimos caracteres son, en sí, la MAC real.
Nota:Los permisos necesarios para el usuario IUSR son LEER en \windows\system32\dhcp y LEER,ESCRIBIR Y BORRAR en el directorio de copia
**traducción libre de un artículo en
http://www.4guysfromrolla.com/