Michael's CodeTank

编码坦克,追求严谨的编码..........
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP获取客户端MAC地址

Posted on 2006-04-17 23:36  麦克友友  阅读(478)  评论(0)    收藏  举报
本程序属于一种特别的方法。使用范围比较有限,而且有一定的危险性。借鉴了asp后门里的一些方法。下面是程序代码。

<% 
dim remoteaddr 
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")=empty then 
 remoteaddr=Request.ServerVariables("REMOTE_ADDR") 
else 
 remoteaddr=Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
end if 

Response.Write(GetMac(remoteaddr)) 
''用于读取某IP的网卡MAC地址 
''本程序通过调用arp命令通过查询本机arp表读取特定IP的MAC地址 
''使用本程序需注意以下事项: 
'' 本程序需要“WSCRIPT.SHELL”和“Scripting.FileSystemObject”两个组件,请确保您的服务器可以正常使用这两个组件
'' 本程序需要调用cmd.exe程序,请确保IIS来宾帐号对程序有访问权限。 
'' 本程序需要临时文件保存结果,请确保IIS来宾帐号对临时目录有写权限。 
'' 
function GetMac(IP) 
 On Error Resume Next 
 Dim oScript 
 Dim oFileSys, oFile 
 Dim All, szTempFile,ipc,phyc,typec 
 Dim TempPath 
 Set oScript = Server.CreateObject("WSCRIPT.SHELL") 
 Set oFileSys = Server.CreateObject("Scripting.FileSystemObject") 
 TempPath="d:\temp\" ''临时目录 
 szTempFile = TempPath &amp; oFileSys.GetTempName() '' 获取临时文件名 
 Call oScript.Run ("cmd.exe /c ping -n 2 " &amp; IP, 0, True) ''保证arp表中有此IP 
 Call oScript.Run ("cmd.exe /c arp -a " &amp; IP &amp; " > " &amp; szTempFile, 0, True) 
 Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0) 
 All=oFile.ReadAll() 
 oFile.Close 
 If (IsObject(oFile)) Then 
   Call oFileSys.DeleteFile(szTempFile, True) 
 End If 
 arr = Split(All, vbCrLf) 
 If UBound(arr) = 4 Then 
   ipc =InStr(1, arr(2), "Internet Address") 
   phyc = InStr(1, arr(2), "Physical Address") 
   typec = InStr(1, arr(2), "Type") 
   If typec > phyc And phyc > ipc And ipc > 0 Then 
     GetMac=Ucase(Trim(CStr(Mid(arr(3), phyc, typec - phyc)))) 
   End If 
 End If 
End function 
%>