Nmap ile Yazıcıları Bul


Yanıtlar:


37

Herhangi bir nedenden dolayı OS Parmak İzi yapmaya istekliyseniz, daha hedefli bir port taraması yapabilirsiniz:

nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml

Bu, yazıcılarda ve baskı sistemlerinde ortak olan portları arayacaktır.

  • 9100 = çoğu yazıcı için doğrudan IP bağlantı noktası olarak da bilinen RAW bağlantı noktası
  • 515 = çoğu yazıcı için ve eski yazıcı sunucuları için LPR / LPD bağlantı noktası
  • 631 = çoğu modern yazıcı için IPP bağlantı noktası ve CUPS tabanlı baskı sunucusu

Çıktı XML'dir.


Cevabınız çok yardımcı oldu!
Ryan Tenney,

Bu benim için işe yaramadı.
Martin Thoma

9

Bu cevap ilk sorunuza doğrudan cevap verir. İkinci soru için, komutu anlamak, yazıcı IP adreslerini bir dosyaya koymanıza izin verecektir. İşte başlıyoruz:

nmap -p 515,631,9100 -oG - 10.81.129.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs --replace=$ipaddress snmpget -v 1 -O v -c public $ipaddress system.sysDescr.0 | sed 's/STRING:\s//'

Süreç açıklaması

  1. Varsayılan yazıcı bağlantı noktalarını dinleyen ağ varlıklarını arayan bir ağı tarar.
  2. Önceki adımın sonuçlarını kullanarak, bu cihazlarda SNMP desteğini kontrol edecektir.
  3. SNMP desteğine sahip her cihaz için, bir ağ açıklaması için ağ varlıklarını sorgular.

Komut arıza

nmap - Ağ taraması. ( Nmap.org )

  • -p 515,631,9100 TCP Bağlantı Noktası 515, 631 ve 9100'ü tarayın.
  • -oG - Grepable çıkış biçimini kullanın.
  • -sU -p 161 161 numaralı UDP bağlantı noktasını tarayın.

gawk veya awk - Sütun odaklı metin verilerini işler . Varsayılan olarak, boşluklar çizgiyi sütunlara ayırır. ( Wikipedia )

  • gawk '/regexp/' Bu regulair ifadesine uyan satırları filtrelemek için gawk ile regulair ifadesini kullanın.
  • gawk '{<code>}' Çıkışı değiştirmek için awk C benzeri giriş dilini kullanın.
  • gawk '{/open/print $2}' “Açık” ile eşleşen satırları arayın ve ikinci sütunu yazdırın.

xarg - Verilen girişten komutlar oluşturun ve uygulayın. Varsayılan olarak boşluklar, satırı bağımsız değişkenlere ayırır. ( Wikipedia )

  • --delimiter='\n' Bağımsız değişkenleri boşluk yerine yeni satır (\ n) başına ayırın.
  • --replace=$ipaddressHer satır için, argümanı $ ipadresi içerisinde saklayın .

snmpget veya snmpwalk - Bir ağ varlığı hakkında bilgi sorgulamak için SNMP GET isteğini kullanın. ( net-snmp.org , Wikipedia'da SNMP hakkında daha fazlası )

  • -c public Topluluk dizesini herkese açık olarak ayarla.
  • -v 1 SNMP sürümünü 1 olarak ayarlayın.
  • -O v OID'yi yazdırma.
  • system.sysDescr.0Sorgu için değişken. Bu özel değişkenin açıklaması : "İşletmenin metinsel açıklaması. Bu değer, sistemin donanım türünün, yazılım işletim sisteminin ve ağ yazılımının tam adını ve sürüm tanımlamasını içermelidir. Bunun yalnızca yazdırılabilir ASCII karakterleri içermesi zorunludur. "

sed - Metni ayrıştırır ve dönüştürür. ( Wikipedia )

  • 's/day/night/' Dize gününün ilk kez bir satırda bulun ve gece ile değiştirin.
  • 's/STRING:\s//'STRING: \ s işlevini bulun ve hiçbir şeyle değiştirin. Bu, STRING: \ s öğesini girişten kaldırır . \ s bir boşluk için duruyor.

İlgili UNIX destekli bazı komutlar var. Şahsen bu zinciri, bu komutları elde etmek için Cygwin kullanarak bir Windows makinesinde çalışmasını sağladım.


2
Linux'ta IP ve SNMP sistem dizesini göstermek için aşağıdaki varyasyonu kullandım. '--Replace = $ ipaddress' benim nmap -p 515,631,9100 -oG - 192.168.100.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs -I{} sh -c 'echo {} ; snmpget -v 1 -O v -c public {} system.sysDescr.0' | sed 's/STRING:\s//'
ortamımda

@NoelProf sürümü CentOS 6'da harika çalışıyor. Geliştirilebilecek bir şey UDP tarama kısmı. Tüm zinciri denedim ama keşfedilmeyen bazı yazıcılar; özellikle de bir VPN’in arkasında olduklarında. Bunun nedeni, 161 numaralı UDP bağlantı noktasında cevap vermeleri durumunda yalnızca bir kez test etmemiz olduğunu düşündüm. Ancak UDP yolda kaybolabilir. Birden çok kez kontrol etmek daha iyi olur.
masgo

5

En kolay yol şununla taramaktır nmap -O: nmap genellikle bir makinenin yazıcı olup olmadığını OS'ye bağlı olarak doğru şekilde belirler.

nmap -O 192.168.1.1/24 -oG - | grep printer >> outfile

Her satıra bir giriş yapmalı ve "outfile" adlı bir dosyaya dökmeli. Açıkça, ip aralığını, taradığınız alanla değiştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.