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
if getmac(remoteaddr)<> "" then
session("mac") = getmac(remoteaddr)
end if
sql="select * from macaddress where mac_address='"&getmac(remoteaddr)&"'"
set rst = server.createobject("adodb.recordset")
rst.open sql,conn,1,3
set rst=nothing
response.write(getmac(remoteaddr))

'由于读取某ip的网卡mac地址


'本程序调用arp命令通过查询本机arp表读取特定ip的mac地址


'本程序需要“wscript.shell”和“scripting.filesystemobject”两个组件,

'请确保您的服务器可以正常使用这两个组件

'本程序需要调用cmd.exe程序,临时文件保存结果,请确保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 > ipcand ipc > 0 then
getmac=ucase(trim(cstr(mid(arr(3), phyc, typec - phyc))))
end if
end if
end function
%>

评论

发表新评论

此内容将保密,不会被其他人看见。
点击刷新验证码
  • 可用的 UBB 标签:
  • 留言最长字数:1000。