ホームページ > バックエンド開発 > Golang > golang は nmap を実装します

golang は nmap を実装します

WBOY
リリース: 2023-05-16 10:53:07
オリジナル
1022 人が閲覧しました

Golang は、効率的で信頼性の高いネットワーク アプリケーションの構築に適したプログラミング言語です。 Nmap は、ネットワーク検出とセキュリティ監査に使用される一般的なツールで、ネットワーク上のホストを迅速に検出し、そのオペレーティング システムとサービスのオープン ポートを特定します。この記事では、Golang を使用して簡単な nmap ツールを実装する方法を紹介します。

開始する前に、Golang と nmap をインストールする必要があります。

  1. Golang プロジェクトの作成

コマンド ラインに次のコマンドを入力して、新しい Golang プロジェクトを作成します:

mkdir nmap
cd nmap
go mod init github.com/yourusername/nmap
ログイン後にコピー

このコマンドは、次の内容を含むプロジェクトを作成します。 go.mod ファイル プロジェクト、go.mod ファイルはプロジェクトの依存関係を管理するために使用されます。

  1. nmap ライブラリのインポート

次のコマンドを使用して、nmap ライブラリを go.mod ファイルに追加します:

require github.com/Ullaakut/nmap/v2 v2.0.0
ログイン後にコピー

このコマンドは、Golang に nmap ライブラリのバージョン 2.0.0 を使用するように指示します。 Golang のサポートはバージョン 2.0.0 で追加されました。

  1. コードの作成

次に、nmap スキャンを実装するコードを作成しましょう。プロジェクトのルート ディレクトリに main.go という名前のファイルを作成し、次のコードを入力します。

package main

import (
    "fmt"
    "github.com/Ullaakut/nmap/v2"
    "log"
)

func main() {
    target := "localhost"
    ports := "1-1024"

    // create the scanner
    scanner, err := nmap.NewScanner(
        nmap.WithTargets(target),
        nmap.WithPorts(ports),
    )
    if err != nil {
        log.Fatalf("unable to create scanner: %v", err)
    }

    // run the scan
    result, warnings, err := scanner.Run()
    if err != nil {
        log.Fatalf("unable to run scan: %v", err)
    }

    if warnings != nil {
        log.Printf("warnings: %v", warnings)
    }

    for _, host := range result.Hosts {
        fmt.Printf("IP: %s
", host.Addresses[0])
        fmt.Printf("OS: %s
", host.OS.OsMatches[0].Name)
        fmt.Println("Ports:")
        for _, port := range host.Ports {
            if port.State.State == "open" {
                fmt.Printf("%d/%s %s %s
", port.ID, port.Protocol, port.State.State, port.Service.Name)
            }
        }
        fmt.Println()
    }
}
ログイン後にコピー

このコードは、localhost の最初の 1024 ポートをスキャンし、出力します。各ポートのステータスとサービスを出力します。

  1. コードの実行

コマンド ラインに次のコマンドを入力してコードを実行します。

go run main.go
ログイン後にコピー

プログラムはスキャンを実行し、次のような結果が表示されます。

IP: 127.0.0.1
OS: Linux 2.6.x
Ports:
22/tcp open ssh
80/tcp open http
ログイン後にコピー

この出力は、localhost のポート 22 と 80 が開いていることを示しています。

結論

Golang と nmap ライブラリを使用して、ネットワーク上のホストを迅速に検出し、そのポートを確認するためのシンプルな nmap ツールを実装しました。 Golang の高速実行性能と nmap ライブラリの使いやすさにより、カスタマイズされたスキャナーの実装が非常に便利です。

以上がgolang は nmap を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート