goodbytes
Goto Top

MAC-Adressen mit Host-Namen im LAN ermitteln

Hallo,
vielleicht hat das schon mal jemand gebraucht und ein Script liegen...
Ich möchte in regelmäßigen Abständen alle LAN-Bereiche unseres Netzwerks scannen (z.B. 172.50.1.1 bis 172.50.10.254) und in einer Textdatei speichern. Klar geht das mit arp, allerdings bekomme ich da ja nur alle Rechner zurück, wo ich bereits mal Kontakt hatte. Außerdem nicht den Hostnamen. Ich möchte eine Liste in dieser Form bekommen:

Den Hostnamen bekomme ich natürlich mittels "ping /a IP-Adresse". Müsste ich nur so in das Script/Batch einbinden...

PC-001;2C-60-0C-68-90-18
PC-005;B0-48-7A-80-F8-B1


Vielen Dank im Voraus!
Torsten

Content-ID: 284846

Url: https://administrator.de/contentid/284846

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

killtec
killtec 07.10.2015 um 10:09:15 Uhr
Goto Top
Hi,
wenn du Scannst, bist du auch unmittelbar mit den Rechnern in Kontakt und kannst dir das doch dann raus ziehen mittels arp.

Gruß
aqui
aqui 07.10.2015 aktualisiert um 10:54:22 Uhr
Goto Top
Am einfachsten machst du das mit dem Tool fing was es für alle verfügbaren OS gibt:
http://www.overlooksoft.com/download

Mit dem Output bekommst du zyklisch alle Macs und korrespondierende IPs in einem Segment. Über Router Grenzen hinweg funktioniert das logischerweise nicht, da du die Mac Adressen dann ja nicht mehr "siehst".
In dem Falle könnte man sich dann ganz einfach zyklisch via SNMP (Net-SNMP etc.) die ARP Table des Layer 3 Core Switches oder Routers ziehen. Hat dann aber den Nachteil das du damit dann nicht die Macs erfasst die nur lokal im Segment kommunizieren. Das geht dann nur mit fing.
kaiand1
kaiand1 07.10.2015 um 15:03:35 Uhr
Goto Top
Wenn du schlaue Switche hast kannst du darüber auch Abfragen und weiß auch über welchen Port die Angeschlossen sind.
Zudem dürftes du am DHCP auch sehen wenn "Fremde" im Netzwerk sind und eine IP Adresse haben wollen...
aqui
aqui 07.10.2015 aktualisiert um 15:49:51 Uhr
Goto Top
"Schlau" bedeutet hier das sie SNMP können sollten. face-wink
Zudem dürftes du am DHCP auch sehen wenn "Fremde" im Netzwerk sind und eine IP Adresse haben wollen...
Das ist natürlich Unsinn, denn als Fremder sniffert man erst mit dem Wireshark um zu sehen welches IP Netz dort im Segment verwendet wird und gibt sich dann eine statische IP um gar nicht erst im DHCP aufzutauchen und dem Admin dumm aufzufallen face-wink
Oder nutzt gleich ARP Spoofing um eine bekannte Mac zu kapern und den Traffic mitzuschneiden:
Netzwerk Management Server mit Raspberry Pi
kaiand1
kaiand1 07.10.2015 um 15:57:57 Uhr
Goto Top
Viele die nur Surfen wollen zb stecken den Lappy so an eine Buchse und lassen sich per DHCP eine IP zuweisen um schauen dann ob Internet geht..
Derjenige der aber was geziehlter vorhat udn Ahnung hat geht natürlich anders vor, der nimmt zb eine IP eines Druckers...
aqui
aqui 07.10.2015 aktualisiert um 16:01:27 Uhr
Goto Top
dann kann aber keiner Drucken und man fällt wieder dumm dem Admin auf face-wink
Er nimmt natürlich eine freie IP indem er vorher pingt ob die frei ist.
Richtige Netzwerk Admins unterbinden natürlich sowas indem sie Port Authentication mit 802.1x verwenden....
Aber zurück zum eigentlichen Thread Thema !
laster
laster 07.10.2015 um 19:41:46 Uhr
Goto Top
Hallo,

der Angry IP Scanner scannt Dein LAN und ermittelt auch die MAC pro gefundenen Host.
Das Programm (zumindest eine ältere Version) konnte auch als Befehlszeilenprogramm gestartet werden.
Dateiformat festlegen und ...
Es gibt bestimmt noch mehr "IP-Scanner", die genau Deinen Anforderungen erfüllen (z.B.: SoftPerfect Network Scanner ).
vG
LS
Friemler
Lösung Friemler 07.10.2015, aktualisiert am 20.10.2015 um 14:15:48 Uhr
Goto Top
Hallo Torsten,

wenn es auch ein Batchscript sein darf (und einfach nur um zu beweisen, dass es geht face-wink):

@echo off & setlocal

:: ----- Config ------
set "IPNet=172.50.1"  
set "HostStart=1"  
set "HostEnd=3"  
set "NumPings=1"  
set "WaitMs=100"  
set "OutFile=Protokoll.txt"  
:: --- Config End ----


:: ----- Init, don't touch! ----- 
set "Host="  
set "MAC="  
set "NotFound="  
:: ---------- Init End ----------

type NUL > "%OutFile%"  

for /l %%i in (%HostStart%, 1, %HostEnd%) do (
  call :DoPing "%IPNet%.%%i"  
)

exit /b 0



:DoPing
  for /f "tokens=1* delims=:" %%a in ('ping /n %NumPings% /w %WaitMs% /a %~1 ^| findstr /n "^"') do (  
    if "%%a" equ "2" (  
      for /f "tokens=5" %%c in ("%%b") do (  
        set "Host=%%c"  
      )

    ) else if "%%a" equ "3" (  
      set "NotFound="  
      
      echo "%%b" | find /i "Zeitüberschreitung der Anforderung" > NUL && (  
        set "NotFound=1"  
      ) || (
        echo "%%b" | find /i "Zielhost nicht erreichbar" > NUL && (  
          set "NotFound=1"  
        )
      )

    ) else if not defined NotFound (
      echo "%%b" | find /i "% Verlust" | find /i /v "100% Verlust" > NUL && (  
        call :DoARP "%~1" && (  
          call :WriteData
        )
      )
    )
  )
exit /b 0


:DoARP
  for /f "skip=3 tokens=2" %%d in ('arp -a %~1') do (  
    set "MAC=%%d"  
  )
if "MAC" neq "" (exit /b 0) else (exit /b 1)  


:WriteData
  >>"%OutFile%" echo %Host%;%MAC%  
  set "Host="  
  set "MAC="  
exit /b 0


Das Script benötigt bei mir in dieser Konfiguration für 3 IP-Adressen, von denen nur die erste vorhanden ist, 16 Sekunden - nicht besonders schnell, schon klar.

Den IP-Generator in den Zeilen 21 bis 23 musst Du für Deine Zwecke noch etwas ausbauen, da Du ja die letzten zwei Zifferngruppen der IP-Adresse variabel haben möchtest.

Gruß
Friemler
goodbytes
goodbytes 20.10.2015 aktualisiert um 14:17:32 Uhr
Goto Top
Was soll ich sagen, wow, ist ja der Hammer... Perfekt!

Vielen Dank, Friemler! face-smile
Vielen Dank auch an alle Anderen !!! face-smile
aqui
aqui 21.10.2015 um 21:16:13 Uhr
Goto Top
fing macht es bei ca. 20 IP Adressen in 2 Sekunden face-smile