MAC-Adresse der LAN-Verbindung auslesen?

  • Hallo Leute,

    gibt es die Möglichkeit nur die MAC-Adresse der LAN-Verbindung auszulesen?

    Vielen Dank im Voraus !

    Beste Grüße,
    Dino

    Einmal editiert, zuletzt von Dino (4. Februar 2010 um 13:49)

  • Hallo Dino,

    Zitat

    gibt es die Möglichkeit nur die MAC-Adresse der LAN-Verbindung auszulesen?


    Welche :?:

    Zitat

    MAC-Adresse >>aus Wikipedia, der freien Enzyklopädie<<

    Die MAC-Adresse (Media-Access-Control-Adresse, auch Ethernet-ID oder Airport-ID bei Apple oder Physikalische Adresse bei Microsoft genannt) ist die Hardware-Adresse jedes einzelnen Netzwerkadapters, die zur eindeutigen Identifizierung des Geräts in einem Rechnernetz dient.

    Die deiner Netzwerkkarte, die des (über LAN) verbundenen Rechners, oder gar die der beteiligten Router, Switches

    mfg (Auto)Bert

  • Hallo blubbstar und AutoBert,

    ich meine nur die, die übers LAN verbundenen Rechner.

    Spoiler anzeigen
    [autoit]

    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

    [/autoit] [autoit][/autoit] [autoit]

    C:\Dokumente und Einstellungen\Dino>ipconfig /all

    [/autoit] [autoit][/autoit] [autoit]

    Windows-IP-Konfiguration

    [/autoit] [autoit][/autoit] [autoit]

    Hostname. . . . . . . . . . . . . : pc2089
    Primäres DNS-Suffix . . . . . . . : bogie.intern
    Knotentyp . . . . . . . . . . . . : Hybrid
    IP-Routing aktiviert. . . . . . . : Nein
    WINS-Proxy aktiviert. . . . . . . : Nein
    DNS-Suffixsuchliste . . . . . . . : bogie.intern
    fritz.box

    [/autoit] [autoit][/autoit] [autoit]

    Ethernetadapter Drahtlose Netzwerkverbindung:

    [/autoit] [autoit][/autoit] [autoit]

    Verbindungsspezifisches DNS-Suffix: fritz.box
    Beschreibung. . . . . . . . . . . : Intel(R) Wireless WiFi Link 4965AGN
    Physikalische Adresse . . . . . . : 00-25-4C-0A-4B-13
    DHCP aktiviert. . . . . . . . . . : Ja
    Autokonfiguration aktiviert . . . : Ja
    IP-Adresse. . . . . . . . . . . . : 192.168.178.67
    Subnetzmaske. . . . . . . . . . . : 255.255.255.0
    Standardgateway . . . . . . . . . : 192.168.178.1
    DHCP-Server . . . . . . . . . . . : 192.168.178.1
    DNS-Server. . . . . . . . . . . . : 192.168.178.1
    Lease erhalten. . . . . . . . . . : Mittwoch, 3. Februar 2010 23:10:42
    Lease läuft ab. . . . . . . . . . : Samstag, 13. Februar 2010 23:10:42

    [/autoit] [autoit][/autoit] [autoit]

    Ethernetadapter LAN-Verbindung:

    [/autoit] [autoit][/autoit] [autoit]

    Medienstatus. . . . . . . . . . . : Es besteht keine Verbindung
    Beschreibung. . . . . . . . . . . : Intel(R) 82566MM Gigabit Network Con
    nection
    Physikalische Adresse . . . . . . : 00-1B-29-4C-0F-18

    [/autoit]

    Viele Grüße,
    Dino

    • Offizieller Beitrag

    Nimm dafür das Tool GetMAC.

    Edit: Oder so:

    [autoit]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colAdapters = $objWMIService.ExecQuery _
    ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    $n = 1
    $str = ''
    For $objAdapter in $colAdapters
    $str &= "Network Adapter " & $n & @LF
    $str &= "=================" & @LF
    $str &= " Description: " & $objAdapter.Description & @LF
    $str &= " Physical (MAC) address: " & $objAdapter.MACAddress & @LF
    $str &= " Host name: " & $objAdapter.DNSHostName & @LF
    $n += 1
    Next
    ConsoleWrite($str & @CRLF)

    [/autoit]
  • Mir ist immer noch nicht klar was er will.
    Will er die MAC-Adressen aller physischen Netzwerkadapter?
    Wenn ja will er da alle haben egal ob die verbunden sind oder nicht?

    Weil bei deiner Möglichkeit Bugfix findet er bei mir z.B. nur den Wireless-Controller und den (aktivierten) LAN-Controller nicht weil dieser keine Netzwerkverbindung hat.

    Wenn es wirklich direkt um alle physischen Netzwerkadapter geht dann mal hier 2 Möglichkeiten über WMI bzw. über ipconfig:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $aNetAdapters = _GetMacAdressesWMI()
    _ArrayDisplay($aNetAdapters)

    [/autoit] [autoit][/autoit] [autoit]

    $aNetAdapters = _GetMacAdressesCMD()
    _ArrayDisplay($aNetAdapters)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;---------------------------- Funktionen -----------------------------------------------------------
    Func _GetMacAdressesWMI()
    Local $aReturn[1][2], $bY = False

    [/autoit] [autoit][/autoit] [autoit]

    If IsDeclared("oWMI") <> 1 Then
    Local $oWMI = ObjGet("winmgmts:\\localhost\root\CIMV2")
    If @error Or Not IsObj($oWMI) Then Return SetError(1, @error, 0)
    EndIf
    Local $aItems = $oWMI.ExecQuery("SELECT MACAddress, Name FROM Win32_NetworkAdapter " & _
    "WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> " & _
    "'Microsoft'))", "WQL", 0x10 + 0x20)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($aItems) Then
    For $x In $aItems
    If $bY Then
    ReDim $aReturn[UBound($aReturn) + 1][2]
    Else
    $bY = True
    EndIf
    $aReturn[UBound($aReturn) - 1][0] = $x.Name
    $aReturn[UBound($aReturn) - 1][1] = StringReplace($x.MACAddress, ':', '-')
    Next
    Return $aReturn
    Else
    Return SetError(2, 0, 0)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetMacAdressesCMD()
    $sCMD = _GetDOSReturn("ipconfig", "/all")
    $aRegExRet = StringRegExp($sCMD, "(?s)[^-](?:Beschreibung|Description)[\.\s]+?:\s([\w\s]+).+?[^-]([0-9A-F]{2}(?:-[0-9A-F]{2}){5})[^-]", 3)
    If @error Then
    Return SetError(1,@error, '')
    Else
    Local $aReturn[UBound($aRegExRet)/2][2]

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 To UBound($aReturn)-1
    $aReturn[$i][0] = $aRegExRet[$i*2]
    $aReturn[$i][1] = $aRegExRet[$i*2+1]
    Next
    Return $aReturn
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetDOSReturn($sCMD, $sParameter = '')
    Local $sPara = '', $sReturn = '', $sLine
    If $sParameter <> '' Then $sPara = ' ' & $sParameter
    Local $iPID = Run($sCMD & $sPara, '', @SW_HIDE, 2)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $sLine = StdoutRead($iPID)
    If @error Then ExitLoop
    $sReturn &= $sLine
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Return $sReturn
    EndFunc
    ;------------------------------------------------------------------------------------------------

    [/autoit]
  • Wenn du die IP weißt so:

    Spoiler anzeigen
    [autoit]

    ;######################################################################################
    ;# Ermittelt die MACAdresse bei gegebener IP
    ;#
    ;# Parameter: $sIP = IP-Adresse
    ;# $seperator = Trennzeichen, 0 für keins, Standard: ":"
    ;#
    ;# Rükgabe: Macadresse in der Form xx:xx:xx:xx:xx:xx
    ;# 0 = Fehler: Ungültige IP oder MAC-Adresse konnte nicht ermittelt werden
    ;#
    ;# Autor: unbekannt, Modifiziert von Bitboy
    ;######################################################################################
    Func _GetMACFromIP($sIP, $seperator=":")
    Local $MAC, $MACSize
    Local $i, $s, $r, $iIP
    $seperator = String($seperator)
    If $seperator = "" Then
    $seperator = ":"
    ElseIf $seperator = "0" Then
    $seperator = ""
    EndIf
    $MAC = DllStructCreate("byte[6]")
    $MACSize = DllStructCreate("int")
    DllStructSetData($MACSize, 1, 6)
    $r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
    $iIP = $r[0]
    $r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize))
    $s = ""
    ;MsgBox(0,"debug","SEP: " & $seperator)
    For $i = 0 To 5
    If $i Then $s = $s & $seperator
    $s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
    Next
    If $s = "00" & $seperator & "00" & $seperator & "00" & $seperator & "00" & $seperator & "00" & $seperator & "00" Then $s = 0
    Return $s
    EndFunc ;==>_GetMACFromIP

    [/autoit]