mirror of https://gitee.com/openkylin/genmai.git
commit
08da248509
44
main.go
44
main.go
|
@ -1,30 +1,3 @@
|
|||
////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Filename: main.go
|
||||
//
|
||||
// Version: 1.0
|
||||
// Created: 2022年10月25日 01时01分22秒
|
||||
// Revision: none
|
||||
// Compiler: go
|
||||
//
|
||||
// Author: alpha
|
||||
// Organization: alpha
|
||||
// Contacts: chenxinquan@kylinos.cn
|
||||
//
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Log:
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
// Todo:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
package main
|
||||
|
||||
|
@ -34,6 +7,7 @@ import (
|
|||
// "fmt"
|
||||
"flag"
|
||||
"strconv"
|
||||
"main/src/Actuator"
|
||||
)
|
||||
type Vul struct{
|
||||
ParserNum int //协程数量
|
||||
|
@ -42,23 +16,33 @@ type Vul struct{
|
|||
Kernel string //内核漏洞检测
|
||||
Fuzz string //Fuzz
|
||||
BaseLine string //基线检测
|
||||
Update string //更新软件
|
||||
Docs string //生成报告
|
||||
PoolStatNum int //启动协程任务数
|
||||
}
|
||||
func main(){
|
||||
var vul Vul
|
||||
result:=Actuator.OsCheck()
|
||||
if result=="flase"{
|
||||
return
|
||||
}
|
||||
flag.IntVar(&vul.ParserNum, "POOL_NUMS", 0, "set coprogram nums")
|
||||
var System = flag.Bool("system", false, "Use only system")
|
||||
var Kernel = flag.Bool("kernel", false, "Use only kernel")
|
||||
var Web = flag.Bool("web", false, "Use only web")
|
||||
var BaseLine = flag.Bool("baseline", false, "Use only baseline")
|
||||
var All = flag.Bool("all", false, "ALL")
|
||||
PoolStatNum :=0
|
||||
var All = flag.Bool("all", false, "'ALL' is check BaseLine、kernel and system")
|
||||
var Update = flag.Bool("update", false, "update entire program")
|
||||
vul.PoolStatNum =0
|
||||
flag.Parse()
|
||||
|
||||
//初始化bool值
|
||||
vul.System = strconv.FormatBool(*System)
|
||||
vul.Kernel = strconv.FormatBool(*Kernel)
|
||||
vul.Web = strconv.FormatBool(*Web)
|
||||
vul.BaseLine = strconv.FormatBool(*BaseLine)
|
||||
sAll :=strconv.FormatBool(*All)
|
||||
Parser.ParameterParser(vul.System,vul.Kernel,vul.Web,vul.BaseLine,sAll,PoolStatNum,vul.ParserNum)
|
||||
vul.Update=strconv.FormatBool(*Update)
|
||||
Parser.ParameterParser(vul.System,vul.Kernel,vul.Web,vul.BaseLine,sAll,vul.PoolStatNum,vul.ParserNum,vul.Update)
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package SystemVulnerabilities
|
||||
package Actuator
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"log"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func SystemVulnerabilities() {
|
||||
exePocFirst := ""
|
||||
exePocSec := ""
|
||||
cmd := exec.Command(exePocFirst,exePocSec)
|
||||
func OsCheck()string {
|
||||
var result string
|
||||
cmdStr:="uname -a|awk '{print $1,$13}'"
|
||||
cmd := exec.Command("/bin/bash", "-c", cmdStr)
|
||||
var stdout, stderr bytes.Buffer
|
||||
cmd.Stdout = &stdout // 标准输出
|
||||
cmd.Stderr = &stderr // 标准错误
|
||||
|
@ -18,8 +19,16 @@ func SystemVulnerabilities() {
|
|||
if len(errStr)!=0{
|
||||
fmt.Printf(errStr)
|
||||
}
|
||||
fmt.Printf(outStr)
|
||||
outStr=strings.TrimSpace(outStr)
|
||||
if outStr=="Linux x86_64"{
|
||||
|
||||
result="true"
|
||||
}else{
|
||||
|
||||
result="flase"
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatalf("cmd.Run() failed with %s\n", errStr)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
package Actuator
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
package Cache
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/patrickmn/go-cache"
|
||||
"time"
|
||||
)
|
||||
|
||||
func SiteCache() {
|
||||
// 创建一个默认过期时间为 5 分钟的缓存,每 10 分钟清除一次过期项目
|
||||
c := cache.New(5*time.Minute, 10*time.Minute)
|
||||
|
||||
// 使用默认过期时间,将 key "foo" 的 vaule 设置为 "bar"
|
||||
c.Set("foo", "bar", cache.DefaultExpiration)
|
||||
|
||||
// 将 key "baz" 的 vaule 设置为 42,并设置为永不过期
|
||||
// (这个 item 将不会被移除,直到缓存被重置,或者通过 c.Delete("baz") 移除。)
|
||||
c.Set("baz", 42, cache.NoExpiration)
|
||||
|
||||
// 从缓存中获取与 key "foo" 关联的字符串
|
||||
v1, found := c.Get("set")
|
||||
if found {
|
||||
fmt.Printf("v1: %s\n", v1)
|
||||
}
|
||||
|
||||
// 因为 Go 是静态类型的,并且缓存值可以是任何东西,
|
||||
// 所以当值被传递给不采用任意类型的函数(即 interface{})时,需要类型断言。
|
||||
// 对只会使用一次的值,执行此操作的最简单方法是:
|
||||
// 示例 传递一个值给函数
|
||||
v2, found := c.Get("foo")
|
||||
if found {
|
||||
MyFunction(v2.(string))
|
||||
}
|
||||
|
||||
// 如果在同一个函数中多次使用该值,这将变得乏味。
|
||||
// 可以改为执行以下任一操作:
|
||||
if x, found := c.Get("foo"); found {
|
||||
v3 := x.(string)
|
||||
fmt.Printf("v3: %s\n", v3)
|
||||
|
||||
// ...
|
||||
}
|
||||
// or
|
||||
var v4 string
|
||||
if x, found := c.Get("foo"); found {
|
||||
v4 = x.(string)
|
||||
}
|
||||
fmt.Printf("v4: %s\n", v4)
|
||||
// ...
|
||||
// 然后 foo 可以作为字符串自由传递
|
||||
|
||||
// Want performance? Store pointers!
|
||||
c.Set("foo", &MyStruct{Msg: "test"}, cache.DefaultExpiration)
|
||||
if x, found := c.Get("foo"); found {
|
||||
v5 := x.(*MyStruct)
|
||||
fmt.Printf("v5: %s\n", v5)
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
type MyStruct struct {
|
||||
Msg string
|
||||
}
|
||||
|
||||
func MyFunction(msg string) {
|
||||
fmt.Println(msg)
|
||||
}
|
|
@ -5,7 +5,7 @@ import(
|
|||
"fmt"
|
||||
"main/src/Pool"
|
||||
)
|
||||
func ParameterParser(sSystem string,sKernel string,sWeb string,sBaseLine string,sAll string,PoolStatNum int,ParserNum int){
|
||||
func ParameterParser(sSystem string,sKernel string,sWeb string,sBaseLine string,sAll string,PoolStatNum int,ParserNum int,Update string){
|
||||
if sSystem=="true"{
|
||||
PoolStatNum=PoolStatNum+1
|
||||
}
|
||||
|
@ -21,7 +21,10 @@ func ParameterParser(sSystem string,sKernel string,sWeb string,sBaseLine string,
|
|||
if sAll=="true"{
|
||||
PoolStatNum=4
|
||||
}
|
||||
if sSystem!="true"&&sKernel!="true"&&sWeb!="true"&&sBaseLine!="true"&&sAll!="true"{
|
||||
if Update=="true"{
|
||||
fmt.Println("Updating")
|
||||
}
|
||||
if sSystem!="true"&&sKernel!="true"&&sWeb!="true"&&sBaseLine!="true"&&sAll!="true"&&Update!="true"{
|
||||
flag.PrintDefaults()
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue