婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > go語言制作端口掃描器

go語言制作端口掃描器

熱門標簽:百度地圖標注搜索關鍵詞 電梯外呼訪客系統 谷歌便利店地圖標注 騰訊外呼系統價格 成都呼叫中心外呼系統平臺 浙江人工智能外呼管理系統 ?兓? 最短的地圖標注 電銷機器人可以補救房產中介嗎

GO語言編寫的TCP端口掃描器,本人的第一個GO程序。

Git@OSC:http://git.oschina.net/youshusoft/GoScanner

使用命令:

Scanner startIp [endIp] port thread

參數說明:

startIp  開始IP
endIp  結束IP,可選,不輸入表示只掃描startIp
port  掃描端口,單個端口:3389;多個端口:1433,3389;連續端口:135-3389
thread  最大并發線程數,最高2048

掃描結果保存在同目錄下的 result.txt 中,每次啟動都會清掉之前的內容。

例子一:
Scanner 58.96.172.22 58.96.172.220 80 512
掃描58.96.172.22到58.96.172.220中的80端口,最大并發線程512。

例子二:
Scanner 58.96.172.22 58.96.172.220 21,5631 512
掃描58.96.172.22到58.96.172.220中的21和5631端口,最大并發線程512。

例子三:
Scanner 58.96.172.22 58.96.172.220 1-520 512
掃描58.96.172.22到58.96.172.220中的1到520端口,最大并發線程512。

例子四:
Scanner 58.96.172.22 1-520 512
掃描58.96.172.22中的1到520端口,最大并發線程512。

package main
import (
"fmt"
"strconv"
"flag"
"strings"
"net"
"os"
)
/**
  掃描地址
*/
var ipAddrs chan string = make(chan string)
//掃描結果
var result chan string = make(chan string)
//線程數
var thread chan int = make(chan int)
var nowThread int;
//關閉程序
var clo chan bool = make(chan bool)
//保存結果
func writeResult(){
  fileName := "result.txt"
  fout,err := os.Create(fileName)
  if err != nil{
    //文件創建失敗
    fmt.Println(fileName + " create error")
  }
  defer fout.Close()
  s,ok := - result
  for ;ok;{
    fout.WriteString(s + "\r\n")
    s,ok = - result
  }
  //通知進程退出
  clo - true; 
}
//根據線程參數啟動掃描線程
func runScan(){
  t,ok := - thread
  nowThread = t;
  if ok{
    for i := 0;i  nowThread;i++{
    go scan(strconv.Itoa(i))
    }
  }
  //等待線程終止
  for;-thread == 0;{
    nowThread--
    if nowThread == 0{
      //全部線程已終止,關閉結果寫入,退出程序
      close(result)
      break
    }
  }
}
/**
  掃描線程
*/
func scan(threadId string){
  s,ok := -ipAddrs
  for;ok;{
    fmt.Println("[thread-" + threadId + "] scan:" + s)
    _,err := net.Dial("tcp",s)
    if err == nil{
      //端口開放
      result - s     
    }
    s,ok = -ipAddrs
  }
  fmt.Println("[thread-" + threadId + "] end")
  thread - 0;
}
//獲取下一個IP
func nextIp(ip string) string{
  ips := strings.Split(ip,".")
  var i int;
  for i = len(ips) - 1;i >= 0;i--{
    n,_ := strconv.Atoi(ips[i])
    if n >= 255{
      //進位
      ips[i] = "1"  
    }else{
      //+1
      n++
      ips[i] = strconv.Itoa(n)
      break
    }
  }
  if i == -1{
    //全部IP段都進行了進位,說明此IP本身已超出范圍
    return "";
  }
  ip = ""
  leng := len(ips)
  for i := 0;i  leng;i++{
    if i == leng -1{
      ip += ips[i]
    }else{
      ip += ips[i] + "."
    }
  }
  return ip
}
//生成IP地址列表
func processIp(startIp,endIp string) []string{
  var ips = make([]string,0)
  for ;startIp != endIp;startIp = nextIp(startIp){
    if startIp != ""{
      ips = append(ips,startIp)
    }
  }
  ips = append(ips,startIp)
  return ips
}
//處理參數
func processFlag(arg []string){
  //開始IP,結束IP
  var startIp,endIp string
  //端口
  var ports []int = make([]int,0)
  index := 0
  startIp = arg[index]
  si := net.ParseIP(startIp)
  if si == nil{
    //開始IP不合法
    fmt.Println("'startIp' Setting error")
    return
  }
  index++
  endIp = arg[index]
  ei := net.ParseIP(endIp)
  if(ei == nil){
    //未指定結束IP,即只掃描一個IP
    endIp = startIp
  }else{
   index++
  }
  tmpPort := arg[index]
  if strings.Index(tmpPort,"-") != -1{
    //連續端口
    tmpPorts := strings.Split(tmpPort,"-")
    var startPort,endPort int
    var err error
    startPort,err = strconv.Atoi(tmpPorts[0])
    if err != nil || startPort  1 || startPort > 65535{
      //開始端口不合法
      return
    }
    if len(tmpPorts) >= 2{
      //指定結束端口
      endPort,err = strconv.Atoi(tmpPorts[1])
      if err != nil || endPort  1 || endPort > 65535 || endPort  startPort{
        //結束端口不合法
        fmt.Println("'endPort' Setting error")
        return
      }
    }else{
      //未指定結束端口
      endPort = 65535
    }
    for i := 0;startPort + i = endPort;i++{
      ports = append(ports,startPort + i)
    }
  }else{
    //一個或多個端口
    ps := strings.Split(tmpPort,",")
    for i := 0;i  len(ps);i++{
      p,err := strconv.Atoi(ps[i])
      if err != nil{
        //端口不合法
        fmt.Println("'port' Setting error")
        return
      }
      ports = append(ports,p)
    }
  }
  index++
  t,err := strconv.Atoi(arg[index])
  if(err != nil){
    //線程不合法
    fmt.Println("'thread' Setting error")
    return
  }
  //最大線程2048
  if t  1{
    t = 1;
  }else if t > 2048{
    t = 2048;
  }
  //傳送啟動線程數
  thread - t
  //生成掃描地址列表
  ips := processIp(startIp,endIp)
  il := len(ips)
  for i := 0; i  il;i++{
    pl := len(ports)
    for j := 0;j  pl;j++{
      ipAddrs - ips[i] + ":" + strconv.Itoa(ports[j]) 
    }
  }
  close(ipAddrs)
}
func main(){
  flag.Parse()
  if flag.NArg() != 3  flag.NArg() != 4{
    //參數不合法
    fmt.Println("Parameter error")
    return
  }
  //獲取參數
  args := make([]string,0,4)
  for i := 0;i  flag.NArg();i++{
    args = append(args,flag.Arg(i))
  }
  //啟動掃描線程
  go runScan()
  //啟動結果寫入線程
  go writeResult()
  //參數處理
  processFlag(args)
  //等待退出指令
  - clo;
  fmt.Println("Exit")
}

