Jaki jest najlepszy sposób na znalezienie drukarek w mojej sieci za pomocą nmap? Czy można zapisać ip drukarki w pliku?
networking
NiklasS
źródło
źródło
Odpowiedzi:
Jeśli z jakiegoś powodu jesteś ostrożny w pobieraniu odcisków palców systemu operacyjnego, możesz wykonać bardziej ukierunkowane skanowanie portów:
Spowoduje to skanowanie portów wspólnych dla drukarek i systemów drukowania.
Dane wyjściowe są w formacie XML.
źródło
Ta odpowiedź odpowiada na twoje pierwsze pytanie bezpośrednio. W przypadku drugiego pytania zrozumienie polecenia pozwoli również umieścić adresy IP drukarki w pliku. Więc zaczynamy:
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//'
Opis procesu
Podział poleceń
nmap - Skanowanie sieciowe. ( Nmap.org )
-p 515,631,9100
Wyszukaj port TCP 515, 631 i 9100.-oG -
Użyj formatu wyjściowego grep.-sU -p 161
Wyszukaj port UDP 161.gawk lub awk - Przetwarza dane tekstowe zorientowane na kolumny. Domyślnie białe znaki dzielą linię na kolumny. ( Wikipedia )
gawk '/regexp/'
Użyj wyrażenia regulair z gawk, aby odfiltrować linie pasujące do wyrażenia regulair.gawk '{<code>}'
Użyj języka wejściowego podobnego do awk C, aby manipulować danymi wyjściowymi.gawk '{/open/print $2}'
Wyszukaj wiersze pasujące do „open” i wydrukuj drugą kolumnę.xarg - Buduj i wykonuj polecenia z podanych danych wejściowych. Domyślnie białe znaki dzielą linię na argumenty. ( Wikipedia )
--delimiter='\n'
Oddzielne argumenty dla nowej linii (\ n) zamiast białych znaków.--replace=$ipaddress
Dla każdej linii przechowuj argument w $ ipaddress .snmpget lub snmpwalk - Użyj żądania SNMP GET do zapytania o informacje na temat jednostki sieciowej. ( net-snmp.org , więcej o SNMP na Wikipedii )
-c public
Ustaw ciąg społeczności na publiczny.-v 1
Ustaw wersję SNMP na 1.-O v
Nie drukuj OID.system.sysDescr.0
Zmienna do zapytania. Opis tej konkretnej zmiennej: „Tekstowy opis encji. Ta wartość powinna zawierać pełną nazwę i identyfikację wersji typu sprzętu systemu, systemu operacyjnego oprogramowania i oprogramowania sieciowego. Obowiązkowe jest, aby zawierały tylko drukowalne znaki ASCII. „sed - Analizuje i przekształca tekst. ( Wikipedia )
's/day/night/'
Znajdź pierwsze wystąpienie ciągu dnia w wierszu i zamień je na noc.'s/STRING:\s//'
Znajdź STRING: \ s i zastąp go niczym. Spowoduje to usunięcie STRING: \ s z danych wejściowych. \ s oznacza biały znak.W grę wchodzi kilka poleceń obsługiwanych przez system UNIX. Osobiście sprawiłem, że ten łańcuch działa na komputerze z systemem Windows za pomocą Cygwin, aby uzyskać te polecenia.
źródło
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//'
Najłatwiejszym sposobem jest skanowanie za pomocą
nmap -O
: nmap zwykle poprawnie określa, czy maszyna jest drukarką, czy nie jest oparta na systemie operacyjnym.Powinien to zrobić jeden wpis w wierszu i zrzucić go do pliku o nazwie „outfile”. Oczywiście zmień zakres ip na dowolny skanowany zakres
źródło