Nmap: temukan IP gratis dari jangkauan

14

Apakah ada cara untuk memindai IP gratis di jaringan? Saya menggunakan nmap -sP 192.168.1.0/24tetapi ini benar-benar menunjukkan host yang naik.

HTF
sumber
10
tidak menanggapi ping tidak selalu berarti tidak digunakan.
Berikan
1
Anda menginginkan pemindai IPAM, bukan nmap.
TheCleaner
2
@Grant Nmap's scan penemuan host (kadang-kadang disebut "ping scan") mengirimkan banyak probe berbeda, tidak hanya ICMP Echo Requests. Untuk alamat pada tautan data yang sama, ia menggunakan permintaan ARP, yang pada dasarnya tidak mungkin diabaikan.
bonsaiviking
1
Anda juga harus ingat bahwa host yang tidak dinyalakan juga akan muncul karena tidak memiliki alamat IP.
Tero Kilkanen

Jawaban:

26

Menggunakan Nmap seperti ini adalah cara yang cukup akurat untuk melakukan apa yang Anda minta, asalkan beberapa prasyarat benar:

  1. Anda harus menjalankan pemindaian sebagai root (atau Administrator di Windows) untuk mengirim permintaan ARP, bukan koneksi TCP. Kalau tidak, pemindaian dapat melaporkan alamat sebagai "down" ketika itu hanya firewall.
  2. Anda hanya dapat melakukan ini dari sistem pada tautan data yang sama (lapisan 2) karena rentang alamat yang Anda pindai. Jika tidak, Nmap perlu menggunakan probe lapisan jaringan yang dapat diblokir oleh firewall.

Untuk mendapatkan alamat "tersedia", Anda perlu mendapatkan daftar alamat yang dilaporkan Nmap sebagai "turun." Anda dapat melakukan ini dengan perintah awk sederhana:

sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

Ringkasan opsi Nmap yang digunakan:

  • Saat Anda menggunakan -vopsi, Nmap akan mencetak alamat yang ditemukannya sebagai "turun" di samping yang "naik".
  • Alih-alih -sP, saya menggantikan ejaan yang lebih baru -sn, yang masih melakukan pemindaian yang sama, tetapi berarti "melewatkan pemindaian port" alih-alih "Pemindaian ping" yang menyesatkan (karena fase pencarian host tidak selalu berarti pemindaian Echo ICMP atau Ping ).
  • The -npilihan melompat reverse DNS lookup, yang membeli Anda sedikit waktu, karena Anda tidak tertarik nama tetapi hanya alamat IP.
  • The -oGpilihan memberitahu Nmap untuk output grepable format, yang lebih mudah untuk awk untuk proses. Argumen " -" memberitahukannya untuk mengirimkan hasil ini ke stdout.

Perintah awk kemudian mencari "Status: Down" dan mencetak bidang kedua, yang berisi alamat IP.

Tentu saja, jika Anda memiliki akses ke sakelar yang menjalankan sakelar atau penyewaan server DHCP, Anda bisa mendapatkan jawaban ini jauh lebih resmi tanpa melakukan pemindaian yang dapat memicu alarm keamanan.

bonsaiviking
sumber
1
Benar-benar bookmark ini untuk penggunaan masa depan dan bahkan bukan pertanyaan saya :)
MartinC
1

Tidak yakin tentang n-map, tetapi orang bisa berasumsi bahwa jika Anda menulis skrip ping yang mengirim 1 ping ke setiap alamat bahwa setiap host yang kembali dengan "destination unreachable" tidak dihuni, dan apa pun yang kembali "minta time out" ditempati tetapi tidak menanggapi ping. Perbedaan antara dua respons adalah bahwa "tujuan tidak terjangkau" tidak menerima respons terhadap permintaan ARP-nya. "Request time out" berarti sesuatu merespons permintaan ARP, tetapi tidak pada paket ICMP.

MartinC
sumber
Ketika dijalankan dengan hak akses root, Nmap hanya melakukan permintaan ARP dan melaporkan alamat yang merespons.
bonsaiviking
0

Inilah hal yang sama di PowerShell ....

((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}
gsarnold
sumber
0

Ini satu lagi yang terinspirasi oleh Anders Larsson

untuk ip di 172.18.5. {129..254}; do {ping -c 1 -W 1 $ ip; } &> / dev / null || gema $ ip & selesai | menyortir

Yang artinya: "Cobalah untuk melakukan ping semua Ips dalam kisaran. Jika" ping "gagal mencetak IP itu"

Jika kamu melakukan

nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

Bekerja cepat, tetapi saya perhatikan beberapa host yang dilaporkan sebagai "Down" sebenarnya "Up"

Radu Gabriel
sumber