主页 > 知识库 > Go语言实现的简单网络端口扫描方法

Go语言实现的简单网络端口扫描方法

热门标签:地方门户网站 网站排名优化 百度竞价排名 铁路电话系统 呼叫中心市场需求 服务外包 Linux服务器 AI电销

本文实例讲述了Go语言实现的简单网络端口扫描方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
package main
import (
 "net"
 "fmt"
 "os"
 "runtime"
 "time"
 "strconv"
)

func loop(startport, endport int, inport chan int) {
  for i := startport; i = endport; i++{
   inport - i
  }
}

func scanner(inport, outport, out chan int, ip net.IP, endport int){
 for{
  in := - inport
  //fmt.Println(in)
  tcpaddr := net.TCPAddr{ip,in}
  conn, err := net.DialTCP("tcp", nil, tcpaddr)
  if err != nil {
   outport - 0
  }else{
   outport - in
  }
  conn.Close()
  if in == endport{
   out - in
  }
 }
}

func main() {
 starttime := time.Now().Unix()
 runtime.GOMAXPROCS(4)
 inport := make(chan int)
 outport := make(chan int)
 out := make(chan int)
 collect := []int{}
 if len(os.Args) != 4 {
  fmt.Println("Usage: scanner.exe IP startport endport")
  fmt.Println("Endport must be larger than startport")
  os.Exit(0)
 }
 ip := net.ParseIP(os.Args[1])
 if(os.Args[3] os.Args[2]) {
  fmt.Println("Usage: scanner IP startport endport")
  fmt.Println("Endport must be larger than startport")
  os.Exit(0)
 }
 startport, _:= strconv.Atoi(os.Args[2])
 endport, _ := strconv.Atoi(os.Args[3])
 go loop(startport, endport, inport)
 for{
  select {
   case -out:
    fmt.Println(collect)
    endtime := time.Now().Unix()
    fmt.Println("The scan process has spent ",endtime-starttime,"second")
    os.Exit(0)
   default:
    go scanner(inport, outport, out, ip, endport)
    port := - outport
    
    if port != 0{
     collect = append(collect, port)
    }
  }  
 }
}

希望本文所述对大家的Go语言程序设计有所帮助。

您可能感兴趣的文章:
  • go语言制作端口扫描器
  • GO语言实现的端口扫描器分享
  • go 实现简易端口扫描的示例

标签:铜川 仙桃 湖南 兰州 衡水 黄山 崇左 湘潭

巨人网络通讯声明:本文标题《Go语言实现的简单网络端口扫描方法》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266