搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

ASP获取客户端MAC地址

本程序属于一种特别的方法。使用范围比较有限,而且有一定的危险性。借鉴了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 & 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()
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
%>
相关文章:
© 2006   www.java-asp.net