Home >Backend Development >Golang >golang implements nmap
Golang is a programming language suitable for building efficient and reliable network applications. Nmap is a popular tool used for network discovery and security auditing. It can quickly detect hosts on the network and identify their operating systems and service open ports. This article will introduce how to use Golang to implement a simple nmap tool.
Before starting, you need to install Golang and nmap.
Enter the following command on the command line to create a new Golang project:
mkdir nmap cd nmap go mod init github.com/yourusername/nmap
This command will create a project containing go.mod
file project, go.mod
file is used to manage project dependencies.
Use the following command to add the nmap library in the go.mod
file:
require github.com/Ullaakut/nmap/v2 v2.0.0
This command will Tells Golang to use version 2.0.0 of the nmap library. Support for Golang was added in version 2.0.0.
Next, let’s write code to implement nmap scanning. Create a file named main.go
in the project root directory and enter the following code:
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() } }
This code will scan the first 1024 ports of localhost
, And print out the status and services of each port.
Enter the following command on the command line to run the code:
go run main.go
The program will perform the scan and output the results, similar to the following:
IP: 127.0.0.1 OS: Linux 2.6.x Ports: 22/tcp open ssh 80/tcp open http
This output shows that ports 22 and 80 on localhost
are open.
Conclusion
By using Golang and the nmap library, we implemented a simple nmap tool to quickly discover hosts on the network and check their ports. Golang's high-speed execution performance and the ease of use of the nmap library make it extremely convenient to implement a customized scanner.
The above is the detailed content of golang implements nmap. For more information, please follow other related articles on the PHP Chinese website!