2011-07-15 17:51:44 +0000 2011-07-15 17:51:44 +0000
65
65

Toon lijst van computers op een LAN in Linux

Ik ben een webdeveloper die probeert een beter beeld te krijgen van de beveiliging. Ik probeer een manier te vinden (op Linux/Debian gebaseerde distro’s) om een lijst te maken van alle computers op hetzelfde LAN waar mijn netbook op staat. Ik heb “arp -n” geprobeerd, maar ik heb het gevoel dat het geen complete lijst is, omdat mijn iPhone op dezelfde wi-fi router staat als mijn netbook, en dat kwam niet ter sprake. Is er een betere manier om een volledige lijst te krijgen van machines die allemaal dezelfde gateway delen?

Respostas (11)

61
61
61
2011-07-15 17:55:50 +0000

Haal nmap . Het is het programma Trinity dat in The Matrix wordt gebruikt en u kunt een scan uitvoeren om alle apparaten te vinden die zijn aangesloten op het LAN waarop u zich bevindt en meer. Hier is de referentiegids.

41
41
41
2014-12-09 15:56:20 +0000

Dit is wat ik gebruik, nmap, en een adres met behulp van CIDR bloknotatie van het netwerk dat je wilt scannen. Eerst moet je nmap installeren omdat het misschien niet vooraf geïnstalleerd is bij je distro. Op Ubuntu:

sudo apt-get install nmap

Vervolgens zoek je het netwerkadres uit met ifconfig:

ifconfig

ifconfig uitvoer voor de interface die ik wil scannen:

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
          ...

Gebruik de inet addr en Mask om het netwerkadres in CIDR-notatie te achterhalen, meer op CIDR hier . Het adres is:

192.168.1.0/24

Run nmap met behulp van -sP parameter, die niet verder gaat dan controleren of de host online is:

sudo nmap -sP 192.168.1.0/24

nmap uitvoer zal er zo uitzien:

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

Dat is het, als je meer hulp nodig hebt met nmap, zie de nmap officiële documentatie , of voer uit:

