注册 登录
编程论坛 ASP技术论坛

asp如何获得客户端的MAC地址。

ysf0181 发布于 2009-10-19 08:37, 1682 次点击
asp如何获得客户端的MAC地址。
11 回复
#2
aspic2009-10-19 08:47
貌似目前或者以后纯的asp获取不到
#3
ysf01812009-10-19 09:53
   有没有办法,配合其他语言获得呢?
#4
天涯听雨2009-10-19 16:03
没有办法做到…… 利用js可以做到,但其程序是不安全的

<Script language=JScript event="OnCompleted(hResult,pErrorObject,pAsyncContext)" for=foo>   
 document.getElementById("txtMACAddr").value=unescape(MACAddr);     
</Script>   
     
<Script language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>   
  if(objObject.IPEnabled !=null &&objObject.IPEnabled !="undefined"&&objObject.IPEnabled==true)   
     {   
      if(objObject.MACAddress!= null&&objObject.MACAddress!="undefined")   
         MACAddr  = objObject.MACAddress;   
         if(objObject.IPEnabled &&objObject.IPAddress(0)!= null&&objObject.IPAddress(0)!="undefined")   
         IPAddr   = objObject.IPAddress(0);   
         if(objObject.DNSHostName != null&&objObject.DNSHostName!="undefined")   
         sDNSName = objObject.DNSHostName;   
     }   
</Script>

下面放
<body>
<Object id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6  VIEWASTEXT></Object>   
<Object id=foo   classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></Object>   
<Script   language=JScript>   
  var   service = locator.ConnectServer();   
  var   MACAddr   ;   
  var   IPAddr   ;   
  var   DomainAddr;   
  var   sDNSName;   
  service.Security_.ImpersonationLevel=3;   
  service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');   
</Script>
<input type="hidden" name="txtMACAddr" id="txtMACAddr" value="">
</body>
#5
chenbofeng202009-10-19 16:59
办法是有滴,不过是有很大危险的。
本程序属于一种特别的方法。使用范围比较有限,而且有一定的危险性。借鉴了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
%>
#6
ysf01812009-10-19 19:22
    都说不安全,那里不安全了?
#7
multiple19022009-10-19 21:36
以下是引用ysf0181在2009-10-19 19:22:51的发言:

    都说不安全,那里不安全了?
正常的虚拟主机不会给你运行cmd.exe的权限.不仅仅是这一点.
#8
天涯听雨2009-10-20 17:15
上面那些ASP代码就是在一般的电脑上也运行不了,可况在服务器.

不要从别处复制一些代码过来给别人!
#9
aspic2009-10-20 18:05
是啊 明显是百度 我见过的~
#10
笨笨林2009-10-21 08:04
ASP获取不到吧
#11
ysf01812009-10-21 22:05
   能否配合其他语言来获得呢?谁有办法?
   那例如,获取外网的IP可以实现,但获取外网的IP又能获取客户端内网的IP,这个能实现吗?

[ 本帖最后由 ysf0181 于 2009-10-21 22:07 编辑 ]
#12
multiple19022009-10-22 13:14
语言是描述算法的。说实在的,没有哪个语言是能做什么事情的。
比如读写文件,不借助FSO等对象,ASP没法做到。不借助Request对象,纯粹的VBScript也没法得到客户端的提交值。

也就是说,作为程序设计语言本身,一般不会有“获得IP地址”这类功能,至于MAC地址的话,如果楼主有点网络基础知识就会知道,它更难获得,甚至有时无法获得。具体知识不细讲了。
1