`
star65225692
  • 浏览: 277165 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

C#使用API利用ARP协议获得同网段计算机的MAC

阅读更多

使用API,利用ARP协议,只能获得同网段计算机的MAC

        [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);

        public static string GetRemoteMac(string clientIP)

        {

            string ip = clientIP;

            if ( ip == "127.0.0.1")

                ip = GetLocalIP()[0];

            Int32 ldest=inet_addr(ip);

            Int64 macinfo=new Int64();

            Int32 len=6;

            try

            {

                SendARP(ldest,0,ref macinfo,ref len);

            }

            catch

            {

                return "";

            }

            string originalMACAddress = Convert.ToString(macinfo,16);

            if (originalMACAddress.Length<12)

            {

                originalMACAddress = originalMACAddress.PadLeft(12,'0');

            }

            string macAddress;

            if(originalMACAddress!="0000" && originalMACAddress.Length==12)

            {

                string mac1,mac2,mac3,mac4,mac5,mac6;

                mac1=originalMACAddress.Substring(10,2);

                mac2=originalMACAddress.Substring(8,2);

                mac3=originalMACAddress.Substring(6,2);

                mac4=originalMACAddress.Substring(4,2);

                mac5=originalMACAddress.Substring(2,2);

                mac6=originalMACAddress.Substring(0,2);

                macAddress=mac1+"-"+mac2+"-"+mac3+"-"+mac4+"-"+mac5+"-"+mac6;

            }

            else

            {

                macAddress="";

            }

            return macAddress.ToUpper();

        }

分享到:
评论

相关推荐

    ARP扫描局域网主机ip和MAC(c#)归类.pdf

    该方法通过获取本机IP和子网掩码,计算出整个网段的IP范围,然后利用ARP包获取每个IP对应的MAC地址,并使用多线程技术和委托技术来提高程序的运行速度和稳定性。 知识点: 1. ARP协议:ARP(Address Resolution ...

    ARP扫描局域网主机ip和MAC(c#)借鉴.pdf

    该文档是关于使用C#语言实现ARP扫描局域网中主机IP和MAC地址的一个项目报告。ARP(Address Resolution Protocol)是一种网络协议,用于通过IP地址查找对应的物理MAC地址。以下是该项目涉及的关键知识点: 1. **...

    C#如何获得设备Mac地址.docx

    对于远程主机的MAC地址,C#提供了`SendARP` API函数,这个函数基于Address Resolution Protocol (ARP)协议工作。ARP是一种用于将IP地址映射到MAC地址的协议。然而,`SendARP`函数有其局限性,只能用于获取同一子网内...

    C#获取局域网内所有联网设备的IP地址和MAC地址

    这可能包括使用广播或多播请求,通过ARP协议(地址解析协议)或者特定的网络扫描库来查找网络上的设备。 总结,通过C#,我们可以轻松地获取局域网内设备的IP地址和MAC地址,并进行IP反向解析得到主机名。对于更复杂...

    C#如何获得设备Mac地址.pdf

    然而,获取远程主机的MAC地址则需要使用不同的方法,因为ARP(Address Resolution Protocol)协议通常不支持跨网段传输。在C#中,我们可以调用Windows API函数`SendARP`来实现这一目标。`SendARP`函数会发送一个ARP...

    C#获取本地主机IPmac地址

    获取远程主机的MAC地址较为复杂,通常需要使用到API函数`SendARP`来发送ARP请求并解析响应。 ```csharp private const int ARP_FLAG_IF_NOT_FOUND = 0x0004; [DllImport("Iphlpapi.dll", SetLastError = true)] ...

    获取局域网中所有的IP地址以及MAC地址

    在C#或Python等语言中,可以使用套接字API来实现IP的扫描。 2. **ARP协议**:ARP,Address Resolution Protocol,地址解析协议,用于将IP地址映射为MAC地址。当程序遍历IP地址时,会发送ARP请求到目标IP,目标设备...

    指定对方IP获取MAC

    总结来说,通过C#编程,我们可以获取本地计算机的IP、MAC等信息,同时也能尝试获取指定IP的MAC地址,但受限于ARP协议的工作范围,这通常只适用于同一局域网内的通信。在实际应用中,我们还需要考虑到异常处理和网络...

Global site tag (gtag.js) - Google Analytics