mirror of https://github.com/qwqdanchun/fscan.git
修改线程处理机制
This commit is contained in:
parent
d6e8d37ce8
commit
7535fdace7
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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{}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue