Este procedimiento es un método especial. El ámbito de uso es relativamente limitado y existe un cierto grado de peligro. Aprendí algunos métodos de la puerta trasera de ASP. A continuación se muestra el código del programa.
<%
dirección remota tenue
si Request.ServerVariables("HTTP_X_FORWARDED_FOR")=vacío entonces
remoteaddr=Request.ServerVariables("REMOTE_ADDR")
demás
remoteaddr=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
finalizar si
Response.Write(GetMac(remoteaddr))
'Debido a la lectura de la dirección MAC de la tarjeta de red de una determinada IP
'Este programa lee la dirección MAC de una IP específica llamando al comando arp y consultando la tabla arp local.
'Tenga en cuenta lo siguiente al utilizar este programa:
' Este programa requiere dos componentes: "WSCRIPT.SHELL" y "Scripting.FileSystemObject". Asegúrese de que su servidor pueda utilizar estos dos componentes normalmente.
' Este programa necesita llamar al programa cmd.exe. Asegúrese de que la cuenta de invitado de IIS tenga derechos de acceso al programa.
' Este programa requiere archivos temporales para guardar los resultados. Asegúrese de que la cuenta de invitado de IIS tenga permisos de escritura en el directorio temporal.
'
función ObtenerMac(IP)
En caso de error Continuar siguiente
Escritura tenue
Atenuar oFileSys, oFile
Atenuar todo, szTempFile,ipc,phyc,typec
Ruta temporal tenue
Establecer oScript = Server.CreateObject("WSCRIPT.SHELL")
Establecer oFileSys = Server.CreateObject("Scripting.FileSystemObject")
TempPath="d:temp" 'Directorio temporal
szTempFile = TempPath & oFileSys.GetTempName() 'Obtiene el nombre del archivo temporal
Llame a oScript.Run ("cmd.exe /c ping -n 2 " & IP, 0, True) ' Asegúrese de que esta IP esté en la tabla arp
Llame a oScript.Run ("cmd.exe /c arp -a " & IP & " > " & szTempFile, 0, True)
Establecer oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
Todo=oArchivo.ReadAll()
oArchivo.Cerrar
Si (IsObject(oFile)) Entonces
Llame a oFileSys.DeleteFile(szTempFile, True)
Terminar si
arr = Dividir(Todos, vbCrLf)
Si UBound(arr) = 4 Entonces
ipc = InStr(1, arr(2), "Dirección de Internet")
phyc = InStr(1, arr(2), "Dirección física")
typec = InStr(1, arreglo(2), "Tipo")
Si typec > phyc y phyc > ipc y ipc > 0 entonces
GetMac=Ucase(Trim(CStr(Mid(arr(3), phyc, typec - phyc))))
Terminar si
Terminar si
Función final
%>