nmap --help
``` &001
18
18
18
2011-07-15 19:12:18 +0000

arp -n toont u alleen machines op uw LAN waarmee uw machine al gesproken heeft. U kunt die lijst beter laten bevolken door de uitzendings- en all-hosts multicastadressen te pingen:

De “all ones” (in binair) uitzendadres. Merk op dat de meeste IP stacks dit zullen vertalen naar de subnet broadcast adressen voor alle subnetten waar je aan verbonden bent:

ping 255.255.255.255

Het subnet broadcast adres voor je huidige subnet. Dus in de veronderstelling dat je op 192.168.1.0/24 staat:

ping 192.168.1.255

Het “all hosts” multicast-adres. Ik vind deze veel leuker omdat het waarschijnlijker is dat er hosts worden gevonden die geconfigureerd zijn voor andere IP subnetten, die toevallig verbonden zijn met hetzelfde Ethernet LAN als jij:

ping 224.0.0.1

Merk op dat deze methode, en de andere methoden die ik tot nu toe in andere Antwoorden heb gezien, alleen zoeken naar IP-bereikbare hosts op het huidige netwerk. Dat is waarschijnlijk het enige waar je om moet geven, maar het is mogelijk voor een aanvaller om op een netwerk te snuffelen, of slechte dingen te doen, zonder zichtbaar te zijn via IP.

8
8
8
2017-04-03 21:54:39 +0000

ip neigh en hosts. NO nmap vereist / GEEN sudo vereist.

Voortbouwend hierop kan je een Python script bouwen:

#!/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))

Download via

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py

(of gewoon arp … dat heb ik nog niet eerder gezien)

4
4
4
2016-05-10 08:21:24 +0000

Je zou kunnen proberen een bepaald subnet te pingen met een klein linux-shell-script bijvoorbeeld

$ 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
4
4
4
2013-12-18 01:44:36 +0000

Ik vond de bestaande antwoorden niet bevredigend genoeg, dus ik dacht dat ik het maar eens zou proberen. Immers, de FAQ stelt voor om context voor links .

nmap is geweldig, als het een beetje verwarrend is om te gebruiken. Hier is iets wat ik probeer te ontdekken op lokale netwerkapparaten die meestal kopieer-plakbaar zijn. nmap -sP (of nmap -sn) scant door pingelen . Er zijn andere opties voor ‘host discovery’, zoals met nmap -sL of nmap -Pn.

Way #1.

ehtesh@x200arch:~$ # my wireless interface is listed as wlp3s0. Yours could be wlan0 or eth1.
ehtesh@x200arch:~$ ip addr show wlp3s0 | grep "inet "
    inet 172.18.72.53/22 brd 172.18.75.255 scope global wlp3s0
ehtesh@x200arch:~$ arp -a
? (172.18.72.1) at c8:4c:75:76:bd:74 [ether] on wlp3s0
ehtesh@x200arch:~$ 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
ehtesh@x200arch:~$ 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

Way #2. Ik weet dat dit werkt, maar ik kan niet zeggen of dit de juiste manier is.

ehtesh@x200arch:~$ #ifconfig | grep broadcast
ehtesh@x200arch:~$ 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
ehtesh@x200arch:~$ ping -b -c 3 -i 20 172.18.75.255
<... similar output to above ...>

Ik zou graag willen weten of er effectievere manieren zijn. Tot die tijd blijf ik hier bij.

3
3
3
2011-07-15 18:16:48 +0000

Hunt ](http://linux.die.net/man/1/hunt) is een commandoregeltool dat in staat is om een lijst van machines op te stellen terwijl ze via het netwerk uitzenden voor informatie. Het gebruikt TCP-, UDP-, ICMP- en ARP-gegevens om een lijst van actieve MAC-adressen op een netwerk op te bouwen. Het is een passief gereedschap dat werkt door te luisteren op de draad.

3
3
3
2019-05-23 17:18:32 +0000

U kunt fping sudo apt-get install fping gebruiken (in debian-achtige OS’s).

fping is vergelijkbaar met ping, maar presteert veel beter bij het pingen van meerdere hosts. De vlag -r 1 vertelt fping om slechts één ronde te presteren. Het 2>1 deel laat grep toe om de output te filteren.

$ fping -g -r 1 192.168.1.0/24 2>1 | grep "alive"

Er is ook een interessante vlag voor nmap waarmee je de MAC-leverancier kunt zien - indien bekend. Gebruik met sudo om de MAC adressen te zien.

192.168.1.1 is alive
192.168.1.10 is alive
192.168.1.15 is alive
192.168.1.27 is alive

Je zou bijvoorbeeld krijgen:

$ sudo nmap -sP 192.168.1.0/24
3
3
3
2017-11-08 13:22:31 +0000

1. Alternatieve oplossing als uitzendingen en nmap niet beschikbaar zijn:

seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time=
arp -a

2a. of vraag uw domeinnaamserver :

seq 254| awk '{print "192.168.2."$1}' |nslookup | grep name

2b. zonder awk

echo -e 192.168.2.{1..10}"\n" |nslookup |grep name
  1. pingt alle pingable Netwerk-Devices in het 192.168.2.0/24 subnet parallel (om de looptijd te verkorten). Daarna zou arp elk apparaat moeten weergeven, dat antwoordde.

  2. controleert niet op actieve of huidige verbindingen, maar geeft een lijst van alle verbindingen die de lokale domeindienst onderhoudt, zelfs echt oude.

Meer gedetailleerde uitleg:

  • seq 254 om alle nummers van 1 tot 254 aan te maken (voor alle nummers van 100 tot 150: seq 100 150)
  • xargs calls ping en vervangt “IP” (-iIP) door het sequence nummer van stdin, dus 192. 168.2.IP verandert in 192.168.2.1 voor het eerste seq nummer, -P specificeert het aantal gelijktijdige ping processen dat xargs moet starten, ik kies hetzelfde bedrag +1 als adressen (=254) die ik geïnteresseerd ben.
  • ping met het ip-adres gewijzigd door xargs (192.168.2.IP) en slechts één keer ping (-c1); u moet dezelfde identifier gebruiken als gespecificeerd voor xargs over het -i argument in dit geval IP
  • grep time= om elke regel met overbodige informatie te verwijderen, we zijn alleen geïnteresseerd in antwoorden, die een round-trip tijd geven (=antwoord ontvangen)
  • arp -a om geldige naam(ip) paren

weer te geven Ik noem dit mijn pingall commando en heb het beschikbaar gemaakt over een alias in ~/.bashrc:

alias pingall='seq 254 | xargs -iIP -P255 ping -c1 192.168.2.IP |grep time='
3
3
3
2016-07-25 17:31:07 +0000

Om de status van een reeks IP-adressen te scannen, is dit leuk en eenvoudig:

sudo nmap -sn 192.168.1.2-20

Waar:

-sn: Ping Scan - disable port scan

Noot:

  • In eerdere uitgaven van Nmap, -sn stond -sP

ik deed dit op Mac OS X (dat gebaseerd is op BSD). Ik weet niet zeker of de Linux versie enige verschillen heeft.

2
2
2
2016-10-20 10:28:47 +0000

Voor een meer compacte lijst van aangesloten apparaten:

nmap -sL 192.168.0.* | grep \(1

Uitleg.

nmap -sL 192.168.0.* geven alle IP’s in subnetwerk weer en markeren die, die naam hebben:

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

Aangezien alle interessante records beginnen met haakjes ( en cijfer 1, filteren we daarvoor met | grep \(1 (backslash is nodig om aan haakjes te ontsnappen)

Quirk Pas op dat als twee apparaten dezelfde naam hebben, nmap alleen het apparaat laat zien, dat met de router was verbonden laatst