Yanıtlar:
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.
Çıktı XML'dir.
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//'
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=$ipaddress
Her 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.0
Sorgu 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.
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//'
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.