怎么查看连接路由器的各个客户端的MAC地址

怎么查看连接路由器的各个客户端的MAC地址,第1张

在路由器的DHCP客户列表中即可查看到这些信息。

1、用浏览器进入路由器的web管理页面,一般地址为19216811,输入用户名和密码进入web管理页面。

2、一般在“DHCP服务器”——“DHCP客户列表”中即可查看到,如下图所示,第一列是主机名,第二列是内网IP地址,第三列即是MAC地址。

很简单取得对方IP后,将其传入下面函数GetMACAddress即可得到string类型的MAC地址:

<%

Private Const NCBASTAT = &H33

Private Const NCBNAMSZ = 16

Private Const HEAP_ZERO_MEMORY = &H8

Private Const HEAP_GENERATE_EXCEPTIONS = &H4

Private Const NCBRESET = &H32

Private Type NCB

ncb_command As Byte ''Integer

ncb_retcode As Byte ''Integer

ncb_lsn As Byte ''Integer

ncb_num As Byte '' Integer

ncb_buffer As Long ''String

ncb_length As Integer

ncb_callname As String NCBNAMSZ

ncb_name As String NCBNAMSZ

ncb_rto As Byte ''Integer

ncb_sto As Byte '' Integer

ncb_post As Long

ncb_lana_num As Byte ''Integer

ncb_cmd_cplt As Byte ''Integer

ncb_reserve(9) As Byte '' Reserved, must be 0

ncb_event As Long

End Type

Private Type ADAPTER_STATUS

adapter_address(5) As Byte ''As String 6

rev_major As Byte ''Integer

reserved0 As Byte ''Integer

adapter_type As Byte ''Integer

rev_minor As Byte ''Integer

duration As Integer

frmr_recv As Integer

frmr_xmit As Integer

iframe_recv_err As Integer

xmit_aborts As Integer

xmit_success As Long

recv_success As Long

iframe_xmit_err As Integer

recv_buff_unavail As Integer

t1_timeouts As Integer

ti_timeouts As Integer

Reserved1 As Long

free_ncbs As Integer

max_cfg_ncbs As Integer

max_ncbs As Integer

xmit_buf_unavail As Integer

max_dgram_size As Integer

pending_sess As Integer

max_cfg_sess As Integer

max_sess As Integer

max_sess_pkt_size As Integer

name_count As Integer

End Type

Private Type NAME_BUFFER

name As String NCBNAMSZ

name_num As Integer

name_flags As Integer

End Type

Private Type ASTAT

adapt As ADAPTER_STATUS

NameBuff(30) As NAME_BUFFER

End Type

Private Declare Function Netbios Lib "netapi32dll" _

(pncb As NCB) As Byte

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _

hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Private Declare Function GetProcessHeap Lib "kernel32" () As Long

Private Declare Function HeapAlloc Lib "kernel32" _

(ByVal hHeap As Long, ByVal dwFlags As Long, _

ByVal dwBytes As Long) As Long

Private Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, _

ByVal dwFlags As Long, lpMem As Any) As Long

Public Function GetMACAddress(sIP As String) As String

Dim sRtn As String

Dim myNcb As NCB

Dim bRet As Byte

Dim aIP() As String

Dim x As Long

Dim nIP As String

If InStr(sIP, "") = 0 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

aIP = Split(sIP, "", -1, vbTextCompare)

If UBound(aIP()) <> 3 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

For x = 0 To UBound(aIP())

If Len(aIP(x)) > 3 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If IsNumeric(aIP(x)) = False Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If InStr(aIP(x), ",") <> 0 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If CLng(aIP(x)) > 255 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If nIP = "" Then

nIP = String(3 - Len(aIP(x)), "0") & aIP(x)

Else

nIP = nIP & "" & String(3 - Len(aIP(x)), "0") & aIP(x)

End If

Next

sRtn = ""

myNcbncb_command = NCBRESET

bRet = Netbios(myNcb)

myNcbncb_command = NCBASTAT

myNcbncb_lana_num = 0

myNcbncb_callname = nIP & Chr(0)

Dim myASTAT As ASTAT, tempASTAT As ASTAT

Dim pASTAT As Long

myNcbncb_length = Len(myASTAT)

pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, myNcbncb_length)

If pASTAT = 0 Then

GetMACAddress = "memory allcoation failed!"

Exit Function

End If

myNcbncb_buffer = pASTAT

bRet = Netbios(myNcb)

If bRet <> 0 Then

GetMACAddress = "不能从当前IP地址获得MAC,当前IP地址: " & sIP

Exit Function

End If

CopyMemory myASTAT, myNcbncb_buffer, Len(myASTAT)

Dim sTemp As String

Dim i As Long

For i = 0 To 5

sTemp = Hex(myASTATadaptadapter_address(i))

If i = 0 Then

sRtn = IIf(Len(sTemp) < 2, "0" & sTemp, sTemp)

Else

sRtn = sRtn & Space(1) & IIf(Len(sTemp) < 2, "0" & sTemp, sTemp)

End If

Next

HeapFree GetProcessHeap(), 0, pASTAT

GetMACAddress = sRtn

End Function

%>

试试这个

/

  Project Name [java-projects]

  File Name      [comcessutilAuditUtiljava]

  Creation Date  [2016-11-28]

  <p/>

  Copyright© 2016 geyyang@hotmailcom All Rights Reserved

  <p/>

  Work hard, play harder, think big and keep fit

 /

package comcessutil;

import javaxservlethttpHttpServletRequest;

import javanetInetAddress;

import javanetNetworkInterface;

import javanetSocketException;

import javanetUnknownHostException;

/

  审计工具类<br />

 

  @author <a href="mailto:geyyang@hotmailcom">杨舸</a>

  @version 100

  @since jdk 18

 /

public final class AuditUtil {

    /

      获得远程客户端的IP地址<br />

     

      @param request HttpRequest

      @return 远程客户机的IP地址

     /

    public static String getRemoteAddress(HttpServletRequest request) {

        InetAddress hostAndIP = null;

        try {

            hostAndIP = InetAddressgetLocalHost();

        } catch (UnknownHostException e) {

            eprintStackTrace();

        }

        return hostAndIPtoString();

    }

    /

      获得远程客户端的Mac地址<br />

     

      @return 远程客户机的Mac地址

     /

    public static String getMACAddress() {

        byte[] mac = new byte[0];

        try {

            InetAddress hostAndIP = InetAddressgetLocalHost();

            mac = NetworkInterfacegetByInetAddress(hostAndIP)getHardwareAddress();

        } catch (SocketException e) {

        } catch (UnknownHostException e) {

        }

        StringBuffer buffer = new StringBuffer("");

        for (int i = 0; i < maclength; i++) {

            if (i != 0) {

                bufferappend("-");

            }

            //字节转换为整数

            int temp = mac[i] & 0xff;

            String str = IntegertoHexString(temp);

            if (strlength() == 1) {

                bufferappend("0" + str);

            } else {

                bufferappend(str);

            }

        }

        return buffertoString();

    }

}

  js是在客户端运行的,asp代码是在服务器运行的, 没有办法获得客户端的mac。

  用javascript就可以,参考代码如下:

function getMac(){

      var locator = new ActiveXObject ("WbemScriptingSWbemLocator");

      var service = locatorConnectServer("");

      var properties = serviceExecQuery("Select  from Win32_NetworkAdapterConfiguration Where IPEnabled =True");

      var e = new Enumerator (properties);

      {

            var p = eitem();

            var mac = pMACAddress;

            return mac

      }

}

 

alert(getMac())

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么查看连接路由器的各个客户端的MAC地址

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情