!14 添加os check

Merge pull request !14 from 宋帮诚晋/song-dev
This commit is contained in:
宋帮诚晋 2022-11-01 13:05:56 +00:00 committed by Gitee
commit 08da248509
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
6 changed files with 104 additions and 39 deletions

BIN
main

Binary file not shown.

44
main.go
View File

@ -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)
}

View File

@ -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
}

View File

@ -0,0 +1,2 @@
package Actuator

67
src/Cache/Cache.go Normal file
View File

@ -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)
}

View File

@ -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
}