WEB网站如何获得访问者的网卡MAC地址?

CrazyFor 2009-07-09 10:03:31
最好不要安装控件的,多谢了!
...全文
1033 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pig23 2009-07-09
  • 打赏
  • 举报
回复
杀软直接干掉
真相重于对错 2009-07-09
  • 打赏
  • 举报
回复
基本是不可能的,路由器会过滤掉
yanlong521521 2009-07-09
  • 打赏
  • 举报
回复
关注下!帮顶
CrazyFor 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hdt 的回复:]
不可能完全获得,mac地址是在iso 七层的第二层上传播,http 是在3层以上

如果是在服务器和客户端在同一局域网下,可以用arp 协议获取客户端mac

[/Quote]

不在同一局域网的,你说的不可能完全获得意思是不是能抓到部份MAC地址,误差大概多大?
真相重于对错 2009-07-09
  • 打赏
  • 举报
回复
如果是在服务器和客户端在同一局域网下,可以用arp 协议获取客户端mac
真相重于对错 2009-07-09
  • 打赏
  • 举报
回复
不可能完全获得,mac地址是在iso 七层的第二层上传播,http 是在3层以上
CrazyFor 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdngo 的回复:]
C# codeusing System;using System.Runtime.InteropServices;namespace UtilityControl
{///<summary>/// 关于IP地址的若干操作///</summary>publicclass IP
{public IP()
{//// TODO: 在此处添加构造函数¡­
[/Quote]

测试了一下,获得的值和用IPConfig/all看到的值不一样。
是什么问题?
HDNGO 2009-07-09
  • 打赏
  • 举报
回复
using System;
using System.Management;
namespace Soyee.Comm
{
/// <summary>
/// Computer Information
/// </summary>
public class Computer
{
public string CpuID;
public string MacAddress;
public string DiskID;
public string IpAddress;
public string LoginUserName;
public string ComputerName;
public string SystemType;
public string TotalPhysicalMemory; //单位:M
private static Computer _instance;
public static Computer Instance()
{
if (_instance == null)
_instance = new Computer();
return _instance;
}
public Computer()
{
CpuID = GetCpuID();
MacAddress = GetMacAddress();
DiskID = GetDiskID();
IpAddress = GetIPAddress();
LoginUserName = GetUserName();
SystemType = GetSystemType();
TotalPhysicalMemory = GetTotalPhysicalMemory();
ComputerName = GetComputerName();
}
string GetCpuID()
{
try
{
//获取CPU序列号代码
string cpuInfo = "";//cpu序列号
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
moc = null;
mc = null;
return cpuInfo;
}
catch
{
return "unknow";
}
finally
{
}

}
string GetMacAddress()
{
try
{
//获取网卡硬件地址
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"].ToString();
break;
}
}
moc = null;
mc = null;
return mac;
}
catch
{
return "unknow";
}
finally
{
}

}
string GetIPAddress()
{
try
{
//获取IP地址
string st = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
//st=mo["IpAddress"].ToString();
System.Array ar;
ar = (System.Array)(mo.Properties["IpAddress"].Value);
st = ar.GetValue(0).ToString();
break;
}
}
moc = null;
mc = null;
return st;
}
catch
{
return "unknow";
}
finally
{
}

}

string GetDiskID()
{
try
{
//获取硬盘ID
String HDid = "";
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
HDid = (string)mo.Properties["Model"].Value;
}
moc = null;
mc = null;
return HDid;
}
catch
{
return "unknow";
}
finally
{
}

}

/// <summary>
/// 操作系统的登录用户名
/// </summary>
/// <returns></returns>
string GetUserName()
{
try
{
string st = "";
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{

st = mo["UserName"].ToString();

}
moc = null;
mc = null;
return st;
}
catch
{
return "unknow";
}
finally
{
}

}


/// <summary>
/// PC类型
/// </summary>
/// <returns></returns>
string GetSystemType()
{
try
{
string st = "";
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{

st = mo["SystemType"].ToString();

}
moc = null;
mc = null;
return st;
}
catch
{
return "unknow";
}
finally
{
}

}

/// <summary>
/// 物理内存
/// </summary>
/// <returns></returns>
string GetTotalPhysicalMemory()
{
try
{

string st = "";
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{

st = mo["TotalPhysicalMemory"].ToString();

}
moc = null;
mc = null;
return st;
}
catch
{
return "unknow";
}
finally
{
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
string GetComputerName()
{
try
{
return System.Environment.GetEnvironmentVariable("ComputerName");
}
catch
{
return "unknow";
}
finally
{
}
}


}
}
artwl_cn 2009-07-09
  • 打赏
  • 举报
回复
关注!
HDNGO 2009-07-09
  • 打赏
  • 举报
回复
using   System;  
using System.Runtime.InteropServices;

namespace UtilityControl
{
/// <summary>
/// 关于IP地址的若干操作
/// </summary>
public class IP
{
public IP()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

/// <summary>
/// 根据ip得到网卡mac地址
/// </summary>
/// <param name="ip">给出的ip地址</param>
/// <returns>对应ip的网卡mac地址</returns>
public static Int64 GetMACByIP(string ip)
{
Int32 ldest= inet_addr(ip); //目的地的ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return macinfo;
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0;
}
}
}
CrazyFor 2009-07-09
  • 打赏
  • 举报
回复
自己顶一下!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