package main
import (
"fmt"
"net"
"os"
"strconv"
"sync"
"time"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Usage: go run main.go <ip_address>")
return
}
ip := os.Args[1]
if net.ParseIP(ip) == nil {
fmt.Println("Invalid IP address")
return
}
var wg sync.WaitGroup
for port := 1; port <= 65535; port++ {
wg.Add(1)
go func(port int) {
defer wg.Done()
address := ip + ":" + strconv.Itoa(port)
conn, err := net.DialTimeout("tcp", address, 1*time.Second)
if err != nil {
return
}
defer conn.Close()
fmt.Printf("Port %d is open\n", port)
}(port)
}
wg.Wait()
fmt.Println("Port scanning finished")
}
net
包进行网络操作,使用了并发编程来加速端口扫描过程。将代码编写文件:portscan.go
go run portscan.go 192.168.0.5
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。