Golang은 효율적이고 안정적인 웹 애플리케이션을 구축하는 데 적합한 프로그래밍 언어입니다. Nmap은 네트워크 검색 및 보안 감사에 사용되는 널리 사용되는 도구로, 네트워크의 호스트를 신속하게 감지하고 해당 운영 체제 및 서비스 열려 있는 포트를 식별할 수 있습니다. 이 기사에서는 Golang을 사용하여 간단한 nmap 도구를 구현하는 방법을 소개합니다.
시작하기 전에 Golang과 nmap을 설치해야 합니다.
새 Golang 프로젝트를 생성하려면 명령줄에 다음 명령을 입력하세요.
mkdir nmap cd nmap go mod init github.com/yourusername/nmap
이 명령은 go.mod
파일, 가 포함된 프로젝트를 생성합니다. go .mod
파일은 프로젝트 종속성을 관리하는 데 사용됩니다. go.mod
文件的项目,go.mod
文件用于管理项目的依赖关系。
使用以下命令在go.mod
文件中添加nmap库:
require github.com/Ullaakut/nmap/v2 v2.0.0
这个命令会告诉Golang使用版本2.0.0的nmap库。版本2.0.0中增加了对Golang的支持。
接下来,我们来编写代码实现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个端口,并打印出每个端口的状态和服务。
在命令行中输入以下命令运行代码:
go run main.go
程序会执行扫描并输出结果,类似于以下内容:
IP: 127.0.0.1 OS: Linux 2.6.x Ports: 22/tcp open ssh 80/tcp open http
这个输出表明,localhost
다음 명령을 사용하여 go.mod
파일에 nmap 라이브러리를 추가하세요.
main.go
라는 파일을 생성하고 다음 코드를 입력하세요: 🎜rrreee🎜이 코드는 localhost
의 처음 1024개 포트를 스캔하고 상태를 표시합니다. 그리고 각 항구의 서비스. 🎜위 내용은 golang은 nmap을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!