以上所述就是本文的全部內容了,希望大家能夠喜歡。

您可能感興趣的文章:
  • Go語言實現的簡單網絡端口掃描方法
  • GO語言實現的端口掃描器分享
  • go 實現簡易端口掃描的示例

標簽:雅安 紹興 盤錦 上海 邢臺 七臺河 宜昌 眉山

巨人網絡通訊聲明:本文標題《go語言制作端口掃描器》,本文關鍵詞  語言,制作,端口,掃描器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言制作端口掃描器》相關的同類信息!
  • 本頁收集關于go語言制作端口掃描器的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲综合久久av| 美腿丝袜一区二区三区| 一区二区三区日韩在线观看| 青草av.久久免费一区| 精品国产百合女同互慰| 免费久久精品视频| 国产欧美一区二区精品性| 蜜桃久久av一区| 亚洲欧美日韩国产成人精品影院| 日韩经典中文字幕一区| 欧美日韩精品二区第二页| 国产很黄免费观看久久| 欧美欧美欧美欧美| 欧美激情一区二区在线| 九一九一国产精品| 欧美一区二区精品| 亚洲第一成年网| 欧洲亚洲国产日韩| 亚洲精品综合在线| 91小视频在线| 国产精品素人一区二区| 国产iv一区二区三区| 久久久99久久| 国内精品写真在线观看| 精品欧美一区二区三区精品久久| 免费看欧美美女黄的网站| 日韩一级欧美一级| 美女任你摸久久| 久久一夜天堂av一区二区三区| 久久精品99国产国产精| 日韩欧美国产小视频| 美女免费视频一区| 久久嫩草精品久久久精品| 国内精品国产成人| 国产日韩欧美综合在线| 国产传媒久久文化传媒| 亚洲国产精品v| 一本大道av一区二区在线播放| 亚洲女厕所小便bbb| 色美美综合视频| 偷窥少妇高潮呻吟av久久免费| 欧美一区二区黄| 日韩精品成人一区二区三区| 日韩视频国产视频| 粉嫩aⅴ一区二区三区四区| 亚洲国产激情av| 在线免费一区三区| 免费观看91视频大全| 欧美精品一区二区在线播放| 丁香婷婷综合色啪| 一区二区三区不卡视频在线观看 | 国产精品系列在线播放| 日本一区二区综合亚洲| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区二区视频在线| 精品少妇一区二区三区在线播放 | 精品一区二区久久久| 亚洲国产岛国毛片在线| 在线看日本不卡| 韩国av一区二区| 亚洲精品乱码久久久久| 精品久久免费看| 成a人片亚洲日本久久| 天天色综合天天| 欧美激情一区二区三区| 在线观看av不卡| 国产伦精品一区二区三区免费迷| 亚洲色图制服丝袜| 久久综合色播五月| 欧美视频中文字幕| 国产suv精品一区二区三区| 婷婷综合另类小说色区| 国产精品电影一区二区三区| 欧美一级久久久| 日本韩国一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 亚洲精品乱码久久久久久黑人 | 久久综合色综合88| 欧美亚洲一区二区在线观看| 国产不卡高清在线观看视频| 偷拍亚洲欧洲综合| 亚洲激情一二三区| 国产精品视频你懂的| 日韩欧美国产午夜精品| 欧美日韩久久久一区| 成人av综合在线| 国产精品77777| 奇米色一区二区三区四区| 亚洲一区二区三区精品在线| 国产精品福利在线播放| 精品久久久久久久久久久久久久久久久| 日本高清无吗v一区| proumb性欧美在线观看| 国产成人av一区| 精品一区二区在线看| 亚洲国产精品一区二区尤物区| 1024国产精品| 国产精品成人一区二区三区夜夜夜| 久久久久久久电影| 久久色视频免费观看| 欧美电视剧在线看免费| 日韩午夜小视频| 日韩三级.com| 91精品国产色综合久久不卡电影| 欧美日韩精品二区第二页| 欧美性极品少妇| 欧美日韩精品三区| 欧美日韩不卡一区二区| 欧美日韩国产一区| 欧美日韩精品一区二区| 欧美猛男超大videosgay| 在线免费观看日本一区| 日本丰满少妇一区二区三区| 91成人看片片| 欧美一区二区在线看| 日韩三级电影网址| 精品国精品自拍自在线| 日韩一级黄色大片| 久久精品无码一区二区三区| 精品国产成人在线影院 | 欧美一区二区在线视频| 欧美一级片免费看| 久久综合色之久久综合| 国产日韩精品一区| 玉米视频成人免费看| 亚洲第一狼人社区| 激情综合亚洲精品| 成人av小说网| 欧美午夜理伦三级在线观看| 欧美一区二区三区婷婷月色| 欧美精品一区二区三区一线天视频| 国产欧美中文在线| 最新日韩av在线| 日本怡春院一区二区| 国产福利精品导航| 欧美视频第二页| 久久嫩草精品久久久精品| 亚洲美女精品一区| 久久精品国产99国产| 99久久精品国产一区| 制服丝袜亚洲精品中文字幕| 国产无一区二区| 亚洲综合图片区| 久久成人麻豆午夜电影| 99精品一区二区三区| 日韩亚洲欧美成人一区| 亚洲私人影院在线观看| 麻豆精品国产传媒mv男同| 成人综合激情网| 日韩三级视频在线观看| 中文字幕亚洲不卡| 精品中文字幕一区二区| 在线观看欧美黄色| 国产欧美精品国产国产专区| 日本成人在线看| 色狠狠综合天天综合综合| 精品成人免费观看| 午夜电影网亚洲视频| 91美女福利视频| 久久精品人人做人人爽97| 亚洲高清免费在线| 99精品国产热久久91蜜凸| 精品国产91亚洲一区二区三区婷婷 | 欧美精品在线视频| 欧美国产精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人av网站在线观看免费| 亚洲精品一区二区三区在线观看 | 色嗨嗨av一区二区三区| 久久久久久久综合日本| 日韩高清中文字幕一区| 欧洲一区二区三区在线| 日本一区二区三区电影| 久草这里只有精品视频| 91精品欧美一区二区三区综合在| 亚洲乱码国产乱码精品精98午夜| 高清不卡一区二区| 久久久久久夜精品精品免费| 青青草国产成人99久久| 91精品午夜视频| 人人狠狠综合久久亚洲| 欧美日韩成人综合天天影院| 亚洲一二三区不卡| 欧美视频中文一区二区三区在线观看| 亚洲激情在线激情| 色狠狠av一区二区三区| 亚洲一区影音先锋| 欧美日韩一区二区三区四区五区 | 7777精品伊人久久久大香线蕉超级流畅 | 亚洲成人你懂的| 欧美视频在线一区| 亚洲成a人片综合在线| 欧美日免费三级在线| 亚洲成人精品影院| 欧美精品丝袜久久久中文字幕| 午夜欧美在线一二页| 欧美一区二区在线免费播放| 免费成人在线影院| 精品久久久久久久久久久久久久久| 美女高潮久久久|