Wie finde ich mit nmap am besten Drucker in meinem Netzwerk? Ist es möglich, die IP-Adresse des Druckers in einer Datei zu speichern?
Wie finde ich mit nmap am besten Drucker in meinem Netzwerk? Ist es möglich, die IP-Adresse des Druckers in einer Datei zu speichern?
Antworten:
Wenn Sie OS Fingerprinting aus irgendeinem Grund ablehnen, können Sie einen gezielteren Port-Scan durchführen:
nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml
Dadurch wird nach Ports gesucht, die Druckern und Drucksystemen gemeinsam sind.
Die Ausgabe erfolgt in XML.
Diese Antwort beantwortet Ihre erste Frage direkt. Bei der zweiten Frage können Sie nach dem Verständnis des Befehls auch die IP-Adressen des Druckers in eine Datei einfügen. Auf geht's:
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 - Netzwerkscan. ( Nmap.org )
-p 515,631,9100
Suchen Sie nach den TCP-Ports 515, 631 und 9100.-oG -
Verwenden Sie das grep-fähige Ausgabeformat.-sU -p 161
Suchen Sie nach UDP-Port 161.gawk oder awk - Verarbeitet spaltenorientierte Textdaten. Standardmäßig wird die Zeile durch Leerzeichen in Spalten unterteilt. ( Wikipedia )
gawk '/regexp/'
Verwenden Sie regulären Ausdruck mit gawk, um Linien herauszufiltern, die diesem regulären Ausdruck entsprechen.gawk '{<code>}'
Verwenden Sie die awk C-ähnliche Eingabesprache, um die Ausgabe zu bearbeiten.gawk '{/open/print $2}'
Suchen Sie nach Zeilen, die mit "open" übereinstimmen, und drucken Sie die zweite Spalte aus.xarg - Erstellt Befehle und führt sie aus einer bestimmten Eingabe aus. Standardmäßig trennen Leerzeichen die Zeile in Argumente. ( Wikipedia )
--delimiter='\n'
Trennen Sie die Argumente pro neuer Zeile (\ n) anstelle von Leerzeichen.--replace=$ipaddress
Speichern Sie das Argument für jede Zeile in $ ipaddress .snmpget oder snmpwalk - Verwenden Sie die SNMP-GET-Anforderung, um Informationen zu einer Netzwerkentität abzufragen. ( net-snmp.org , mehr über SNMP auf Wikipedia )
-c public
Setzen Sie den Community-String auf public.-v 1
Stellen Sie die SNMP-Version auf 1 ein.-O v
OID nicht drucken.system.sysDescr.0
Variable, die abgefragt werden soll. Beschreibung dieser speziellen Variablen: "Eine Textbeschreibung der Entität. Dieser Wert sollte den vollständigen Namen und die Versionsidentifikation des Hardwaretyps, des Software-Betriebssystems und der Netzwerksoftware des Systems enthalten. Es ist obligatorisch, dass diese nur druckbare ASCII-Zeichen enthalten. "sed - Analysiert und transformiert Text. ( Wikipedia )
's/day/night/'
Suchen Sie das erste Vorkommen der Zeichenfolge day in einer Zeile und ersetzen Sie es durch night.'s/STRING:\s//'
Finde STRING: \ s und ersetze es durch nichts. Dadurch wird STRING: \ s aus der Eingabe entfernt. \ s steht für ein Leerzeichen.Es gibt einige UNIX-unterstützte Befehle. Persönlich habe ich diese Kette auf einem Windows-Computer mit Cygwin funktionieren lassen, um diese Befehle zu erhalten.
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//'
Der einfachste Weg ist das Scannen mit nmap -O
: nmap ermittelt normalerweise korrekt, ob ein Computer ein Drucker ist oder nicht, basierend auf dem Betriebssystem.
nmap -O 192.168.1.1/24 -oG - | grep printer >> outfile
Sollte einen Eintrag pro Zeile machen und in einer Datei namens "outfile" ablegen. Ändern Sie den IP-Bereich auf jeden Bereich, den Sie scannen