使用 Nmap 查找打印机

使用 Nmap 查找打印机

使用 nmap 查找网络中的打印机的最佳方法是什么?是否可以将打印机 IP 保存到文件中?

答案1

如果您出于某种原因对进行操作系统指纹识别持怀疑态度,您可以进行更有针对性的端口扫描:

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

这将扫描打印机和打印系统的常用端口。

  • 9100 = 大多数打印机的 RAW 端口,也称为直接 IP 端口
  • 515 = LPR/LPD 端口,适用于大多数打印机以及较旧的打印服务器
  • 631 = IPP 端口,适用于大多数现代打印机和基于 CUPS 的打印服务器

输出为 XML 格式。

答案2

此回复直接回答了您的第一个问题。对于第二个问题,了解该命令将使您能够将打印机 IP 地址放入文件中。因此,我们开始吧:

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//'

流程说明

  1. 它扫描网络,寻找正在监听默认打印机端口的网络实体。
  2. 使用上一步的结果,它将检查这些设备是否支持 SNMP。
  3. 对于每个具有 SNMP 支持的设备,它会向网络实体查询设备描述。

指令分解

nmap-网络扫描。Nmap网站

  • -p 515,631,9100扫描 TCP 端口 515、631 和 9100。
  • -oG -使用 grep-able 输出格式。
  • -sU -p 161扫描 UDP 端口 161。

呆呆地或者awk-处理列式文本数据。默认情况下,空格将行分隔为列。维基百科

  • gawk '/regexp/'使用 gawk 的常规表达式来过滤掉与该常规表达式匹配的行。
  • gawk '{<code>}'使用 awk 类 C 输入语言来操作输出。
  • gawk '{/open/print $2}'搜索与“open”匹配的行并打印第二列。

響鳴-根据给定的输入构建并执行命令。默认情况下,空格将行分隔为参数。维基百科

  • --delimiter='\n'使用新行 (\n) 而不是空格来分隔参数。
  • --replace=$ipaddress对于每一行,将参数存储到$ip地址

SNMP获取或者snmpwalk-使用 SNMP GET 请求查询网络实体的信息。网络管理平台,有关 SNMP 的更多信息,请参阅维基百科

  • -c public将社区字符串设置为公开。
  • -v 1将 SNMP 版本设置为 1。
  • -O v不要打印 OID。
  • system.sysDescr.0要查询的变量。此特定变量的描述:“实体的文本描述。此值应包括系统硬件类型、软件操作系统和网络软件的全名和版本标识。必须仅包含可打印的 ASCII 字符。”

sed-解析并转换文本。维基百科

  • 's/day/night/'在一行中查找字符串 day 的第一次出现,并将其替换为 night。
  • 's/STRING:\s//'寻找STRING:\s并将其替换为空。这将删除STRING:\s来自输入。\s代表空格。

涉及一些 UNIX 支持的命令。我亲自使用 Cygwin 在 Windows 机器上使此链运行以获取这些命令。

答案3

最简单的方法是使用以下方法进行扫描nmap -O:nmap 通常会根据操作系统正确确定一台机器是否是打印机。

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

应该将其设置为每行一个条目,并将其转储到名为“outfile”的文件中。显然,将 IP 范围更改为您要扫描的任何范围

相关内容