Jawaban:
Berapa banyak yang Anda ketahui tentang LAN yang dimaksud? Saya berasumsi Anda tidak tahu apa-apa hanya terhubung ke kabel atau terhubung ke wifi.
-sP
seandainya beberapa host tidak merespons ping (lihat dokumentasi ). Sangat penting bahwa nmap hanya berfungsi jika pengaturan dan rute jaringan Anda sudah benar.Beberapa administrator sistem (kebanyakan?) Tidak menyukai beberapa metode di atas, jadi pastikan itu dibolehkan (misalnya itu jaringan Anda). Perhatikan juga bahwa firewall Anda sendiri dapat mencegah beberapa metode ini (bahkan mendapatkan IP dengan DHCP) jadi periksalah peraturan Anda terlebih dahulu.
Nmap
Inilah cara melakukan penemuan host dasar dengan nmap . Seperti yang saya katakan konfigurasi jaringan Anda harus benar ketika Anda mencoba ini. Katakanlah Anda 192.168.0.50 Anda berada di subnet / 24. Alamat MAC Anda adalah sesuatu yang diizinkan untuk terhubung, dll. Saya suka menjalankan wireshark untuk melihat apa yang saya lakukan.
Pertama saya ingin mencoba pemindaian daftar, yang hanya mencoba menyelesaikan catatan PTR dalam DNS untuk alamat IP yang ditentukan. Tidak mengirim apa pun ke host sehingga tidak ada jaminan itu benar-benar terhubung atau dihidupkan tetapi ada peluang bagus. Mode ini jelas membutuhkan server DNS yang bersedia berbicara dengan Anda.
nmap -vvv -sn -sL 192.168.1.0/16
Ini mungkin tidak menemukan apa pun atau mungkin memberi tahu Anda bahwa setiap IP sudah habis.
Maka saya biasanya pergi untuk memindai ARP. Ini mengirimkan permintaan ARP (Anda melihatnya seperti "Who has <target IP>? Tell <your IP>"
di wireshark). Ini cukup dapat diandalkan karena tidak ada yang menyaring atau memalsukan ARP. Kerugian utama adalah ia hanya berfungsi pada subnet Anda.
nmap -vvv -sn -PR 192.168.1.0/24
Jika Anda ingin memindai sesuatu di belakang router atau firewall, gunakan SYN dan ACK scan. SYN memulai koneksi TCP dan Anda mendapatkan RST atau SYNACK sebagai respons. Either way tuan rumah sudah habis. Anda mungkin mendapatkan komunikasi ICMP dilarang atau sesuatu seperti itu jika ada firewall. Sebagian besar waktu jika firewall menyaring paket Anda, Anda tidak akan mendapatkan apa-apa. Beberapa jenis firewall hanya memfilter paket TCP SYN dan membiarkan setiap paket TCP lainnya lewat. Inilah sebabnya mengapa pemindaian ACK bermanfaat. Anda akan mendapatkan RST sebagai respons jika host sudah habis. Karena Anda tidak tahu firewall apa yang ada, cobalah keduanya.
nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24
Maka tentu saja Anda dapat menggunakan scan berbasis ICMP dengan -PE -PP -PM.
Metode lain yang menarik adalah -PO dengan nomor protokol yang tidak ada. Seringkali hanya TCP dan UDP yang dipertimbangkan pada firewall dan tidak ada yang menguji apa yang terjadi ketika Anda mencoba beberapa protokol yang tidak diketahui. Anda mendapatkan protokol ICMP yang tidak dapat dijangkau jika host sudah habis.
nmap -vvv -sn -PO160 10.1.2.0/24
Anda juga dapat memberitahu nmap untuk melewati pencarian host (-Pn) dan melakukan portscan pada setiap host. Ini sangat lambat tetapi Anda mungkin menemukan host lain yang tidak ditemukan oleh host karena beberapa alasan.
Saya suka ip neigh
perintah, yang datang dengan IpRoute2.
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
Namun, saya pikir itu hanya berfungsi dengan arp
node -able.
man ip
menunjukkan apa yang dilakukan tetangga atau tetangga.
Instal nmap dan jalankan nmap -sP <mynetwork>
.
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds
.
nmap -sP 192.168.0.*
dan mengembalikan daftar output dari bentuk:Nmap scan report for justin-desktop2 (192.168.0.61)
Host is up (0.00056s latency).
Host 192.168.2.23 is up (0.0088s latency).
.
Untuk kedua jawaban: TIDAK diperlukan nmap / TIDAK diperlukan sudo .
$ arp
Membangun xenoterracides menjawab dengan ip neigh
dan hosts
:
#!/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))
Unduh via
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py