1

リモート マシンにインストールされている OS の種類を調べる必要があります。私は、NMap のような OS フィンガー プリンティング ツールを使用して、リモート マシンの OS 固有の詳細を検出できることを知っています。しかし、ライセンスの問題があるため、そのようなツールは使用できません。OS を検出するには、独自のロジックを実装する必要があります。検索で、TTL に基づいて OS タイプを見つけることができるリンクを見つけました。ただし、TTL の使用が常に正確であるとは限りません。これはホップ計算に基づいています。

マシンにはいくつかの開いているポートがあります。それをスキャンすることで、どうにかして OS を見つけることができます。

OS の種類について何らかの考えを与えるようなポートはありますか? OS に基づいてスクリプトを実行するロジックを実装する必要があります。OS の種類を検出するのに役立つ条件がいくつかある場合は、時間を節約できる可能性があります。

if(IsOpen(Some_Port_Number))
{
//This machine might be a windows based one so

if(Run_WindowsBasedScript()==False)
{
Run_LinuxBasedScript();
}
}
else
{
if(Run_LinuxBasedScript()==False)
{
Run_WindowsBasedScript();
}
}

そこで、OS の種類を特定して実行時間を短縮する必要があります。開いているポートに基づいて OS を見つけることができると考えました。任意のヘルプをいただければ幸いです。

4

1 に答える 1

0

OS を特定するためにスキャンできる「ポートは1 つだけ」ではありません。使用できない場合はNMAP、OS を検出するメカニズムをエミュレートする必要があります。

もちろん、telnet(ポート 23 で) コマンドを実行してオペレーティング システムを元に戻したりcurl -I microsoft.com、Web サーバーを提供したりMicrosoft-IIS/7.5(従来の手法) することで幸運に恵まれる可能性もありますが、当てにしないでください。

複雑なテクニックを使用する必要があります。いくつかのテクニックについては、この古い記事で読むことができます。また、さまざまなテクニックを使用する他の人についても言及されています。

まず、マシンがどのファミリーに属しているかを調べる必要があります。(TTL 方式については既に説明しました) その後、上記の記事で、バージョンを判別するために実行できる手順を読むことができます。

もう 1 つの事実は、NMAP1 つのポートだけを使用するのではなく、少なくとも 1 つの開いている TCP ポートと 1 つの閉じている TCP ポートが見つかった場合に最も効果的です。(見つからない場合はそう表示されます)また、開いているポートと閉じているポートの組み合わせでOSを判断します。

さらに読むには:

于 2013-10-07T15:42:28.217 に答える