修改线程处理机制

This commit is contained in:
shadow1ng 2021-03-30 22:30:16 +08:00
parent d6e8d37ce8
commit 7535fdace7
11 changed files with 25 additions and 30 deletions

View File

@ -35,7 +35,7 @@ func FtpScan(info *common.HostInfo) (tmperr error) {
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Userdict["ftp"])*len(common.Passwords)) * info.Timeout) {
return err
}
}

View File

@ -24,7 +24,7 @@ func MssqlScan(info *common.HostInfo) (tmperr error) {
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Userdict["mssql"])*len(common.Passwords)) * info.Timeout) {
return err
}
}

View File

@ -24,7 +24,7 @@ func MysqlScan(info *common.HostInfo) (tmperr error) {
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Userdict["mysql"])*len(common.Passwords)) * info.Timeout) {
return err
}
}

View File

@ -24,7 +24,7 @@ func PostgresScan(info *common.HostInfo) (tmperr error) {
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Userdict["postgresql"])*len(common.Passwords)) * info.Timeout) {
return err
}
}

View File

@ -28,7 +28,7 @@ func RedisScan(info *common.HostInfo) (tmperr error) {
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Passwords)) * info.Timeout) {
return err
}
}
@ -128,7 +128,7 @@ func Expoilt(realhost string, conn net.Conn) error {
}
}
}
recoverdb(dbfilename, dir, conn)
err = recoverdb(dbfilename, dir, conn)
return err
}

View File

@ -12,7 +12,7 @@ import (
)
func Scan(info common.HostInfo) {
fmt.Println("scan start")
fmt.Println("start infoscan")
Hosts, _ := common.ParseIP(info.Host, common.HostFile)
WebScan.Inithttp(common.Pocinfo)
var ch = make(chan struct{}, common.Threads)
@ -34,6 +34,7 @@ func Scan(info common.HostInfo) {
for _, port := range common.PORTList {
severports = append(severports, strconv.Itoa(port))
}
fmt.Println("start vulscan")
for _, targetIP := range AlivePorts {
info.Host, info.Ports = strings.Split(targetIP, ":")[0], strings.Split(targetIP, ":")[1]
if info.Scantype == "all" {
@ -63,7 +64,8 @@ func Scan(info common.HostInfo) {
}
}
wg.Wait()
common.WaitSave()
close(common.Results)
fmt.Println(fmt.Sprintf("已完成 %v/%v", common.End, common.Num))
}
var Mutex = &sync.Mutex{}

View File

@ -25,12 +25,13 @@ func SmbScan(info *common.HostInfo) (tmperr error) {
return err
} else {
errlog := fmt.Sprintf("[-] smb %v:%v %v %v %v", info.Host, 445, user, pass, err)
errlog = strings.Replace(errlog, "\n", "", -1)
common.LogError(errlog)
tmperr = err
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Userdict["smb"])*len(common.Passwords)) * info.Timeout) {
return err
}
}

View File

@ -24,7 +24,7 @@ func SshScan(info *common.HostInfo) (tmperr error) {
if common.CheckErrs(err) {
return err
}
if time.Now().Unix()-starttime > 300 {
if time.Now().Unix()-starttime > (int64(len(common.Userdict["ssh"])*len(common.Passwords)) * info.Timeout) {
return err
}
}

View File

@ -95,7 +95,7 @@ func geturl(info *common.HostInfo, flag bool, CheckData []WebScan.CheckDatas) (e
title = "None"
}
if flag == true {
result := fmt.Sprintf("WebTitle:%-25v %-3v %v", Url, resp.StatusCode, title)
result := fmt.Sprintf("[*] WebTitle:%-25v %-3v %v", Url, resp.StatusCode, title)
common.LogSuccess(result)
}

View File

@ -106,7 +106,13 @@ func ParseInput(Info *HostInfo) {
flag.Usage()
os.Exit(0)
}
//LogErr = Info.Debug
if LogErr {
WaitTime = 10
} else {
WaitTime = 100
}
if TmpOutputfile != "" {
if !strings.Contains(Outputfile, "/") && !strings.Contains(Outputfile, `\`) {
Outputfile = getpath() + TmpOutputfile

View File

@ -10,14 +10,13 @@ import (
var Num int64
var End int64
var Results = make(chan string)
var Worker = 0
var Start = true
var LogSucTime int64
var LogErr bool
var LogErrTime int64
var WaitTime int64
func LogSuccess(result string) {
Worker++
LogSucTime = time.Now().Unix()
if Start {
go SaveLog()
@ -32,7 +31,6 @@ func SaveLog() {
if IsSave {
WriteFile(result, Outputfile)
}
Worker--
}
}
@ -50,23 +48,11 @@ func WriteFile(result string, filename string) {
}
}
func WaitSave() {
for {
if Worker <= 0 {
close(Results)
return
}
}
}
func LogError(errinfo interface{}) {
if LogErr {
if (time.Now().Unix()-LogSucTime) > 10 && (time.Now().Unix()-LogErrTime) > 10 {
fmt.Println(errinfo)
fmt.Println(fmt.Sprintf("已完成 %v/%v", End, Num))
if (time.Now().Unix()-LogSucTime) > WaitTime && (time.Now().Unix()-LogErrTime) > WaitTime {
fmt.Println(fmt.Sprintf("已完成 %v/%v %v", End, Num, errinfo))
LogErrTime = time.Now().Unix()
}
}
}
func CheckErrs(err error) bool {