web-dev-qa-db-ja.com

リモートマシンがWindowsまたはLinuxを使用しているかどうかを確認するにはどうすればよいですか?

コマンド(ICMPメッセージや別のプロトコルなど)を実行し、リモートマシン(自分のプライベートローカルネットワーク上ではない)から応答を取得し、メッセージを分析して、このマシンがWindowsまたはLinuxオペレーティングシステム?

10
Diogo

それは決定的ではありませんが、 nmap はコマンドnmap -O -vでこれを行います(詳細は ドキュメントを参照 )ウィンドウを実行している場合、またはGUIが必要な場合は、見てください zenmap

16
Journeyman Geek

IPv4ネットワークを使用している場合は、pingを使用してください。応答のTTL= 128の場合、ターゲットはおそらくWindowsを実行しています。TTLが64の場合、ターゲットは何らかのUnixのバリアントを実行しています。

10
Harry Johnston
: Presumes ping service enabled on Windows local and remote hosts
:
del _IX.txt, Windows.txt
ping -n 1 [computername|ipaddress] | findstr /i /c:"Reply" > ttl.txt
for /f "tokens=1-9* delims=:=< " %%a in (ttl.txt) do (
    if %%i leq 130 (
       if %%i geq 100 (
          echo Windows & rem or echo %%c >> Windows.txt
       ) else (
          if %%i equ 64 (
             echo *IX & rem or echo %%c >> _IX.txt
          )
       )
    )
)
2
riverwind

移動する1つの方法は、 NMap を使用することです。応答から、リモートOSを推測できます。

1
Apache

パッケージ:xprobe 'OR' xprobe2
説明:リモートOSの識別Xprobe2を使用すると、リモートホストで実行されているオペレーティングシステムを特定できます。ホストにいくつかのパケットを送信し、返された回答を分析します。 Xprobe2の機能は、nmapのOSフィンガープリント機能に相当します。

例:
$ Sudo apt-get install xprobe
$ Sudo xprobe2 -T21-23,80,53,110 ###。###。###。###

参照:
http://www.sys-security.com/html/projects/X.html
http://sourceforge.net/projects/xprobe/

1
tao

Johnathon64の提案に従って、リモートサーバー自体がSNMPを使用するように構成されている場合、SNMPを使用してサーバーに直接クエリを実行できます。これを行うには、次のようなコマンドラインクエリを起動します。

snmpget -v1 -c public <RemoteServerIP> sysDescr.0 | sed -n 's/.*STRING: //p' | tr -d \"

コマンド自体の説明:

  1. snmpgetは、オブジェクトのデフォルト名を含むオブジェクトsysDescrをクエリします。
  2. 次のsedは、ポーリングされたOIDと文字列の先頭のみを含む最初の出力を除外します。
  3. 最後のコマンドtrは、通常SNMPクエリにある二重引用符を除外します。

最後の2つのコマンドは、出力をフォーマットするためのものです。必要がない場合は、最初のコマンドを使用して完全な出力を抽出できます。

0
FoxBuster

古い投稿ですが、私もこれに追加すると思いましたが、デバイスでSNMPが有効になっている場合は、sysDescrを照会して、使用しているOSを通知することもできます。

MIBブラウザーをダウンロードします。私が使用する良いブラウザーはこちらです http://www.ireasoning.com/downloadmibbrowserfree.php 。基本的には、デバイスのIPアドレスを割り当てて、ウォーク操作を実行します。

0
Johnathon64