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 := = 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 65535{
//开始端口不合法
return
}
if len(tmpPorts) >= 2{
//指定结束端口
endPort,err = strconv.Atoi(tmpPorts[1])
if err != nil || endPort 65535 || endPort 2048{
t = 2048;
}
//传送启动线程数
thread
以上所述就是本文的全部内容了,希望大家能够喜欢。
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did18577