GNU/Linux >> Linux の 問題 >  >> Linux

SNMP 対応デバイスの Nmap スキャン

Nmap には、出力フィルタリング オプションの方法があまり含まれていません:--open 開いているポートを含むホストに出力を制限します (any ポートを開く)。 -v0 画面への出力を防ぎます。

代わりに、これを実現する最善の方法は、スキャンの XML 出力を保存することです (-oX を使用)。 または -oA 出力オプション) には、スキャンによって収集されたすべての情報が解析しやすい XML 形式で含まれます。次に、XML 解析ツールを使用してそれをフィルタリングし、必要な情報を含めることができます。

コマンドライン XML パーサーの 1 つは xmlstarlet です .このコマンドを使用して、sysdescr を持つターゲットの IP アドレスのみを除外できます 文字列 "example" を含む:

xmlstarlet sel -t -m "//port/script[@id='snmpsysdescr' and contains(@output,'example')]/../../../address[@addrtype='ipv4']" -v @addr -n output.xml

これは、ツールであり、Nmap とともに配布される Python 2 ライブラリである Ndiff を使用して行うこともできます。

#!/usr/bin/env python

import ndiff

def sysdescr_contains (value, host):
  for port in host.ports:
    for script in filter(lambda x: x.id == u"snmp-sysdescr", port.script_results):
      if value in script.output:
        return True
  return False

def usage ():
  print """Look for <substring> in snmp-sysdescr output and print matching hosts.
Usage: {} <filename.xml> <substring>"""

if __name__ == "__main__":
  import sys
  if len(sys.argv) < 3:
    usage()
    exit(1)

  scan = ndiff.Scan()
  scan.load_from_file(sys.argv[1])

  for host in filter(lambda x: sysdescr_contains(sys.argv[2], x), scan.hosts):
    print host.format_name()

他の Nmap 出力解析ライブラリは、ほとんどの一般的なプログラミング言語で利用できます。


Linux
  1. Linuxデスクトップ用の4つのスキャンツール

  2. Nmapを使用してネットワーク内の不正なデバイスを見つける

  3. Cdへの入力に使用されるコマンドの出力はどれですか?

  1. KaliLinuxでのNmapの概要

  2. Kali Linux のパッケージを見つける

  3. コマンドと出力の異なる色

  1. 初心者向けのLinuxpinkyコマンドチュートリアル(8例)

  2. Geditで無効な文字をスキャンする方法は?

  3. プロセス出力に添付して表示する