分享你我的心得.
共乘一片美好网络.

使用ASP获取客户端MAC地址

<%
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))
Response.Write ("<br>地址获取完毕")
‘由于读取某ip的网卡mac地址
‘本程序通过调用arp命令通过查询本机arp表读取特定ip的mac地址
‘使用本程序需注意以下事项:
‘ 本程序需要"wscript.shell"和"scripting.filesystemobject"两个组件,请确保您的服务器可以正常使用这两个组件
‘ 本程序需要调用cmd.exe程序,请确保iis来宾帐号对程序有访问权限。
‘ 本程序需要临时文件保存结果,请确保iis来宾帐号对临时目录有写权限。

function getmac1(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:\" ‘临时目录
sztempfile = temppath & ofilesys.gettempname() ‘ 获取临时文件名
call oscript.run ("cmd.exe /c ping -n 2 " & ip, 0, true) ‘保证arp表中有此ip
call oscript.run ("cmd.exe /c arp -a " & ip & " > " & sztempfile, 0, true)
set ofile = ofilesys.opentextfile (sztempfile, 1, false, 0)
all=ofile.readall()
Response.Write ("<br>读取的结果为:"&all)
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
%>

<%
strIP = Request.ServerVariables("REMOTE_ADDR")
strMac = GetMAC(strIP)

Function GetMAC(strIP)
Set net = Server.createObject("wscript.network")
Set sh = Server.createObject("wscript.shell")
TempPath="c:\" ‘临时目录
sh.run "%comspec% /c nbtstat -A " & strIP & " > " &TempPath&strIP & ".txt",0,true
Set sh = nothing
Set fso = createobject("scripting.filesystemobject")
Set ts = fso.opentextfile(TempPath&strIP & ".txt")
macaddress = null
Do While Not ts.AtEndOfStream
data = ucase(trim(ts.readline))
‘Response.Write "<br>"& data
If instr(data,"MAC ADDRESS") Then
macaddress = trim(split(data,"=")(1))
Exit Do
End If
loop
ts.close
Set ts = nothing
‘fso.deletefile TempPath&strIP & ".txt"
Set fso = nothing
GetMAC = macaddress
End Function
%>
<HTML>
<HEAD>
<TITLE>查看MAC地址________By Tinyu.Net</TITLE>
</HEAD>
<BODY>
<%Response.Write("<br>IP:"&strIP&""&vbcrlf)%>
<%Response.Write("<br>MAC:"&strMac&vbcrlf)%>
</BODY>
</HTML>

赞(0)
未经允许不得转载:小叶白龙博客 » 使用ASP获取客户端MAC地址

评论 57

登录

找回密码

注册