go编写的端口扫描工具

折月煮酒 提交于 2020-10-01 06:49:27

go编写的扫描工具

scan.go

package main

import (
    "fmt"
    "log"
    "net"
    "sync"
    "time"
)

func main() {
    var wg sync.WaitGroup
    var mutex sync.Mutex
    ports := make([]int, 0)
    for i := 80; i <= 50000; i++ {
        wg.Add(1)
        go func(port int) {
            defer wg.Done()
            conn, err := net.DialTimeout("tcp", fmt.Sprintf("127.0.0.1:%d", port), time.Second)
            if err != nil {
                log.Printf("Error:%v.Port:[%d]\n", err, port)
            } else {
                conn.Close()
                log.Printf("Connection successful.Port:[%d]\n", port)
                mutex.Lock()
                ports = append(ports, port)
                mutex.Unlock()
            }
        }(i)
    }
    wg.Wait()
    fmt.Printf("Opened ports:%v", ports)
}

 

可以不编译,直接 go run scan.go

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!