社区
C#
帖子详情
C#取客户端MAC地址(不是通ip得到),内网的也要取的到
xubkd
2008-11-07 11:43:00
如题
...全文
3828
21
打赏
收藏
C#取客户端MAC地址(不是通ip得到),内网的也要取的到
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蟑螂•魂
2010-12-12
打赏
举报
回复
[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);
private void Page_Load(object sender, System.EventArgs e)
{
try
{
string userip=Request.UserHostAddress;
string strClientIP = Request.UserHostAddress.ToString().Trim();
Int32 ldest = inet_addr(strClientIP); //目的地的ip
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
string mac_src=macinfo.ToString("X");
if(mac_src == "0")
{
if (userip == "127.0.0.1")
{
Response.Write("正在访问Localhost!");
}
else
{
Response.Write("欢迎来自IP为" + userip + "的朋友!" + "<br>");
}
return;
}
while(mac_src.Length<12)
{
mac_src = mac_src.Insert(0,"0");
}
string mac_dest="";
for(int i=0;i<11;i++)
{
if (0 == (i % 2))
{
if ( i == 10 )
{
mac_dest = mac_dest.Insert(0,mac_src.Substring(i,2));
}
else
{
mac_dest ="-" + mac_dest.Insert(0,mac_src.Substring(i,2));
}
}
}
Response.Write ("欢迎来自IP为"+userip+ "<br>" + ",MAC地址为"+mac_dest+"的朋友!"
+ "<br>");
}
catch(Exception err)
{
Response.Write(err.Message);
}
}
xhlmm
2010-06-02
打赏
举报
回复
这个要怎么搞哦,我也想要一个!
hb915a
2009-03-23
打赏
举报
回复
C#现在给的方案都只能获取服务器上的MAC或CPU序列号,无法真正的获取个人用户电脑上的MAC?
谁能获取真正客户端的MAC,不是服务器上的
。给谁一个敬礼,加人民币。
koukoujiayi
2008-11-10
打赏
举报
回复
不让用户改,可以通过数字证书!
我觉得这还不是问题的所在,关键这个Mac是可修改的!!!
xubkd
2008-11-10
打赏
举报
回复
这个是可以实现,可以要用户去改安全级别好像不太现实,不过还是谢谢你!
koukoujiayi
2008-11-10
打赏
举报
回复
楼主请先在客户端设置:
进入Internet属性设置:点安全/自定义级别/找到"对没有标记为安全的ActiveX控件进行初始化和脚本运行"/点选"启用"
程序代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" viewastext> </object>
<object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>
<script type="text/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;
}
</script>
<script type="text/jscript">
var service = locator.ConnectServer();
var MACAddr ;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
<script type="text/jscript" event="OnCompleted(hResult,pErrorObject,pAsyncContext)" for="foo" >
document.form1.TextBox1.value=unescape(MACAddr);
</script>
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
koukoujiayi
2008-11-10
打赏
举报
回复
楼主:
应为哪个mac可以修改的,所以在原来的项目中不适用了,
所以放弃了,在研究的过程中知道数字证书这么一回事,
具体就不太清楚了,抱歉!!
楼主可googl一下,这方面的介绍还是很多的,
比如免费的数字证书等等!!
xubkd
2008-11-10
打赏
举报
回复
数字证书,怎么实现,麻烦告知!对于这个mac可以修改倒没事,反正又不是很严格的!
koukoujiayi
2008-11-09
打赏
举报
回复
楼主我现在在家,程序在单位,明天给你发上!!
xubkd
2008-11-09
打赏
举报
回复
[Quote=引用 4 楼 koukoujiayi 的回复:]
引用 1 楼 vrhero 的回复:
这问题问过无数次了...如果你是C/S那很简单,如果是B/S就别想这种不可能的事情了...
B/S也完全可以!!
这我做过,但这个MAC也是可以更改的,所以在项目中没用!
楼主需要的话,待会我找出来给你!!不过你要知道,这个MAC在注册表中是可更改的,
程序是读取注册表中的MAC!!
[/Quote]
这个办法应该可以满足要求,这个项目的应用只是内网的,麻烦把代码给一下,谢谢了!
koukoujiayi
2008-11-09
打赏
举报
回复
[Quote=引用 10 楼 vrhero 的回复:]
楼上...去看一下什么叫B/S什么叫C/S再说...把基础打好...
[/Quote]
楼上去验证一下web程序是否可取得MAC!!把基础的基础打好.....
vrhero
2008-11-09
打赏
举报
回复
楼上...去看一下什么叫B/S什么叫C/S再说...把基础打好...
koukoujiayi
2008-11-09
打赏
举报
回复
[Quote=引用 8 楼 vrhero 的回复:]
不切实际的想法...
办法1,你能说服几个Internet用户接受?除非你是淘宝那种大网站,但是做到那么大你还…
[/Quote]
讨论能否B/s取得客户端的MAC,你说不可以,事实上是可以的,
至于"不切实际的想法"从何谈起呢?
事实上很实际,如过这个MAC不可更改的话,在一个单位的局网中,某一项业务可以限制在某几台机器,
知道用户名和密码都不行,这很实际呵!!是客户提出的呵!!
vrhero
2008-11-09
打赏
举报
回复
[Quote=引用 7 楼 koukoujiayi 的回复:]
引用 5 楼 vrhero 的回复:
B/S只能通过客户端插件来取,其本质还是C/S...何况以现在的浏览器安全机制近乎不可能...
有两种办法:
1.开放客户端的ActivX,即对没有标记为安全的ActiveX设置为启用!
这多少有点不安全,事实上也没什么问题!
2.引进数字证书!那就彻底安全!!
[/Quote]
不切实际的想法...
办法1,你能说服几个Internet用户接受?除非你是淘宝那种大网站,但是做到那么大你还要用户mac干什么?
至于办法2,除了金融机构和某些企业内部网站我还没见过随便给人发证书的,况且未经可信根证书机构认可的数字证书一样会浏览器拦截...
koukoujiayi
2008-11-09
打赏
举报
回复
[Quote=引用 5 楼 vrhero 的回复:]
B/S只能通过客户端插件来取,其本质还是C/S...何况以现在的浏览器安全机制近乎不可能...
[/Quote]
有两种办法:
1.开放客户端的ActivX,即对没有标记为安全的ActiveX设置为启用!
这多少有点不安全,事实上也没什么问题!
2.引进数字证书!那就彻底安全!!
bingdian37
2008-11-09
打赏
举报
回复
mac...这个...鸡肋
vrhero
2008-11-09
打赏
举报
回复
B/S只能通过客户端插件来取,其本质还是C/S...何况以现在的浏览器安全机制近乎不可能...
koukoujiayi
2008-11-09
打赏
举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
这问题问过无数次了...如果你是C/S那很简单,如果是B/S就别想这种不可能的事情了...
[/Quote]
B/S也完全可以!!
这我做过,但这个MAC也是可以更改的,所以在项目中没用!
楼主需要的话,待会我找出来给你!!不过你要知道,这个MAC在注册表中是可更改的,
程序是读取注册表中的MAC!!
xubkd
2008-11-09
打赏
举报
回复
为什么B/S的就不可能呢,听说好像用api调用就可以,但不知道怎么写
simonezhlx
2008-11-08
打赏
举报
回复
public static string GetMac(string clientip)
{
string mac="";
System.Diagnostics.Process process=new System.Diagnostics.Process();
process.StartInfo.FileName="nbtstat";
process.StartInfo.Arguments="-a "+clientip;
process.StartInfo.UseShellExecute=false;
process.StartInfo.CreateNoWindow=true;
process.StartInfo.RedirectStandardOutput=true;
process.Start();
string output=process.StandardOutput.ReadToEnd();
int length=output.IndexOf("MAC Address =");
if(length>0)
{
mac=output.Substring(length+14,17);
}
return mac;
}
}
加载更多回复(1)
C#
编程获
取
局域网
IP
及网卡
MAC地址
用
C#
编写的小程序,用于获
取
局域网内电脑的
IP
地址及对应的网卡
MAC地址
。
C#
获
取
本机各基础参数操作类,包含内容广泛,非常实用好用
C#
获
取
本机各基础参数操作类,包含内容广泛,非常实用好用! 主要包括: 获
取
本机用户名、
MAC地址
、
内网
IP
地址、公网
IP
地址、硬盘ID、CPU序列号、系统名称、物理内存。 操作系统的登录用户名 获
取
本机
MAC地址
获
取
本机的物理地址 获
取
客户端
内网
IP
v6地址 获
取
客户端
内网
IP
v4地址 获
取
客户端
内网
IP
v4地址集合 获
取
客户端
外网
IP
地址 获
取
本机公网
IP
地址 获
取
硬盘序号 获
取
CpuID 获
取
操作系统类型 获
取
操作系统名称 获
取
物理内存信息 获
取
主板id 获
取
公用桌面路径 获
取
公用启动项路径 等内容。
初学及入门
C#
C#
是一门用于开发web服务器,
客户端
的开发语言。
C#
既可以解决日常编程算法问题,也可以解决软件开发问题。
C#
是从C++继承而来,既有C++和硬件交互的功能,也能像java一样web开发。很多人入门一门编程语言可能会有很多问题,本门课程从自身学习编程语言的基础上讲解
C#
,并且并行比较C,C++,java等语言,从而能够更整体理解编程语言入门的方法。
C#
获
取
客户端
Ip
和
MAC地址
获
取
客户端
IP
public static string GetClient
Ip
() { if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)//是否有代理服务器 return System.Web.HttpCo...
JS、
C#
、ASP.NET获
取
用户
客户端
ip
地址,
Mac地址
,端口号、主机名案例详解。
首先声明,出于安全,JS、
C#
(ASP.NET)是无法获
取
到
客户端
的
Mac地址
和端口号的,以下方法可以获
取
到
客户端
的公网
ip
地址和
内网
ip
地址: 1、页面引用第三方JS接口,适用所有平台及浏览器,代码及截图如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charse...
C#
110,545
社区成员
642,580
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章