mirror of https://gitee.com/openkylin/genmai.git
98 lines
3.3 KiB
Go
98 lines
3.3 KiB
Go
|
||
package main
|
||
|
||
import (
|
||
"main/src/genmai/ArgParser"
|
||
"main/src/genmai/FrameWorkCheck"
|
||
"fmt"
|
||
"flag"
|
||
"log"
|
||
"strconv"
|
||
"strings"
|
||
genmai "main/src/genmai"
|
||
)
|
||
type Vul struct{
|
||
ParserNum int //协程数
|
||
System string //执行系统漏洞检测
|
||
Web string //Web漏洞检测
|
||
Kernel string //内核漏洞检测
|
||
Fuzz string //Fuzz
|
||
BaseLine string //基线检测
|
||
Update string //更新软件
|
||
Docs string //生成报告
|
||
PoolStatNum int //启动协程任务数
|
||
IP string //web 制定IP
|
||
MD string //生成MD文件
|
||
RemoteAssessment string //远程检测
|
||
SSHHost string //主机IP
|
||
SSHUser string //用户名
|
||
SSHPassword string //密码
|
||
}
|
||
func main(){
|
||
|
||
var vul Vul //定义vul
|
||
vul.PoolStatNum =0
|
||
|
||
//开始日志打印日志
|
||
genmai.LogInit()
|
||
|
||
//检测系统架构
|
||
frameWork:=FrameWorkCheck.FwCheck()
|
||
if len(frameWork) > 0{
|
||
log.Println("frameWork sure")
|
||
}else{
|
||
return
|
||
}
|
||
|
||
|
||
//识别参数,执行模块
|
||
flag.IntVar(&vul.ParserNum, "poolNums", 0, "设置协程的数量,默认数量为0,最大数量为200")
|
||
flag.StringVar(&vul.Web, "web", "false", "使用web漏洞的验证模块,可联合其他模块使用")
|
||
flag.StringVar(&vul.IP, "ip", "false", "设置ip,可设置ip段进行验证")
|
||
flag.StringVar(&vul.System, "system", "false", "使用系统漏洞的验证模块,可联合其他模块使用")
|
||
flag.StringVar(&vul.Kernel, "kernel", "false", "使用内核漏洞的验证模块,可联合其他模块使用")
|
||
flag.StringVar(&vul.BaseLine, "baseline", "false", "使用基线检测模块,可联合其他模块使用")
|
||
|
||
//远程模块参数
|
||
RA := flag.Bool("RA", false, "使用远程检测,只能单独使用模块")
|
||
flag.StringVar(&vul.SSHHost, "H", "false", "远程检测指定host")
|
||
flag.StringVar(&vul.SSHUser, "user", "false", "远程检测指定用户")
|
||
flag.StringVar(&vul.SSHPassword, "passwd", "false", "远程登录密码")
|
||
|
||
|
||
All := flag.Bool("all", false, "只扫描除web模块外的所有模块的所有poc,不可联合其他参数使用")
|
||
|
||
Update := flag.Bool("update", false, "更新程序到最新版本,不可联合其他参数使用")
|
||
|
||
flag.Parse()
|
||
|
||
//初始化bool值
|
||
sAll :=strconv.FormatBool(*All)
|
||
vul.Update=strconv.FormatBool(*Update)
|
||
vul.RemoteAssessment=strconv.FormatBool(*RA)
|
||
|
||
//是否开启远程检测
|
||
if vul.RemoteAssessment=="true"{
|
||
checkResult:=ArgParser.RemoteArgParser(vul.SSHHost,vul.SSHUser,vul.SSHPassword)
|
||
checkResult=strings.TrimSpace(checkResult)
|
||
if checkResult=="true"{
|
||
fmt.Println("不允许登录root/administrator用户进行验证")
|
||
log.Println("不允许登录root/administrator用户进行验证")
|
||
}else if checkResult=="false"{
|
||
ArgParser.ParameterParser(vul.System,vul.Kernel,vul.Web,vul.BaseLine,sAll,vul.PoolStatNum,vul.ParserNum,vul.Update,vul.IP)
|
||
}
|
||
|
||
}else{
|
||
ArgParser.ParameterParser(vul.System,vul.Kernel,vul.Web,vul.BaseLine,sAll,vul.PoolStatNum,vul.ParserNum,vul.Update,vul.IP)
|
||
}
|
||
return
|
||
|
||
///////////////////////////////
|
||
// test "main/src/genmai"
|
||
genmai.Test()
|
||
// config := genmai.NewConfig()
|
||
fmt.Println(">>")
|
||
//fmt.Println(config["id"])
|
||
return
|
||
}
|