Ich bin ein Webentwickler, der versucht, die Sicherheit besser in den Griff zu bekommen. Ich versuche einen Weg zu finden (unter Linux/Debian-basierten Distributionen), um alle Computer in demselben LAN aufzulisten, in dem sich mein Netbook befindet. Ich habe "arp -n" ausprobiert, aber ich glaube nicht, dass es eine vollständige Liste ist, da sich mein iPhone auf demselben WLAN-Router befindet wie mein Netbook, und das ist nicht aufgetaucht. Gibt es eine bessere Möglichkeit, eine vollständige Liste der Computer abzurufen, die alle dasselbe Gateway gemeinsam nutzen?
Dies ist, was ich benutze, nmap und eine Adresse unter Verwendung der CIDR-Blocknotation des Netzwerks, das Sie scannen möchten. Zuerst müssen Sie nmap installieren, da es möglicherweise nicht bei Ihrer Distribution vorinstalliert ist. Auf Ubuntu:
Sudo apt-get install nmap
Bestimmen Sie als Nächstes Ihre Netzwerkadresse mit ifconfig:
ifconfig
ifconfig-Ausgabe für die Schnittstelle, die ich scannen möchte:
wlan1 Link encap:Ethernet HWaddr 00:1f:3b:03:d2:bf
inet addr:192.168.1.104 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21f:3bff:fe03:d2bf/64 Scope:Link
...
Verwenden Sie die inet-Adresse und die Maske, um die Netzwerkadresse in CIDR-Notation zu ermitteln. Weitere Informationen finden Sie unter CIDR hier . Die adresse ist:
192.168.1.0/24
Führen Sie nmap mit dem Parameter -sP aus. Dabei wird nur geprüft, ob der Host online ist:
Sudo nmap -sP 192.168.1.0/24
die Ausgabe von nmap sieht ungefähr so aus:
Starting Nmap 5.21 ( http://nmap.org ) at 2014-12-09 10:52 EST
Nmap scan report for 192.168.1.1
Host is up (0.013s latency).
MAC Address: -MAC ADDRESS- (Cameo Communications)
...
Nmap done: 256 IP addresses (5 hosts up) scanned in 3.26 seconds
Das war's, wenn Sie mehr Hilfe mit nmap benötigen, lesen Sie die offizielle Dokumentation zu nmap oder führen Sie Folgendes aus:
nmap --help
arp -n
zeigt Ihnen nur Computer in Ihrem LAN an, mit denen Ihr Computer bereits gesprochen hat. Sie können diese Liste besser füllen, indem Sie die Broadcast- und All-Hosts-Multicast-Adressen anpingen:
Die (binäre) Broadcast-Adresse für "Alle". Beachten Sie, dass die meisten IP-Stacks dies in die Subnetz-Broadcast-Adressen für alle Subnetze übersetzen, an die Sie angeschlossen sind:
ping 255.255.255.255
Die Subnetz-Broadcast-Adresse für Ihr aktuelles Subnetz. Angenommen, Sie sind auf 192.168.1.0/24:
ping 192.168.1.255
Die Multicast-Adresse "Alle Hosts". Ich mag dieses Modell sehr, da es mit größerer Wahrscheinlichkeit Hosts findet, die für andere IP-Subnetze konfiguriert sind und an dasselbe Ethernet-LAN wie Sie angeschlossen sind:
ping 224.0.0.1
Beachten Sie, dass diese Methode und die anderen Methoden, die ich bisher in anderen Antworten erwähnt habe, nur nach IP-erreichbaren Hosts im aktuellen Netzwerk suchen. Das ist wahrscheinlich alles, worüber Sie sich Gedanken machen müssen, aber es ist möglich, dass ein Angreifer ein Netzwerk ausspioniert oder schlechte Dinge tut, ohne über IP sichtbar zu sein.
ip neigh
und hosts
. NO nmap erforderlich/NO Sudo erforderlich .
Darauf aufbauend können Sie ein Python-Skript erstellen:
#!/usr/bin/env python
"""List all hosts with their IP adress of the current network."""
import os
out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
ip = line.split(' ')[0]
h = os.popen('Host {}'.format(ip)).read()
hostname = h.split(' ')[-1]
print("{:>3}: {} ({})".format(i, hostname.strip(), ip))
Herunterladen über
wget https://Gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
(oder einfach arp
... das habe ich vorher nicht gesehen)
Sie können beispielsweise versuchen, ein bestimmtes Subnetz mit einem kleinen Linux-Shell-Skript zu pingen
$ for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done
Ich fand die vorhandenen Antworten nicht zufriedenstellend genug, also dachte ich, ich würde es versuchen. Immerhin schlägt das FAQ vor, Kontext für Links bereitzustellen.
nmap
ist toll, wenn auch etwas verwirrend zu bedienen. Hier ist etwas, das ich ausführe, um lokale Netzwerkgeräte zu entdecken, die größtenteils kopier- und einfügefähig sind. nmap -sP
(oder nmap -sn
) scannt mit ping . Es gibt andere Optionen für die 'Hosterkennung', z. B. mit nmap -sL
oder nmap -Pn
.
[email protected]:~$ # my wireless interface is listed as wlp3s0. Yours could be wlan0 or eth1.
[email protected]:~$ ip addr show wlp3s0 | grep "inet "
inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
[email protected]:~$ arp -a
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
[email protected]:~$ nmap -sP 172.18.72.0/24
Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-12-17 20:08 EST
Nmap scan report for 172.18.72.2
Host is up (0.017s latency).
<... 15 IP addresses snipped ...>
Nmap scan report for 172.18.72.253
Host is up (0.13s latency).
Nmap done: 256 IP addresses (17 hosts up) scanned in 5.74 seconds
[email protected]:~$ arp -a | sort -n -k 1,1
? (172.18.72.126) at ec:35:86:4a:37:d2 [ether] on wlp3s0
? (172.18.72.148) at 10:9a:dd:b8:79:71 [ether] on wlp3s0
? (172.18.72.178) at 9c:20:7b:7b:08:ba [ether] on wlp3s0
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
? (172.18.72.253) at b8:78:2e:19:05:0b [ether] on wlp3s0
? (172.18.72.2) at 00:14:1c:da:e1:c2 [ether] on wlp3s0
? (172.18.72.40) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0
? (172.18.72.43) at d8:c7:c8:ce:0f:60 [ether] on wlp3s0
? (172.18.72.44) at d8:c7:c8:ce:0f:68 [ether] on wlp3s0
? (172.18.72.45) at 6c:f3:7f:c6:71:16 [ether] on wlp3s0
? (172.18.72.46) at 6c:f3:7f:c4:4c:b3 [ether] on wlp3s0
? (172.18.72.47) at d8:c7:c8:ca:f9:88 [ether] on wlp3s0
? (172.18.72.48) at 24:de:c6:c6:b6:78 [ether] on wlp3s0
? (172.18.72.49) at 24:de:c6:c6:b6:e6 [ether] on wlp3s0
? (172.18.72.51) at 00:9c:02:d0:4c:4e [ether] on wlp3s0
? (172.18.72.54) at 00:23:76:99:99:bf [ether] on wlp3s0
? (172.18.72.62) at 8c:70:5a:0d:06:18 [ether] on wlp3s0
? (172.18.72.63) at 7c:e9:d3:51:86:55 [ether] on wlp3s0
? (172.18.72.64) at a0:88:b4:47:eb:c8 [ether] on wlp3s0
[email protected]:~$ #ifconfig | grep broadcast
[email protected]:~$ ip address show wlp3s0 | grep brd
link/ether 00:1e:65:bf:1b:42 brd ff:ff:ff:ff:ff:ff
inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
[email protected]:~$ ping -b -c 3 -i 20 172.18.75.255
<... similar output to above ...>
Ich würde mich freuen zu wissen, ob es effektivere Möglichkeiten gibt. Bis dahin bleibe ich dabei.
So scannen Sie den Status eines IP-Adressbereichs:
Sudo nmap -sn 192.168.1.2-20
Woher:
-sn: Ping Scan - disable port scan
Hinweis:
-sn
als -sP
bezeichnet.Ich habe das unter Mac OS X gemacht (das auf BSD basiert). Ich bin nicht sicher, ob die Linux-Version irgendwelche Unterschiede aufweist.
Hunt ist ein Befehlszeilenprogramm, mit dem eine Liste von Computern erstellt werden kann, die Informationen über das Netzwerk senden. Es verwendet TCP-, UDP-, ICMP- und ARP-Daten, um eine Liste der aktiven MAC-Adressen in einem Netzwerk zu erstellen. Es ist ein passives Werkzeug, das durch Abhören des Kabels funktioniert.
Für eine kompaktere Liste der angeschlossenen Geräte:
nmap -sL 192.168.0.* | grep \(1
Erläuterung.
nmap -sL 192.168.0.*
listet alle IPs im Subnetz auf und markiert diejenigen, die den Namen haben:
Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for Android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255
Da alle interessanten Datensätze mit Klammern (
und Ziffer 1
beginnen, filtern wir das mit | grep \(1
(Backslash wird benötigt, um Klammern zu umgehen)
Skurril
Beachten Sie, dass nmap
bei zwei Geräten mit demselben Namen nur das Gerät anzeigt, das mit dem Router verbunden war last
1. Alternative Lösung, wenn Broadcasts und nmap
nicht verfügbar sind:
seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time=
arp -a
2a. oder fragen Sie einfach Ihren Domain Name Server :
seq 254| awk '{print "192.168.2."$1}' |nslookup | grep name
2b. ohne awk
echo -e 192.168.2.{1..10}"\n" |nslookup |grep name
pingt alle pingable Netzwerkgeräte im 192.168.2.0/24 Subnetz parallel an (um die Laufzeit zu verkürzen). Danach sollte arp
jedes Gerät anzeigen, das geantwortet hat.
prüft nicht auf aktive oder aktuelle Verbindungen, sondern listet alle Verbindungen auf, für die der lokale Domänendienst einen Eintrag führt, auch für wirklich alte.
Detailliertere Erklärung:
seq 254
zum Erstellen aller Nummern von 1 bis 254 (für alle Nummern von 100 bis 150: seq 100 150
)xargs
ruft ping
auf und ersetzt "IP" (-iIP
) durch die seq
uence-Nummer von stdin, sodass 192.168.2.IP für die erste seq
-Nummer in 192.168.2.1 geändert wird. -P
gibt an, wie viele ping
-Prozesse xargs
gleichzeitig starten sollen Gleiche Menge +1 wie Adressen (= 254) im Interesse.ping
mit der von xargs geänderten IP-Adresse (192.168.2.IP
) und nur einmaligem Ping (-c1
); Sie müssen denselben Bezeichner verwenden, der für xargs über dem Argument -i
angegeben wurde. In diesem Fall IP
grep time=
um jede zeile mit überflüssigen informationen zu entfernen, sind wir nur an antworten interessiert, die eine umlaufzeit angeben (= antwort bekommen)arp -a
, um gültige Namen (IP) -Paare anzuzeigenIch nenne dieses mein pingall Kommando und stelle es über einen Alias in ~/.bashrc
zur Verfügung:
alias pingall='seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time='