>  기사  >  백엔드 개발  >  golang은 nmap을 구현합니다.

golang은 nmap을 구현합니다.

WBOY
WBOY원래의
2023-05-16 10:53:07953검색

Golang은 효율적이고 안정적인 웹 애플리케이션을 구축하는 데 적합한 프로그래밍 언어입니다. Nmap은 네트워크 검색 및 보안 감사에 사용되는 널리 사용되는 도구로, 네트워크의 호스트를 신속하게 감지하고 해당 운영 체제 및 서비스 열려 있는 포트를 식별할 수 있습니다. 이 기사에서는 Golang을 사용하여 간단한 nmap 도구를 구현하는 방법을 소개합니다.

시작하기 전에 Golang과 nmap을 설치해야 합니다.

  1. Create Golang 프로젝트

새 Golang 프로젝트를 생성하려면 명령줄에 다음 명령을 입력하세요.

mkdir nmap
cd nmap
go mod init github.com/yourusername/nmap

이 명령은 go.mod 파일, 가 포함된 프로젝트를 생성합니다. go .mod 파일은 프로젝트 종속성을 관리하는 데 사용됩니다. go.mod文件的项目,go.mod文件用于管理项目的依赖关系。

  1. 导入nmap库

使用以下命令在go.mod文件中添加nmap库:

require github.com/Ullaakut/nmap/v2 v2.0.0

这个命令会告诉Golang使用版本2.0.0的nmap库。版本2.0.0中增加了对Golang的支持。

  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

    nmap 라이브러리 가져오기

    다음 명령을 사용하여 go.mod 파일에 nmap 라이브러리를 추가하세요.

    rrreee🎜이 명령은 Golang에게 버전을 사용하도록 지시합니다. 2.0.0 nmap 라이브러리. Golang에 대한 지원은 버전 2.0.0에 추가되었습니다. 🎜
      🎜코드 작성🎜🎜🎜다음으로 nmap 스캐닝을 구현하는 코드를 작성해 보겠습니다. 프로젝트 루트 디렉토리에 main.go라는 파일을 생성하고 다음 코드를 입력하세요: 🎜rrreee🎜이 코드는 localhost의 처음 1024개 포트를 스캔하고 상태를 표시합니다. 그리고 각 항구의 서비스. 🎜
        🎜코드 실행🎜🎜🎜코드를 실행하려면 명령줄에 다음 명령을 입력하세요. 🎜rrreee🎜프로그램이 스캔을 수행하고 다음과 유사한 결과를 출력합니다. 🎜rrreee 🎜이 출력은 이 열려 있음을 보여줍니다. 🎜🎜결론🎜🎜Golang과 nmap 라이브러리를 사용하여 네트워크에서 호스트를 빠르게 검색하고 해당 포트를 확인할 수 있는 간단한 nmap 도구를 구현했습니다. Golang의 고속 실행 성능과 nmap 라이브러리의 사용 용이성은 맞춤형 스캐너 구현을 매우 편리하게 만듭니다. 🎜

위 내용은 golang은 nmap을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.