├── .gitignore ├── images ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg └── 5.jpg ├── AceofHearts.ico ├── resource.syso ├── utils ├── title.go ├── title2.go ├── cmd.go ├── log.go ├── unzip.go ├── choco_install.go ├── download.go └── git_releases.go ├── config └── config.go ├── models ├── banner.go ├── sysinfo.go ├── sysoptimization.go ├── doskey.go └── setting.go ├── main.go ├── go.mod ├── install ├── launcher.go ├── env.go ├── development.go ├── productivity.go └── penetration_testing_tools.go ├── versioninfo.json ├── go.sum └── README.MD /.gitignore: -------------------------------------------------------------------------------- 1 | /.DS_Store 2 | /.idea -------------------------------------------------------------------------------- /images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/images/1.jpg -------------------------------------------------------------------------------- /images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/images/2.jpg -------------------------------------------------------------------------------- /images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/images/3.jpg -------------------------------------------------------------------------------- /images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/images/4.jpg -------------------------------------------------------------------------------- /images/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/images/5.jpg -------------------------------------------------------------------------------- /AceofHearts.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/AceofHearts.ico -------------------------------------------------------------------------------- /resource.syso: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mustard404/AceofHearts/HEAD/resource.syso -------------------------------------------------------------------------------- /utils/title.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "fmt" 6 | ) 7 | 8 | func Title(title string) { 9 | fmt.Println(config.Cyan(` 10 | =========================================== 11 | ## ` + title + ` 12 | =========================================== 13 | `)) 14 | Log("## %s\t\n", title) 15 | } 16 | -------------------------------------------------------------------------------- /utils/title2.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "fmt" 6 | ) 7 | 8 | func Title2(title string) { 9 | fmt.Println(config.Cyan(` 10 | =========================================== 11 | ## ` + title + ` 12 | =========================================== 13 | `)) 14 | Log("### %s\t\n", title) 15 | } 16 | -------------------------------------------------------------------------------- /config/config.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | import "github.com/fatih/color" 4 | 5 | var AccessToken string 6 | var ExecutablePath string 7 | var ToolDirectory map[string]string 8 | 9 | func init() { 10 | ToolDirectory = make(map[string]string) 11 | } 12 | 13 | var Cyan = color.New(color.FgCyan).SprintFunc() 14 | var Green = color.New(color.FgGreen).SprintFunc() 15 | var Magenta = color.New(color.FgMagenta).SprintFunc() 16 | var Red = color.New(color.FgRed).SprintFunc() 17 | -------------------------------------------------------------------------------- /utils/cmd.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "fmt" 6 | "log" 7 | "os/exec" 8 | "strings" 9 | ) 10 | 11 | func Cmd(command string, args ...string) bool { 12 | cmd := exec.Command(command, args...) 13 | 14 | cmdString := strings.Join(cmd.Args, " ") 15 | fmt.Println(config.Magenta("[AceofHearts]#:"), cmdString) 16 | 17 | _, err := cmd.Output() 18 | if err != nil { 19 | fmt.Println(err) 20 | log.Fatal(err) 21 | return false 22 | } 23 | 24 | return true 25 | } 26 | -------------------------------------------------------------------------------- /models/banner.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "fmt" 6 | ) 7 | 8 | func Banner() { 9 | fmt.Println(` 10 | ┌──────────┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐ 11 | │ ` + config.Red("A") + ` ││││││││││││││││││││││ 12 | │ ││││││││││││││││││││││ 13 | │ ` + config.Red("❤") + ` ││││││││││││││││││││││ 14 | │ ││││││││││││││││││││││ 15 | │ ` + config.Red("A") + ` ││││││││││││││││││││││ 16 | └──────────┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘ 17 | -- Version: 1.0 18 | -- By: Mustard404 19 | `) 20 | } 21 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/install" 6 | "AceofHearts/models" 7 | "os" 8 | "path/filepath" 9 | ) 10 | 11 | func main() { 12 | 13 | executablePath, _ := os.Executable() 14 | config.ExecutablePath = filepath.Dir(executablePath) 15 | logFile := filepath.Join(config.ExecutablePath, "LOG.MD") 16 | 17 | os.RemoveAll(logFile) 18 | models.Banner() 19 | models.Setting() 20 | models.Sysinfo() 21 | models.Sysoptimization() 22 | install.Env() 23 | install.Productivity() 24 | install.Development() 25 | install.PenetrationTestingTools() 26 | install.Launcher() 27 | models.Doskey() 28 | 29 | } 30 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module AceofHearts 2 | 3 | go 1.20 4 | 5 | require ( 6 | github.com/StackExchange/wmi v1.2.1 7 | github.com/cheggaaa/pb/v3 v3.1.2 8 | github.com/fatih/color v1.15.0 9 | github.com/go-resty/resty/v2 v2.7.0 10 | golang.org/x/sys v0.6.0 11 | gopkg.in/ini.v1 v1.67.0 12 | ) 13 | 14 | require ( 15 | github.com/VividCortex/ewma v1.2.0 // indirect 16 | github.com/go-ole/go-ole v1.2.5 // indirect 17 | github.com/mattn/go-colorable v0.1.13 // indirect 18 | github.com/mattn/go-isatty v0.0.17 // indirect 19 | github.com/mattn/go-runewidth v0.0.12 // indirect 20 | github.com/rivo/uniseg v0.2.0 // indirect 21 | github.com/stretchr/testify v1.8.4 // indirect 22 | golang.org/x/net v0.0.0-20211029224645-99673261e6eb // indirect 23 | ) 24 | -------------------------------------------------------------------------------- /utils/log.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "bufio" 6 | "fmt" 7 | "os" 8 | "path/filepath" 9 | ) 10 | 11 | func Log(format string, args ...interface{}) { 12 | 13 | logfile := filepath.Join(config.ExecutablePath, "LOG.MD") 14 | file, err := os.OpenFile(logfile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) 15 | if err != nil { 16 | fmt.Println("无法打开日志文件:", err) 17 | return 18 | } 19 | defer file.Close() 20 | 21 | writer := bufio.NewWriter(file) 22 | 23 | log := fmt.Sprintf(format, args...) 24 | 25 | _, err = writer.WriteString(log) 26 | if err != nil { 27 | fmt.Println("无法写入日志:", err) 28 | return 29 | } 30 | 31 | err = writer.Flush() 32 | if err != nil { 33 | fmt.Println("无法刷新日志缓冲区:", err) 34 | return 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /utils/unzip.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "fmt" 6 | "os" 7 | "path/filepath" 8 | "strings" 9 | "time" 10 | ) 11 | 12 | func Unzip(zipFilePath string, outputDir string, move bool) { 13 | if move { 14 | tempDir := filepath.Dir(outputDir) 15 | cmdPath := "Bandizip.exe" 16 | cmdArgs := []string{"bx", "-y", fmt.Sprintf("-o:%s", tempDir), zipFilePath} 17 | Cmd(cmdPath, cmdArgs...) 18 | // 让子弹飞一会。。。 19 | time.Sleep(3 * time.Second) 20 | os.RemoveAll(outputDir) 21 | baseName := filepath.Base(zipFilePath) 22 | baseName = strings.TrimSuffix(baseName, filepath.Ext(baseName)) 23 | tempDir = filepath.Join(tempDir, baseName) 24 | err := os.Rename(tempDir, outputDir) 25 | if err != nil { 26 | fmt.Println(config.Red("重命名文件夹失败:"), err) 27 | return 28 | } 29 | } else { 30 | cmdPath := "Bandizip.exe" 31 | cmdArgs := []string{"bx", "-y", fmt.Sprintf("-o:%s", outputDir), zipFilePath} 32 | Cmd(cmdPath, cmdArgs...) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /install/launcher.go: -------------------------------------------------------------------------------- 1 | package install 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "os" 8 | "path/filepath" 9 | ) 10 | 11 | func Launcher() { 12 | 13 | utils.Title("启动器部署") 14 | os.Mkdir(config.ToolDirectory["Dawn_Launcher"], 0755) 15 | filename, version, description := utils.GitReleases("AceofHearts404", "Dawn_Launcher", ".zip", config.ToolDirectory["TEMP"]) 16 | utils.Unzip(filename, config.ToolDirectory["Dawn_Launcher"], false) 17 | fmt.Println(config.Green("Dawn_Launcher 部署完成!")) 18 | utils.Log(fmt.Sprintf("-\tDawn_Launcher\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Dawn_Launcher"])) 19 | 20 | fmt.Println("创建启动器桌面快捷方式") 21 | homeDirectory, _ := os.UserHomeDir() 22 | homeDirectory = filepath.Join(homeDirectory, "Desktop\\Dawn Launcher") 23 | launcherDirectory := fmt.Sprintf("%s\\Dawn Launcher.exe", config.ToolDirectory["Dawn_Launcher"]) 24 | utils.Cmd("cmd", "/k", "mklink", homeDirectory, launcherDirectory) 25 | 26 | } 27 | -------------------------------------------------------------------------------- /versioninfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "FixedFileInfo": { 3 | "FileVersion": { 4 | "Major": 1, 5 | "Minor": 0, 6 | "Patch": 0, 7 | "Build": 0 8 | }, 9 | "ProductVersion": { 10 | "Major": 1, 11 | "Minor": 0, 12 | "Patch": 0, 13 | "Build": 0 14 | }, 15 | "FileFlagsMask": "3f", 16 | "FileFlags ": "00", 17 | "FileOS": "040004", 18 | "FileType": "01", 19 | "FileSubType": "00" 20 | }, 21 | "StringFileInfo": { 22 | "Comments": "", 23 | "CompanyName": "Mustard404", 24 | "FileDescription": "", 25 | "FileVersion": "v1.01", 26 | "InternalName": "", 27 | "LegalCopyright": "Copyright 2023 Mustard404 . All rights reserved.", 28 | "LegalTrademarks": "", 29 | "OriginalFilename": "", 30 | "PrivateBuild": "", 31 | "ProductName": "AceofHearts", 32 | "ProductVersion": "v1.0.0.0", 33 | "SpecialBuild": "" 34 | }, 35 | "VarFileInfo": { 36 | "Translation": { 37 | "LangID": "0409", 38 | "CharsetID": "04B0" 39 | } 40 | }, 41 | "IconPath": "AceofHearts.ico", 42 | "ManifestPath": "" 43 | } -------------------------------------------------------------------------------- /utils/choco_install.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "fmt" 6 | "log" 7 | "os/exec" 8 | "strings" 9 | ) 10 | 11 | func ChocoInstall(name string, packageName string, directory string, command []string, args ...string) { 12 | cmdArgs := []string{"install", packageName, "-y"} 13 | cmdArgs = append(cmdArgs, command...) 14 | cmdArgs = append(cmdArgs, args...) 15 | result := exec.Command("choco", cmdArgs...) 16 | 17 | cmdString := strings.Join(result.Args, " ") 18 | fmt.Println(config.Magenta("[AceofHearts]#:"), cmdString) 19 | 20 | out, err := result.Output() 21 | if err != nil { 22 | message := fmt.Sprintf("%s 部署失败!", name) 23 | fmt.Println(config.Red(message)) 24 | fmt.Println(string(out)) 25 | log.Fatal(err) 26 | } 27 | message := fmt.Sprintf("%s 部署成功!", name) 28 | fmt.Println(config.Green(message)) 29 | Version := checkVersion(packageName) 30 | Log("-\t%s部署成功!\t\n\t-\t版本:%s\t\n\t-\t路径: %s\n", name, Version, directory) 31 | } 32 | 33 | func checkVersion(packageName string) string { 34 | 35 | cmd := exec.Command("choco", "list") 36 | output, err := cmd.Output() 37 | if err != nil { 38 | log.Fatal(err) 39 | } 40 | 41 | lines := strings.Split(string(output), "\n") 42 | for _, line := range lines { 43 | if strings.Contains(strings.ToLower(line), strings.ToLower(packageName)) { 44 | fields := strings.Fields(line) 45 | if len(fields) >= 2 { 46 | return fields[1] 47 | } 48 | } 49 | } 50 | 51 | return fmt.Sprintf("无法找到包名为 %s 的版本号", packageName) 52 | } 53 | -------------------------------------------------------------------------------- /install/env.go: -------------------------------------------------------------------------------- 1 | package install 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "os" 8 | "strings" 9 | ) 10 | 11 | func Env() { 12 | 13 | utils.Title("编程环境部署") 14 | os.Mkdir(config.ToolDirectory["Env"], 0755) 15 | 16 | gitCommand := []string{fmt.Sprintf("--install-arguments=\"/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /DIR=%s\"", config.ToolDirectory["Git"])} 17 | utils.ChocoInstall("Git", "git", config.ToolDirectory["Git"], gitCommand) 18 | 19 | goCommand := []string{fmt.Sprintf("--install-arguments=\"INSTALLDIR=%s /qn /norestart\"", config.ToolDirectory["Go"])} 20 | utils.ChocoInstall("Go", "golang", config.ToolDirectory["Go"], goCommand) 21 | 22 | config.ToolDirectory["Java8"] = strings.Replace(config.ToolDirectory["Java8"], "\\", "\\\\", -1) 23 | java8Command := []string{"-params", fmt.Sprintf("installdir=%s", config.ToolDirectory["Java8"])} 24 | utils.ChocoInstall("Java8", "jdk8", config.ToolDirectory["Java8"], java8Command) 25 | 26 | laragonCommand := []string{fmt.Sprintf("--install-arguments=\"/SILENT /VERYSILENT /DIR=%s\"", config.ToolDirectory["Laragon"])} 27 | utils.ChocoInstall("Laragon", "laragon", config.ToolDirectory["Laragon"], laragonCommand) 28 | 29 | nodeCommand := []string{fmt.Sprintf("--install-arguments='/qn INSTALLDIR=%s'", config.ToolDirectory["Node"])} 30 | utils.ChocoInstall("Node", "nodejs-lts", config.ToolDirectory["Node"], nodeCommand) 31 | 32 | python2Command := []string{fmt.Sprintf("--params='/InstallDir:%s'", config.ToolDirectory["Python2"])} 33 | utils.ChocoInstall("Python2", "python2", config.ToolDirectory["Python2"], python2Command) 34 | 35 | python3Command := []string{fmt.Sprintf("--params='/InstallDir:%s'", config.ToolDirectory["Python3"])} 36 | utils.ChocoInstall("Python3", "python311", config.ToolDirectory["Python3"], python3Command) 37 | 38 | rubyCommand := []string{fmt.Sprintf("--install-arguments=\"/Dir=%s\"", config.ToolDirectory["Ruby"])} 39 | utils.ChocoInstall("Ruby", "ruby", config.ToolDirectory["Ruby"], rubyCommand) 40 | } 41 | -------------------------------------------------------------------------------- /utils/download.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "fmt" 5 | "github.com/cheggaaa/pb/v3" 6 | "io" 7 | "net/http" 8 | "os" 9 | "strings" 10 | ) 11 | 12 | func Download(link string, directory string) string { 13 | err := os.MkdirAll(directory, 0755) 14 | if err != nil { 15 | fmt.Errorf("无法创建目录:%s", err) 16 | } 17 | 18 | resp, err := http.Get(link) 19 | if err != nil { 20 | fmt.Fprintf(os.Stderr, "下载失败:%v\n", err) 21 | os.Exit(1) 22 | } 23 | defer resp.Body.Close() 24 | 25 | filename := getFilenameFromURL(link, resp.Header.Get("Content-Disposition")) 26 | if filename == "" { 27 | filename = getFilenameFromURL(link, "") 28 | } 29 | fmt.Printf("Downloading %s...\n", filename) 30 | filename = fmt.Sprintf("%s\\%s", directory, filename) 31 | 32 | file, err := os.Create(filename) 33 | if err != nil { 34 | fmt.Fprintf(os.Stderr, "创建文件失败:%v\n", err) 35 | os.Exit(1) 36 | } 37 | defer file.Close() 38 | 39 | contentLength := resp.ContentLength 40 | 41 | // 使用进度条 42 | bar := pb.Full.Start64(contentLength) 43 | bar.Set(pb.Bytes, true) 44 | bar.SetTemplateString(`{{string . "prefix"}}{{counters . }} {{bar . }} {{percent . }} {{string . "suffix"}}`) 45 | defer bar.Finish() 46 | 47 | reader := bar.NewProxyReader(resp.Body) 48 | 49 | _, err = io.Copy(file, reader) 50 | if err != nil { 51 | fmt.Fprintf(os.Stderr, "下载失败:%v\n", err) 52 | os.Exit(1) 53 | } 54 | 55 | return filename 56 | } 57 | 58 | func getFilenameFromURL(link string, contentDisposition string) string { 59 | // 从 Content-Disposition 中提取文件名 60 | if contentDisposition != "" { 61 | startIndex := strings.Index(contentDisposition, "filename=") 62 | if startIndex != -1 { 63 | startIndex += len("filename=") 64 | endIndex := strings.Index(contentDisposition[startIndex:], ";") 65 | if endIndex == -1 { 66 | endIndex = len(contentDisposition) 67 | } else { 68 | endIndex += startIndex 69 | } 70 | filename := contentDisposition[startIndex:endIndex] 71 | filename = strings.Trim(filename, "\"'") 72 | if filename != "" { 73 | return filename 74 | } 75 | } 76 | } 77 | 78 | // 从 URL 中提取文件名 79 | tokens := strings.Split(link, "/") 80 | return tokens[len(tokens)-1] 81 | } 82 | -------------------------------------------------------------------------------- /models/sysinfo.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "github.com/StackExchange/wmi" 8 | "os" 9 | "os/exec" 10 | "os/user" 11 | "time" 12 | ) 13 | 14 | type Win32OperatingSystem struct { 15 | CSName string 16 | Caption string 17 | Version string 18 | OSArchitecture string 19 | WindowsDirectory string 20 | Description string 21 | } 22 | 23 | func isAdmin() (bool, error) { 24 | cmd := exec.Command("net", "session") 25 | err := cmd.Run() 26 | if err != nil { 27 | return false, nil 28 | } 29 | return true, nil 30 | } 31 | 32 | func Sysinfo() { 33 | 34 | utils.Title("系统信息获取") 35 | 36 | var osInfo []Win32OperatingSystem 37 | err := wmi.Query("SELECT CSName, Caption, Version, OSArchitecture, WindowsDirectory, Description FROM Win32_OperatingSystem", &osInfo) 38 | if err != nil { 39 | fmt.Println(config.Red("获取系统信息失败:"), err) 40 | return 41 | } 42 | 43 | currentUser, err := user.Current() 44 | if err != nil { 45 | fmt.Println(config.Red("获取用户信息失败:"), err) 46 | return 47 | } 48 | 49 | isAdmin, err := isAdmin() 50 | if err != nil { 51 | fmt.Println(config.Red("获取用户权限失败:"), err) 52 | return 53 | } 54 | 55 | if len(osInfo) > 0 { 56 | SystemOs := osInfo[0] 57 | fmt.Printf("电脑名称: %s\n", SystemOs.CSName) 58 | fmt.Printf("操作系统名称: %s\n", SystemOs.Caption) 59 | fmt.Printf("操作系统版本: %s\n", SystemOs.Version) 60 | fmt.Printf("操作系统位数: %s\n", SystemOs.OSArchitecture) 61 | fmt.Printf("操作系统路径: %s\n", SystemOs.WindowsDirectory) 62 | fmt.Printf("系统激活状态: %s\n", SystemOs.Description) 63 | fmt.Printf("当前用户名: %s\n", currentUser.Username) 64 | utils.Log("-\t电脑名称: %s\t\n", SystemOs.CSName) 65 | utils.Log("-\t操作系统名称: %s\t\n", SystemOs.Caption) 66 | utils.Log("-\t操作系统版本: %s\t\n", SystemOs.Version) 67 | utils.Log("-\t操作系统位数: %s\t\n", SystemOs.OSArchitecture) 68 | utils.Log("-\t操作系统路径: %s\t\n", SystemOs.WindowsDirectory) 69 | utils.Log("-\t系统激活状态: %s\t\n", SystemOs.Description) 70 | utils.Log("-\t当前用户名: %s\t\n", currentUser.Username) 71 | } 72 | 73 | if isAdmin { 74 | fmt.Println("管理员权限:" + config.Green("是")) 75 | } else { 76 | fmt.Println("管理员权限:" + config.Red("否")) 77 | fmt.Println(config.Red("请重新以管理员身份运行...")) 78 | time.Sleep(time.Minute) 79 | os.Exit(0) 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /install/development.go: -------------------------------------------------------------------------------- 1 | package install 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "encoding/json" 7 | "fmt" 8 | "github.com/go-resty/resty/v2" 9 | "log" 10 | "os" 11 | ) 12 | 13 | func Development() { 14 | 15 | utils.Title("开发环境部署") 16 | os.Mkdir(config.ToolDirectory["Development"], 0755) 17 | 18 | mobaxtermCommand := []string{"--installargs", fmt.Sprintf("INSTALLDIR=%s", config.ToolDirectory["Mobaxterm"])} 19 | utils.ChocoInstall("Mobaxterm", "mobaxterm", config.ToolDirectory["Mobaxterm"], mobaxtermCommand) 20 | 21 | fileName := utils.Download(getNavicatPremium(), config.ToolDirectory["TEMP"]) 22 | result := utils.Cmd(fileName, "/SILENT", "/VERYSILENT", fmt.Sprintf("/DIR=%s", config.ToolDirectory["Navicat_Premium"])) 23 | if result { 24 | fmt.Println(config.Green("Navicat Premium部署成功! \n")) 25 | utils.Log(fmt.Sprintf("-\tNavicat Premium部署成功! \t\n\t-\t版本: 16\t\n\t-\t路径: %s \n", config.ToolDirectory["Navicat_Premium"])) 26 | } else { 27 | fmt.Println(config.Red("Navicat Premium部署失败! \n")) 28 | utils.Log("-\tNavicat Premium部署失败! \n") 29 | } 30 | 31 | vscodeCommand := []string{fmt.Sprintf("--install-arguments='/DIR=\"%s\"'", config.ToolDirectory["Vscode"])} 32 | utils.ChocoInstall("Vscode", "vscode", config.ToolDirectory["Vscode"], vscodeCommand) 33 | 34 | winscpCommand := []string{fmt.Sprintf("--install-arguments='/DIR=\"%s\"'", config.ToolDirectory["Winscp"])} 35 | utils.ChocoInstall("Winscp", "winscp", config.ToolDirectory["Winscp"], winscpCommand) 36 | 37 | } 38 | 39 | type Response struct { 40 | DownloadLink string `json:"download_link"` 41 | BannerURL string `json:"banner_url"` 42 | } 43 | 44 | func getNavicatPremium() string { 45 | 46 | url := "https://www.navicat.com.cn/includes/Navicat/direct_download.php" 47 | payload := map[string]string{ 48 | "product": "navicat_premium_cs_x64.exe", 49 | "location": "1", 50 | "support": "", 51 | "linux_dist": "", 52 | } 53 | 54 | client := resty.New() 55 | resp, err := client.R(). 56 | SetFormData(payload). 57 | Post(url) 58 | 59 | if err != nil { 60 | log.Fatal("请求失败:", err) 61 | } 62 | 63 | if resp.StatusCode() == 200 { 64 | var response Response 65 | if err := json.Unmarshal(resp.Body(), &response); err != nil { 66 | log.Fatal("解析 Navicat Premium 下载地址失败! :", err) 67 | } 68 | return "http://" + response.DownloadLink 69 | } else { 70 | fmt.Println("请求Navicat Premium 下载地址失败! ,状态码:", resp.StatusCode()) 71 | } 72 | return "" 73 | } 74 | -------------------------------------------------------------------------------- /models/sysoptimization.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "os" 8 | ) 9 | 10 | func Sysoptimization() { 11 | 12 | utils.Title("系统优化") 13 | 14 | executablePath, _ := os.Executable() 15 | fmt.Printf("添加AceofHearts到Windows Defender白名单\n") 16 | result := utils.Cmd("powershell", "-Command", "Add-MpPreference", "-ExclusionPath", executablePath) 17 | if result { 18 | fmt.Println(config.Green("设置AceofHearts白名单成功!\n")) 19 | } else { 20 | fmt.Println(config.Red("设置AceofHearts白名单失败!\n")) 21 | } 22 | 23 | fmt.Printf("添加目录%s到Windows Defender白名单\n", config.ToolDirectory["Tools"]) 24 | result = utils.Cmd("powershell", "-Command", "Add-MpPreference", "-ExclusionPath", config.ToolDirectory["ROOT"]) 25 | if result { 26 | fmt.Println(config.Green("设置Windows Defender白名单成功!\n")) 27 | utils.Log("-\t设置Windows Defender白名单成功!\n") 28 | } else { 29 | fmt.Println(config.Red("设置Windows Defender白名单失败!\n")) 30 | utils.Log("-\t设置Windows Defender白名单失败!\n") 31 | } 32 | 33 | fmt.Printf("显示文件扩展名\n") 34 | result = utils.Cmd("reg", "add", "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", "/v", "HideFileExt", "/t", "REG_DWORD", "/d", "0", "/f") 35 | if result { 36 | fmt.Println(config.Green("显示文件扩展名成功!\n")) 37 | utils.Log("-\t显示文件扩展名成功!\n") 38 | } else { 39 | fmt.Println(config.Red("显示文件扩展名失败!\n")) 40 | utils.Log("-\t显示文件扩展名失败!\n") 41 | } 42 | 43 | fmt.Printf("开启Telnet客户端\n") 44 | result = utils.Cmd("dism", "/Online", "/Enable-Feature", "/FeatureName:TelnetClient") 45 | if result { 46 | fmt.Println(config.Green("开启Telnet客户端成功!\n")) 47 | utils.Log("-\t开启Telnet客户端成功!\n") 48 | } else { 49 | fmt.Println(config.Red("开启Telnet客户端失败!\n")) 50 | utils.Log("-\t开启Telnet客户端失败!\n") 51 | } 52 | 53 | fmt.Printf("部署Chocolatey\n") 54 | result = utils.Cmd("powershell", "-Command", "Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))") 55 | if result { 56 | fmt.Println(config.Green("部署Chocolatey成功!\n")) 57 | utils.Log("-\t部署Chocolatey成功!\n") 58 | } else { 59 | fmt.Println(config.Red("部署Chocolatey失败!\n")) 60 | utils.Log("-\t部署Chocolatey失败!\n") 61 | } 62 | // 添加Chocolatey到环境变量中 63 | PATH := os.Getenv("PATH") 64 | allusersprofile := os.Getenv("ALLUSERSPROFILE") 65 | updatedPath := allusersprofile + "\\chocolatey\\bin" + string(os.PathListSeparator) + PATH 66 | os.Setenv("Path", updatedPath) 67 | 68 | } 69 | -------------------------------------------------------------------------------- /utils/git_releases.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "encoding/json" 6 | "fmt" 7 | "github.com/fatih/color" 8 | "log" 9 | "net/http" 10 | "os" 11 | "strings" 12 | ) 13 | 14 | func GitReleases(user string, repo string, key string, directory string) (string, string, string) { 15 | 16 | api := fmt.Sprintf("https://api.github.com/repos/%s/%s", user, repo) 17 | 18 | req, err := http.NewRequest("GET", fmt.Sprintf("%s/releases/latest", api), nil) 19 | if err != nil { 20 | log.Fatal("创建请求失败:", err) 21 | } 22 | req.Header.Set("Authorization", fmt.Sprintf("Basic %s", config.AccessToken)) 23 | client := http.Client{} 24 | resp, err := client.Do(req) 25 | if err != nil { 26 | log.Fatal("请求失败:", err) 27 | } 28 | 29 | if resp.StatusCode == http.StatusForbidden { 30 | log.Println(config.Red("超出Github Api速率限制, 请更换accessToken!")) 31 | resp.Body.Close() 32 | os.Exit(0) 33 | } 34 | defer resp.Body.Close() 35 | 36 | var data map[string]interface{} 37 | err = json.NewDecoder(resp.Body).Decode(&data) 38 | if err != nil { 39 | log.Fatal("解析 JSON 失败:", err) 40 | } 41 | 42 | downloadUrl := "" 43 | if key == "main" { 44 | downloadUrl = fmt.Sprintf("https://github.com/%s/%s/archive/refs/heads/main.zip", user, repo) 45 | } else if key == "master" { 46 | downloadUrl = fmt.Sprintf("https://codeload.github.com/%s/%s/zip/refs/heads/master", user, repo) 47 | } else { 48 | for _, asset := range data["assets"].([]interface{}) { 49 | assetMap := asset.(map[string]interface{}) 50 | browserDownloadURL := assetMap["browser_download_url"].(string) 51 | if strings.Contains(browserDownloadURL, key) { 52 | downloadUrl = browserDownloadURL 53 | } 54 | } 55 | } 56 | 57 | var Version string 58 | 59 | if data["tag_name"] != nil { 60 | Version = data["tag_name"].(string) 61 | } else { 62 | Version = "暂无版本号!" 63 | } 64 | Description := GitDescription(api, config.AccessToken) 65 | Filename := Download(downloadUrl, directory) 66 | return Filename, Version, Description 67 | 68 | } 69 | 70 | func GitDescription(Api string, accessToken string) string { 71 | red := color.New(color.FgRed).SprintFunc() 72 | 73 | req, err := http.NewRequest("GET", fmt.Sprintf("%s/releases/latest", Api), nil) 74 | if err != nil { 75 | log.Fatal("创建请求失败:", err) 76 | } 77 | req.Header.Set("Authorization", fmt.Sprintf("Basic %s", accessToken)) 78 | client := http.Client{} 79 | resp, err := client.Do(req) 80 | if err != nil { 81 | log.Fatal("请求失败:", err) 82 | } 83 | defer resp.Body.Close() 84 | 85 | if resp.StatusCode == http.StatusForbidden { 86 | log.Println(red("超出Github Api速率限制, 请更换accessToken!")) 87 | resp.Body.Close() 88 | os.Exit(0) 89 | } 90 | 91 | var data map[string]interface{} 92 | err = json.NewDecoder(resp.Body).Decode(&data) 93 | if err != nil { 94 | log.Fatal("解析 JSON 失败:", err) 95 | } 96 | 97 | description, ok := data["description"].(string) 98 | if !ok { 99 | description = "暂无描述" 100 | } 101 | 102 | return description 103 | } 104 | -------------------------------------------------------------------------------- /install/productivity.go: -------------------------------------------------------------------------------- 1 | package install 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "golang.org/x/sys/windows/registry" 8 | "os" 9 | "runtime" 10 | ) 11 | 12 | func Productivity() { 13 | 14 | utils.Title("生产力工具部署") 15 | os.Mkdir(config.ToolDirectory["Productivity"], 0755) 16 | 17 | bandizipCommand := []string{fmt.Sprintf("--install-arguments=/D:\"%s\"", config.ToolDirectory["Bandizip"])} 18 | utils.ChocoInstall("Bandizip", "bandizip", config.ToolDirectory["Bandizip"], bandizipCommand) 19 | 20 | PATH := os.Getenv("PATH") 21 | updatedPath := config.ToolDirectory["Bandizip"] + string(os.PathListSeparator) + PATH 22 | os.Setenv("Path", updatedPath) 23 | 24 | bitwardenCommand := []string{"--ia", fmt.Sprintf("/D=\"%s\"", config.ToolDirectory["Bitwarden"])} 25 | utils.ChocoInstall("Bitwarden", "bitwarden", config.ToolDirectory["Bitwarden"], bitwardenCommand) 26 | 27 | // 无法通过命令安装指定目录 28 | //config.ToolDirectory["chrome"] = r"C:\Program Files\Google\\" 29 | var chromeCommand []string 30 | utils.ChocoInstall("Chrome", "googlechrome", config.ToolDirectory["Chrome"], chromeCommand) 31 | 32 | extensions := map[string]string{ 33 | "Bitwarden": "nngceckbapebfimnlniiiahkandclblb", 34 | "FOFA Pro View": "dobbfkjhgbkmmcooahlnllfopfmhcoln", 35 | "Hack-Tools": "cmbndhnoonmghfofefkcccljbkdpamhi", 36 | "HackBar": "ginpbkfigcoaokgflihfhhmglmbchinc", 37 | "IP, DNS & Security Tools": "phjkepckmcnjohilmbjlcoblenhgpjmo", 38 | "Proxy SwitchyOmega": "padekgcemlokbadohgkifijomclgjgif", 39 | "Wappalyzer": "gppongmhjkpfnbhagpmjfkannfbllamg", 40 | } 41 | 42 | for name, id := range extensions { 43 | chromeExtensions(name, id) 44 | } 45 | 46 | everythingCommand := []string{"--installargs", fmt.Sprintf("/D=%s", config.ToolDirectory["Everything"])} 47 | utils.ChocoInstall("Everything", "everything", config.ToolDirectory["Everything"], everythingCommand) 48 | 49 | firefoxCommand := []string{"--params", fmt.Sprintf("/InstallDir:%s", config.ToolDirectory["Firefox"])} 50 | utils.ChocoInstall("Firefox", "firefox", config.ToolDirectory["Firefox"], firefoxCommand) 51 | 52 | sublimetextCommand := []string{fmt.Sprintf("--install-arguments='/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /DIR=%s'", config.ToolDirectory["Sublime_Text"])} 53 | utils.ChocoInstall("SublimeText", "sublimetext4", config.ToolDirectory["Sublime_Text"], sublimetextCommand) 54 | 55 | typoraCommand := []string{fmt.Sprintf("--install-arguments='/DIR=%s'", config.ToolDirectory["Typora"])} 56 | utils.ChocoInstall("Typora", "typora", config.ToolDirectory["Typora"], typoraCommand) 57 | } 58 | 59 | func chromeExtensions(name string, id string) { 60 | 61 | var regKeyPath string 62 | updateURL := "https://clients2.google.com/service/update2/crx" 63 | 64 | if runtime.GOARCH == "amd64" { 65 | regKeyPath = "Software\\Wow6432Node\\Google\\Chrome\\Extensions" 66 | } else if runtime.GOARCH == "386" { 67 | regKeyPath = "Software\\Google\\Chrome\\Extensions" 68 | } else { 69 | fmt.Println("非Windows系统") 70 | return 71 | } 72 | 73 | regKeyPath = regKeyPath + "\\" + id 74 | extKey, _, err := registry.CreateKey(registry.LOCAL_MACHINE, regKeyPath, registry.CREATE_SUB_KEY|registry.SET_VALUE) 75 | if err != nil { 76 | fmt.Println("无法创建或打开子键:", err) 77 | return 78 | } 79 | 80 | defer extKey.Close() 81 | 82 | err = extKey.SetStringValue("update_url", updateURL) 83 | if err != nil { 84 | fmt.Println("无法写入注册表值:", err) 85 | return 86 | } 87 | 88 | fmt.Println("扩展程序", name, "已添加到Chrome中!") 89 | } 90 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= 2 | github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= 3 | github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= 4 | github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= 5 | github.com/cheggaaa/pb/v3 v3.1.2 h1:FIxT3ZjOj9XJl0U4o2XbEhjFfZl7jCVCDOGq1ZAB7wQ= 6 | github.com/cheggaaa/pb/v3 v3.1.2/go.mod h1:SNjnd0yKcW+kw0brSusraeDd5Bf1zBfxAzTL2ss3yQ4= 7 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 8 | github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= 9 | github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= 10 | github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= 11 | github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= 12 | github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= 13 | github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= 14 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= 15 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= 16 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 17 | github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= 18 | github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 19 | github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow= 20 | github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= 21 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 22 | github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= 23 | github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= 24 | github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= 25 | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= 26 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 27 | golang.org/x/net v0.0.0-20211029224645-99673261e6eb h1:pirldcYWx7rx7kE5r+9WsOXPXK0+WH5+uZ7uPmJ44uM= 28 | golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 29 | golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 30 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 31 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 32 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 33 | golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= 34 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 35 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 36 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 37 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 38 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 39 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 40 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 41 | -------------------------------------------------------------------------------- /models/doskey.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "os" 8 | "path/filepath" 9 | "strings" 10 | ) 11 | 12 | func Doskey() { 13 | utils.Title("设置Doskey (Windows Alias)") 14 | doskey := ` 15 | @echo off 16 | doskey ls = dir /b $* 17 | doskey rm = del $* 18 | doskey -rf = /s $* 19 | doskey mk = md $* 20 | doskey clear = cls $* 21 | doskey ll = dir $* 22 | doskey cat = type $* 23 | doskey which = where $* 24 | rem Bypass_AV 25 | doskey mateuszex = $ToolDirectory\Bypass_AV\MateuszEx\MazteuszEx.exe $* 26 | doskey shellcode = $ToolDirectory\Bypass_AV\Shellcodeloader\shellcodeLoader.exe $* 27 | doskey shellcodeloader = $ToolDirectory\Bypass_AV\Shellcodeloader\shellcodeLoader.exe $* 28 | rem C2_Framework 29 | doskey cobaltstrike = cd $ToolDirectory\C2_Framework\Cobalt_Strike\ ^& start_win.bat $* 30 | doskey sliver = $ToolDirectory\C2_Framework\Sliver\sliver-client_windows.exe $* 31 | rem Dir_Scanner 32 | doskey dirmap = py -3 $ToolDirectory\Dir_Scanner\Dirmap\dirmap.py $* 33 | doskey dirsearch = py -3 $ToolDirectory\Dir_Scanner\Dirsearch\dirsearch.py $* 34 | doskey ffuf = $ToolDirectory\Dir_Scanner\Ffuf\ffuf.exe $* 35 | doskey jsfinder = py -3 $ToolDirectory\Dir_Scanner\JSFinder\JSFinder.py $* 36 | doskey webpatchbrute = $ToolDirectory\Dir_Scanner\WebPathBrute\7kbscan-WebPathBrute.exe $* 37 | rem EXP 38 | doskey commix = py -3 $ToolDirectory\EXP\Commix\commix.py $* 39 | doskey dalfox = $ToolDirectory\EXP\Dalfox\dalfox.exe $* 40 | doskey commix = py -3 $ToolDirectory\EXP\Fuxploider\fuxploider.py $* 41 | doskey jndiexploit = java -jar $ToolDirectory\EXP\JNDIExploit\JNDIExploit-1.4-SNAPSHOT.jar $* 42 | doskey lfisuite = py -3 $ToolDirectory\EXP\LFISuite\lfisuite.py $* 43 | doskey sqlmap = py -3 $ToolDirectory\EXP\Sqlmap\sqlmap.py $* 44 | doskey xxeinjector = ruby $ToolDirectory\EXP\XXEinjector\XXEinjector.rb $* 45 | doskey ysomap = java -jar $ToolDirectory\EXP\Ysomap\ysomap.jar $* 46 | rem Info_Gathering 47 | doskey amass = $ToolDirectory\Info_Gathering\Amass\amass.exe $* 48 | doskey ct = py -3 $ToolDirectory\Info_Gathering\Ct_Exposer\ct-exposer.py $* 49 | doskey dnsx = $ToolDirectory\Info_Gathering\Dnsx\dnsx.exe $* 50 | doskey fofaviewer = java -jar $ToolDirectory\Info_Gathering\Fofa_Viewer\fofaviewer.jar $* 51 | doskey layer = $ToolDirectory\Info_Gathering\Layer\Layer.exe $* 52 | doskey oneforall = py -3 $ToolDirectory\Info_Gathering\OneForAll\oneforall.py $* 53 | rem Maintain_Access 54 | doskey girsh = py -3 $ToolDirectory\Maintain_Access\Girsh\Girsh.exe $* 55 | doskey govenom = $ToolDirectory\Maintain_Access\Govenom\govenom.exe $* 56 | doskey platypus = $ToolDirectory\Maintain_Access\Platypus\Platypus_windows_amd64.exe $* 57 | doskey reversessh = $ToolDirectory\Maintain_Access\Reverse_ssh\upx_reverse-sshx64.exe $* 58 | rem Pass_Attack 59 | doskey hackbrowserdata = $ToolDirectory\Pass_Attack\HackBrowserData\hack-browser-data-windows-64bit.exe $* 60 | doskey hashcat = $ToolDirectory\Pass_Attack\Hashcat\hashcat.exe $* 61 | doskey psudohash = py -3 $ToolDirectory\Pass_Attack\Psudohash\psudohash.py 62 | doskey hydra = $ToolDirectory\Pass_Attack\Thc_Hydra\hydra.exe $* 63 | rem Penetration_Testing_Framework 64 | doskey msfconsole = cd $ToolDirectory\Penetration_Testing_Framework\Metasploit\bin ^& msfconsole.bat $* 65 | rem Port_Scanner 66 | doskey masscan = $ToolDirectory\Port_Scanner\Masscan\masscan.exe $* 67 | doskey nmap = $ToolDirectory\Port_Scanner\Nmap\nmap.exe $* 68 | doskey txportmap = $ToolDirectory\Port_Scanner\TXPortMap\TxPortMap_windows_x64.exe $* 69 | rem Vuln_Scanner 70 | doskey afrog = $ToolDirectory\Vuln_Scanner\Afrog\afrog.exe $* 71 | doskey nuclei = $ToolDirectory\Vuln_Scanner\Nuclei\nuclei.exe $* 72 | doskey vscan = $ToolDirectory\Vuln_Scanner\Vscan\vscan.exe $* 73 | doskey xray = $ToolDirectory\Vuln_Scanner\Xray\xray_windows_amd64.exe $* 74 | ` 75 | doskey = strings.Replace(doskey, "$ToolDirectory", config.ToolDirectory["ROOT"], -1) 76 | os.Mkdir(config.ToolDirectory["Doskey"], 0755) 77 | doskeyFile := filepath.Join(config.ToolDirectory["Doskey"], "doskey.bat") 78 | file, err := os.OpenFile(doskeyFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) 79 | if err != nil { 80 | fmt.Println("无法创建批处理文件:", err) 81 | os.Exit(1) 82 | } 83 | defer file.Close() 84 | 85 | _, err = file.WriteString(doskey) 86 | if err != nil { 87 | fmt.Println("无法写入批处理文件:", err) 88 | os.Exit(1) 89 | } 90 | 91 | fmt.Println("批处理文件已保存:", config.ToolDirectory["Doskey"]) 92 | 93 | result := utils.Cmd("reg", "add", "HKCU\\Software\\Microsoft\\Command Processor", "/v", "AutoRun", "/t", "REG_SZ", "/d", doskeyFile, "/f") 94 | if result { 95 | fmt.Println(config.Green("Doskey添加到启动!\n")) 96 | utils.Log(fmt.Sprintf("-\tDoskey添加到启动!\n\t-\t安装路径: %s\n", config.ToolDirectory["Doskey"])) 97 | } else { 98 | fmt.Println(config.Red("Doskey添加到启动失败!\n")) 99 | utils.Log("-\tDoskey添加到启动失败!\n") 100 | } 101 | 102 | clinkCommand := []string{""} 103 | utils.ChocoInstall("Clink", "clink-maintained", "", clinkCommand) 104 | } 105 | -------------------------------------------------------------------------------- /models/setting.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "bufio" 7 | "encoding/base64" 8 | "fmt" 9 | "gopkg.in/ini.v1" 10 | "log" 11 | "net/http" 12 | "os" 13 | "path/filepath" 14 | "strconv" 15 | "strings" 16 | ) 17 | 18 | func Setting() { 19 | GenerateAccessToken() 20 | SetDirectory() 21 | } 22 | 23 | func GenerateAccessToken() { 24 | utils.Title("读取Github API") 25 | 26 | conFine := filepath.Join(config.ExecutablePath, "config.ini") 27 | cfg, err := ini.Load(conFine) 28 | if err != nil { 29 | log.Fatal("Error loading config file:", err) 30 | } 31 | 32 | // 获取配置值 33 | clientID := cfg.Section("Github").Key("clientID").String() 34 | clientSecrets := cfg.Section("Github").Key("clientSecrets").String() 35 | 36 | fmt.Println(fmt.Sprintf("clientID: %s", clientID)) 37 | fmt.Println(fmt.Sprintf("clientSecrets: %s", clientSecrets)) 38 | 39 | if len(clientID) == 0 || len(clientSecrets) == 0 { 40 | fmt.Print(config.Red("Client ID和Client Secrets不可为空")) 41 | os.Exit(0) 42 | } 43 | 44 | accessToken := fmt.Sprintf("%s:%s", clientID, clientSecrets) 45 | accessTokenBytes := []byte(accessToken) 46 | encodedAccessToken := base64.StdEncoding.EncodeToString(accessTokenBytes) 47 | rateLimit := checkRateLimit(encodedAccessToken) 48 | 49 | if rateLimit < 100 { 50 | fmt.Println(fmt.Sprintf("此AccessToken速率剩余: %s次!", config.Red(rateLimit))) 51 | fmt.Println(config.Red("此AccessToken速率剩余较低,请替换或过一小时后重试!")) 52 | } else { 53 | fmt.Println(fmt.Sprintf("此AccessToken速率剩余: %s次!", config.Green(rateLimit))) 54 | } 55 | 56 | config.AccessToken = encodedAccessToken 57 | } 58 | 59 | func checkRateLimit(encodedAccessToken string) int { 60 | req, _ := http.NewRequest("GET", "https://api.github.com/users/Mustard404", nil) 61 | req.Header.Set("Authorization", fmt.Sprintf("Basic %s", encodedAccessToken)) 62 | client := http.Client{} 63 | resp, _ := client.Do(req) 64 | rateLimitStr := resp.Header.Get("X-RateLimit-Remaining") 65 | rateLimit, err := strconv.Atoi(rateLimitStr) 66 | if err != nil { 67 | fmt.Println(config.Red("无法获取API速率!")) 68 | } 69 | return rateLimit 70 | } 71 | 72 | func SetDirectory() { 73 | utils.Title("设置部署路径") 74 | reader := bufio.NewReader(os.Stdin) 75 | fmt.Print("请输入工具包部署目录(默认为 C:\\Tools):") 76 | toolsDir, _ := reader.ReadString('\n') 77 | toolsDir = strings.TrimSpace(toolsDir) 78 | if len(toolsDir) == 0 { 79 | toolsDir = "C:\\Tools" 80 | } 81 | _, err := os.Stat(toolsDir) 82 | if err == nil { 83 | message := fmt.Sprintf("注: 目录 %s 已存在!\n", toolsDir) 84 | fmt.Printf(config.Red(message)) 85 | } else { 86 | err = os.Mkdir(toolsDir, 0755) 87 | if err != nil { 88 | fmt.Println(config.Red("无法创建目录:", err)) 89 | } 90 | } 91 | fmt.Printf("设置部署路径为: %s\n", config.Magenta(toolsDir)) 92 | utils.Log("-\t设置部署路径为: %s\n", toolsDir) 93 | fmt.Print("按任意键继续...") 94 | _, _ = reader.ReadString('\n') 95 | 96 | folders := map[string]string{ 97 | "ROOT": "", 98 | "TEMP": "\\TEMP", 99 | "Doskey": "\\Doskey", 100 | "Env": "\\Env", 101 | "Git": "\\Env\\Git", 102 | "Go": "\\Env\\Go", 103 | "Java8": "\\Env\\Java\\Java8", 104 | "Laragon": "\\Env\\Laragon", 105 | "Node": "\\Env\\Node", 106 | "Python2": "\\Env\\Python\\Python2", 107 | "Python3": "\\Env\\Python\\Python3", 108 | "Ruby": "\\Env\\Ruby", 109 | "Productivity": "\\Productivity", 110 | "Bandizip": "\\Productivity\\Bandizip", 111 | "Bitwarden": "\\Productivity\\Bitwarden", 112 | "Everything": "\\Productivity\\Everything", 113 | "Firefox": "\\Productivity\\Firefox", 114 | "Sublime_Text": "\\Productivity\\Sublime_Text", 115 | "Typora": "\\Productivity\\Typora", 116 | "Development": "\\Development", 117 | "Mobaxterm": "\\Development\\Mobaxterm", 118 | "Navicat_Premium": "\\Development\\Navicat_Premium", 119 | "Vscode": "\\Development\\Vscode", 120 | "Winscp": "\\Development\\Winscp", 121 | "Bypass_AV": "\\Bypass_AV", 122 | "AV_Evasion_Tool": "\\Bypass_AV\\AV_Evasion_Tool", 123 | "BypassAntiVirus": "\\Bypass_AV\\BypassAntiVirus", 124 | "GBByPass": "\\Bypass_AV\\GBByPass", 125 | "MateuszEx": "\\Bypass_AV\\MateuszEx", 126 | "Shellcodeloader": "\\Bypass_AV\\Shellcodeloader", 127 | "C2_Framework": "\\C2_Framework", 128 | "Cobalt_Strike": "\\C2_Framework\\Cobalt_Strike", 129 | "OLa": "\\C2_Framework\\Cobalt_Strike\\scripts", 130 | "Sliver": "\\C2_Framework\\Sliver", 131 | "Dir_Scanner": "\\Dir_Scanner", 132 | "Dirmap": "\\Dir_Scanner\\Dirmap", 133 | "Dirsearch": "\\Dir_Scanner\\Dirsearch", 134 | "Ffuf": "\\Dir_Scanner\\Ffuf", 135 | "JSFinder": "\\Dir_Scanner\\JSFinder", 136 | "WebPathBrute": "\\Dir_Scanner\\WebPathBrute", 137 | "EXP": "\\EXP", 138 | "Advanced_SQL_Injection_Cheatsheet": "\\EXP\\Advanced_SQL_Injection_Cheatsheet", 139 | "CF": "\\EXP\\CF", 140 | "Commix": "\\EXP\\Commix", 141 | "Dalfox": "\\EXP\\Dalfox", 142 | "Fuxploider": "\\EXP\\Fuxploider", 143 | "JNDIExploit": "\\EXP\\JNDIExploit", 144 | "LFISuite": "\\EXP\\LFISuite", 145 | "ShiroExploit": "\\EXP\\ShiroExploit", 146 | "ShiroAttack2": "\\EXP\\ShiroAttack2", 147 | "Sqlmap": "\\EXP\\Sqlmap", 148 | "SuperSQLInjection": "\\EXP\\SuperSQLInjection", 149 | "XSStrike": "\\EXP\\XSStrike", 150 | "XXEinjector": "\\EXP\\XXEinjector", 151 | "Xssor2": "\\EXP\\Xssor2", 152 | "WeblogicTool": "\\EXP\\WeblogicTool", 153 | "Ysomap": "\\EXP\\Ysomap", 154 | "Fingerprinting": "\\Fingerprinting", 155 | "CMSeeK": "\\Fingerprinting\\CMSeeK", 156 | "EHole": "\\Fingerprinting\\EHole", 157 | "ObserverWard": "\\Fingerprinting\\ObserverWard", 158 | "TideFinger": "\\Fingerprinting\\TideFinger", 159 | "Info_Gathering": "\\Info_Gathering", 160 | "Amass": "\\Info_Gathering\\Amass", 161 | "Ct_Exposer": "\\Info_Gathering\\Ct_Exposer", 162 | "Dnsx": "\\Info_Gathering\\Dnsx", 163 | "Ds_store_exp": "\\Info_Gathering\\Ds_store_exp", 164 | "Fofa_Viewer": "\\Info_Gathering\\Fofa_Viewer", 165 | "Gitgot": "\\Info_Gathering\\GitGot", 166 | "Gitgraber": "\\Info_Gathering\\GitGraber", 167 | "Githack": "\\Info_Gathering\\GitHack", 168 | "Gitminer": "\\Info_Gathering\\GitMiner", 169 | "Gitrob": "\\Info_Gathering\\Gitrob", 170 | "Gobuster": "\\Info_Gathering\\Gobuster", 171 | "Ksubdomain": "\\Info_Gathering\\Ksubdomain", 172 | "Layer": "\\Info_Gathering\\Layer", 173 | "Oneforall": "\\Info_Gathering\\OneForAll", 174 | "Spiderfoot": "\\Info_Gathering\\Spiderfoot", 175 | "Subfinder": "\\Info_Gathering\\Subfinder", 176 | "Svnexploit": "\\Info_Gathering\\SvnExploit", 177 | "Theharvester": "\\Info_Gathering\\TheHarvester", 178 | "Maintain_Access": "\\Maintain_Access", 179 | "Girsh": "\\Maintain_Access\\Girsh", 180 | "Govenom": "\\Maintain_Access\\Govenom", 181 | "Platypus": "\\Maintain_Access\\Platypus", 182 | "Reverse_ssh": "\\Maintain_Access\\Reverse_ssh", 183 | "Pass_Attack": "\\Pass_Attack", 184 | "HackBrowserData": "\\Pass_Attack\\HackBrowserData", 185 | "Hashcat": "\\Pass_Attack\\Hashcat", 186 | "John": "\\Pass_Attack\\John", 187 | "Johnny": "\\Pass_Attack\\Johnny", 188 | "Patator": "\\Pass_Attack\\Patator", 189 | "Probable_Wordlists": "\\Pass_Attack\\Probable_Wordlists", 190 | "Psudohash": "\\Pass_Attack\\Psudohash", 191 | "Thc_Hydra": "\\Pass_Attack\\Thc_Hydra", 192 | "Penetration_Testing_Framework": "\\Penetration_Testing_Framework", 193 | "Metasploit": "\\Penetration_Testing_Framework\\Metasploit", 194 | "Pocsuite3": "\\Penetration_Testing_Framework\\Pocsuite3", 195 | "Port_Forwarding": "\\Port_Forwarding", 196 | "Frp": "\\Port_Forwarding\\Frp", 197 | "Iox": "\\Port_Forwarding\\Iox", 198 | "Neo_reGeorg": "\\Port_Forwarding\\Neo_reGeorg", 199 | "Nps": "\\Port_Forwarding\\Nps", 200 | "reGeorg": "\\Port_Forwarding\\reGeorg", 201 | "Port_Scanner": "\\Port_Scanner", 202 | "GoScan": "\\Port_Scanner\\GoScan", 203 | "Masscan": "\\Port_Scanner\\Masscan", 204 | "Naabu": "\\Port_Scanner\\Naabu", 205 | "NimScan": "\\Port_Scanner\\NimScan", 206 | "Nmap": "\\Port_Scanner\\Nmap", 207 | "RouterScan": "\\Port_Scanner\\RouterScan", 208 | "Scaninfo": "\\Port_Scanner\\Scaninfo", 209 | "Sx": "\\Port_Scanner\\Sx", 210 | "TXPortMap": "\\Port_Scanner\\TXPortMap", 211 | "Yujian": "\\Port_Scanner\\Yujian", 212 | "Privilege_Escalation": "\\Privilege_Escalation", 213 | "Windows_Kernel_Exploits": "\\Privilege_Escalation\\Windows_Kernel_Exploits", 214 | "Linux_Kernel_Exploits": "\\Privilege_Escalation\\Linux_Kernel_Exploits", 215 | "SharpSQLToolsGUI": "\\Privilege_Escalation\\SharpSQLToolsGUI", 216 | "Proxy": "\\Proxy", 217 | "BurpSuite": "\\Proxy\\BurpSuite", 218 | "Proxifier": "\\Proxy\\Proxifier", 219 | "SocksCap64": "\\Proxy\\SocksCap64", 220 | "Wireshark": "\\Proxy\\Wireshark", 221 | "Yakit": "\\Proxy\\yakit", 222 | "Vuln_Scanner": "\\Vuln_Scanner", 223 | "Afrog": "\\Vuln_Scanner\\Afrog", 224 | "Nuclei": "\\Vuln_Scanner\\Nuclei", 225 | "OSV_Scanner": "\\Vuln_Scanner\\OSV_Scanner", 226 | "Goby": "\\Vuln_Scanner\\Goby", 227 | "Vscan": "\\Vuln_Scanner\\Vscan", 228 | "Xray": "\\Vuln_Scanner\\Xray", 229 | "Super_Xray": "\\Vuln_Scanner\\Super_Xray", 230 | "Vuln_Search": "\\Vuln_Search", 231 | "Webshell": "\\Webshell", 232 | "Antsword": "\\Webshell\\Antsword", 233 | "Behinder": "\\Webshell\\Behinder", 234 | "Godzilla": "\\Webshell\\Godzilla", 235 | "Skyscorpion": "\\Webshell\\Skyscorpion", 236 | "Webshell_Script": "\\Webshell\\Webshell_Script", 237 | "Dawn_Launcher": "\\Dawn_Launcher", 238 | } 239 | 240 | for key, value := range folders { 241 | config.ToolDirectory[key] = filepath.Join(toolsDir, value) 242 | } 243 | 244 | } 245 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # AceofHearts 2 | 3 | ![Languages](https://img.shields.io/github/languages/top/Mustard404/AceofHearts?color=yellow) 4 | ![Tag](https://img.shields.io/github/v/tag/Mustard404/AceofHearts?color=red) 5 | ![Stars](https://img.shields.io/github/stars/Mustard404/AceofHearts.svg) 6 | 7 | 红桃A(AceofHearts)是一款专为渗透测试人员设计的实用工具,旨在简化渗透测试环境的搭建过程并提供便捷的部署解决方案。 8 | 9 | ## 声明 10 | 11 | 本人未参与本次HVV演练,请勿溯源!!!!! 12 | 13 | ## 功能特点 14 | 15 | - 突破环境限制:该工具提供了在各种环境中部署的能力,包括物理机、Vmware、VirtualBox和ParallelsDesktop等虚拟化环境,使得渗透测试环境的搭建更加灵活和适应性更强。 16 | - 解除系统限制:该工具支持在 Windows 10和Windows 11等操作系统中进行部署,使得用户能够根据实际需求选择合适的操作系统来搭建渗透测试环境,无需受限于特定操作系统版本。 17 | - 实时更新:通过使用 Chocolatey 命令和从 GitHub 上拉取最新代码,该工具能够确保所使用的大多数工具和软件处于最新版本。这样可以保持工具的功能和安全性与最新的开发进展同步。对于无法实现自动化更新的部分软件或 GitHub 项目,我们已经将原项目 Fork 到 https://github.com/AceofHearts404 下,以便进行定制和维护。 18 | - 代码开源:通过开源项目,我们旨在阻止恶意代码的注入风险,并提供了自行编译和执行的能力。这样可以增加透明度和安全性,让用户更加放心地使用我们的工具。 19 | 20 | ## 项目声明 21 | 22 | - 项目依赖: 由于在测试过程中执行 pip install 由于库的不足会导致程序异常终止,需手动在各项目中安装依赖。 23 | - 破解激活: 考虑到安全性及合法性,仅将破解程序 Down 到 Toolsdir//Check 下,请大佬自行破解。 24 | - 工具来源: 绝大部分工具来自于项目官方网站,尽可能的保证了程序的安全性,但不排除开发的开源项目中包含恶意代码等。 25 | - 版权说明: 项目中引用多数开源项目,如造成侵权请 Issues,进行删除。 26 | 27 | ## 免责声明 28 | 29 | - 使用责任:渗透测试工具仅用于合法的安全评估和授权测试目的。使用者应该在法律允许的范围内使用工具,并遵守适用的法律和法规。 30 | - 许可:未经合法授权或许可,禁止使用渗透测试工具对未经授权的目标进行测试。使用者应获得目标系统的合法授权,并遵守相关的使用条款和许可协议。 31 | - 风险和责任:使用者应理解渗透测试工具的使用可能涉及风险,包括但不限于数据丢失、系统崩溃、网络中断等。使用者对使用工具产生的后果负有全部责任,并应自行承担风险。 32 | - 合规性和隐私:使用者应确保使用渗透测试工具的过程符合适用的法律和法规,包括但不限于隐私保护、数据保护和知识产权等方面的规定。 33 | - 免责声明:渗透测试工具的开发者、提供者和维护者不对使用者使用工具的行为和后果负责。工具的使用者应自行承担风险,并且开发者、提供者和维护者不承担任何明示或暗示的保证。 34 | - 法律适用:免责声明受适用法律的约束,并应依据适用法律进行解释和执行。 35 | 36 | ## 准备 37 | 38 | - 系统代理: 因大部分程序来自Github,需要系统代理提高环境部署速度及成功率。 39 | - Github Client ID 和 Client Secrets,解除 Github API 速率限制。 40 | 1. 提供公共API,禁止进行其它利用。 41 | ``` 42 | Client ID: 16489800309c385117b2 43 | Client Secrets: 1d14c4bfd8ae74e3a64c35f3ed8dfdf81312ae68 44 | ``` 45 | 2. 自行注册指南。 46 | - [访问Github Developer](https://github.com/settings/developers) 47 | 48 | - OAuth Apps 》New OAuth Apps 49 | 50 | ![](https://raw.githubusercontent.com/Mustard404/AceofHearts/master/images/1.jpg) 51 | 52 | - Homepage URL及Authorization callback URL 随意填写 53 | 54 | ![](https://raw.githubusercontent.com/Mustard404/AceofHearts/master/images/2.jpg) 55 | 56 | - 生成 Client Secrets 57 | 58 | ![](https://raw.githubusercontent.com/Mustard404/AceofHearts/master/images/3.jpg) 59 | 60 | ## 安装 61 | 62 | 1. 通过[查看发布版本Releases](https://github.com/Mustard404/AceofHearts/releases)下载最新版安装程序 63 | 2. 尽可能关闭Windows Defender,或将AceofHearts添加到白名单中。(部分功能实现,如添加安装目录到白名单,执行命令等会使DF进行告警,并非恶意代码) 64 | 3. 将安装程序移动到要部署环境的系统中。(建议使用新装系统环境,以免产生非必要冲突) 65 | 4. 以管理员身份运行CMD程序。 66 | 5. 添加系统代理。 67 | 68 | ``` 69 | set http_proxy=http://127.0.0.1:7890 70 | set https_proxy=http://127.0.0.1:7890 71 | set socks_proxy=socks5://127.0.0.1:7890 72 | ``` 73 | 74 | 6. 在程序路径配置config.ini的 Client ID 和 Client Secrets,最新版Releases已配置公共API。 75 | 76 | ``` 77 | [Github] 78 | clientID = 16489800309c385117b2 79 | clientSecrets = 1d14c4bfd8ae74e3a64c35f3ed8dfdf81312ae68 80 | ``` 81 | 82 | 7. 执行程序。 83 | ``` 84 | AceofHearts.exe 85 | ``` 86 | 8. 设置工具部署路径,默认为 C:\Tools,如需修改,请输入后回车。 87 | 88 | ![](https://raw.githubusercontent.com/Mustard404/AceofHearts/master/images/4.jpg) 89 | 90 | 9. 运行截图。 91 | 92 | ![](https://raw.githubusercontent.com/Mustard404/AceofHearts/master/images/5.jpg) 93 | 94 | 10. 执行后会在AceofHearts.exe路径形成LOG.MD。 95 | 96 | ## 工具预览 97 | 98 | ### 系统优化 99 | 100 | - 设置Windows Defender白名单 101 | - 显示文件扩展名 102 | - 开启Telnet客户端 103 | - Chocolatey 104 | 105 | ### 编程环境 106 | 107 | - **Git**: 版本控制系统,用于跟踪和管理项目的代码变更。 108 | - **Go**: 开源编程语言,以其简洁性、高效性和并发性而闻名,适用于构建可靠的和高性能的软件应用程序。 109 | - **Java8**: Java 编程语言的第八个版本,提供了许多功能和改进,适用于开发各种类型的应用程序。 110 | - **Laragon**: 用于快速搭建 Web 开发环境的集成工具,支持多种开发技术和框架。 111 | - **Node**: 基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能的网络应用程序和服务器端应用程序。 112 | - **Python2**: Python 编程语言的第二个版本,提供了广泛的库和工具,适用于快速开发各种类型的应用程序。 113 | - **Python3**: Python 编程语言的第三个版本,引入了许多新特性和改进,提供了更好的性能和功能,推荐使用的版本。 114 | - **Ruby**: 动态、面向对象的编程语言,注重简洁性和可读性,适用于构建优雅的 Web 应用程序和脚本。 115 | 116 | ### 生产力工具 117 | 118 | - **Bandizip**: 免费的压缩文件管理工具,支持多种常见压缩格式,并提供快速的压缩和解压功能。 119 | - **Bitwarden**: 开源的密码管理工具,帮助用户安全地存储和管理密码,并提供方便的自动填充功能。 120 | - **Chrome**: 谷歌浏览器,提供快速的浏览体验和丰富的扩展生态系统,是广泛使用的网络浏览器之一。 121 | 122 | 插件(通过注册列表添加,运行Chrome后自动拉取) 123 | 124 | - Bitwarden 125 | - FOFA Pro View 126 | - Hack-Tools 127 | - HackBar 128 | - IP, DNS & Security Tools 129 | - Proxy SwitchyOmega 130 | - Wappalyzer 131 | 132 | - **Everything**: 按名称即时定位文件和文件夹。 133 | - **Firefox**: 开源的网络浏览器,注重用户隐私和安全,并提供强大的扩展支持和个性化选项。 134 | - **Sublime Text**: 强大的文本编辑器,具有灵活的界面和丰富的功能,适用于编写各种类型的代码和文本文件。 135 | 136 | - **Typora**: 简洁而强大的 Markdown 编辑器,提供实时预览和直观的编辑界面,方便用户编写和格式化 Markdown 文档。 137 | 138 | ### 开发环境 139 | 140 | - **MobaXterm**: 一款强大的远程服务器管理工具,支持SSH、Telnet等协议,提供命令行界面和脚本执行功能,方便用户远程管理服务器。 141 | - **Navicat Premium**: 强大的数据库管理工具,支持多种数据库类型,提供可视化界面和丰富的功能,方便用户管理和操作数据库。 142 | - **VSCode**: Visual Studio Code,是一个轻量级的开发环境,支持多种编程语言,具有丰富的插件生态系统和强大的代码编辑功能。 143 | - **WinSCP**: Windows Secure Copy,是一个免费的开源SFTP、SCP、FTP和WebDAV客户端,提供文件传输和远程文件管理功能,适用于与远程服务器进行文件交互。 144 | 145 | ### 渗透测试工具 146 | 147 | #### 渗透测试工具-免杀 148 | 149 | - **掩日**: 免杀执行器生成工具。 150 | - **BypassAntiVirus**: 远控免杀系列文章及配套工具,汇总测试了互联网上的几十种免杀工具、113种白名单免杀方式、8种代码编译免杀、若干免杀实战技术,并对免杀效果进行了一一测试,为远控的免杀和杀软对抗免杀提供参考。 151 | - **GBByPass**: 冰蝎 哥斯拉 WebShell bypass。 152 | - **MateuszEx**: bypass AV生成工具,目前免杀效果不是很好了,但是过个360,火绒啥的没问题。 153 | - **Shellcodeloader**: Windows平台的shellcode免杀加载器。 154 | 155 | #### 渗透测试工具-C2 156 | 157 | - **Cobalt Strike**: 一款专业的红队渗透测试工具,用于模拟高级持久性威胁(APT)攻击,包括社交工程、远程访问、漏洞利用和命令控制等功能。 158 | - **Sliver**: 一款用于红队渗透测试和攻击模拟的工具,它提供了多种攻击向量和技术,包括远程访问、横向移动、权限提升和数据窃取等功能。它旨在帮助安全专业人员评估和提高组织的安全防御能力。 159 | 160 | #### 渗透测试工具-目录扫描 161 | 162 | - **Dirmap**: 一个用于目录枚举和扫描的工具,它可以帮助发现Web应用程序中存在的隐藏目录和文件。 163 | - **Dirsearch**: 一个用于快速和全面扫描Web服务器目录的工具,它支持多种扫描选项和自定义字典。 164 | - **Ffuf**: 一个快速且灵活的Web目录和参数扫描工具,它支持并发请求、自定义字典和多种过滤选项。 165 | - **JSFinder**: 一个用于在Web应用程序中查找JavaScript文件和端点的工具,它可以帮助发现潜在的敏感信息泄露和漏洞。 166 | - **WebPathBrute**: 一个用于暴力破解Web路径和文件的工具,它可以在给定的字典和目标范围内进行快速扫描和探测。 167 | 168 | #### 渗透测试工具-漏洞利用 169 | 170 | - **Advanced-SQL-Injection-Cheatsheet**: 一个高级的SQL注入技巧速查表,提供了丰富的SQL注入攻击向量和技巧,用于帮助渗透测试人员发现和利用SQL注入漏洞。 171 | - **CF**: Cloud Exploitation Framework 云环境利用框架,方便安全人员在获得 AK 的后续工作。 172 | - **Commix**: 一个自动化的命令注入和漏洞利用工具,用于发现和利用命令注入漏洞。 173 | - **Dalfox**: 一个用于寻找和利用XSS漏洞的工具,它具有自动化检测和利用XSS漏洞的能力。 174 | - **Fuxploider**: 一个用于寻找和利用文件上传漏洞的工具,它可以自动化地进行文件上传漏洞的检测和利用。 175 | - **JNDIExploit**: 一个用于利用JNDI注入漏洞的工具,可用于渗透测试人员在目标系统中发现和利用JNDI注入漏洞。 176 | - **LFISuite**: 一个用于利用本地文件包含漏洞的工具,它可以帮助渗透测试人员发现和利用本地文件包含漏洞。 177 | - **ShiroExploit**: 一个用于利用Shiro框架漏洞的工具,可用于渗透测试人员在目标系统中发现和利用Shiro框架的漏洞。 178 | - **ShiroAttack2**: 一个用于检测和利用Shiro框架漏洞的工具,它可以帮助渗透测试人员发现和利用Shiro框架的各种漏洞。 179 | - **Sqlmap**: 一个功能强大的自动化SQL注入工具,可用于发现和利用SQL注入漏洞。 180 | - **SuperSQLInjection**: 一个专注于SQL注入漏洞检测和利用的工具,提供了多种高级的注入技术和功能。 181 | - **XSStrike**: 一个自动化的XSS漏洞扫描和利用工具,可用于发现和利用Web应用程序中的跨站脚本漏洞。 182 | - **Xssor2**: 一个用于检测和利用XSS漏洞的工具,它提供了多种XSS攻击向量和技巧。 183 | - **XXEinjector**: 一个用于寻找和利用XML外部实体注入漏洞的工具,可用于发现和利用Web应用程序中的XXE漏洞。 184 | - **WeblogicTool**: 一个用于检测和利用WebLogic漏洞的工具。 185 | 186 | #### 渗透测试工具-指纹识别 187 | 188 | - **CMSeeK**: 一个用于检测和利用CMS(内容管理系统)漏洞的工具,可以帮助渗透测试人员发现目标网站所使用的CMS以及相关的漏洞。它提供了多个模块和功能,包括漏洞扫描、目录枚举、敏感信息泄露等,以帮助评估网站的安全性和进行渗透测试。 189 | - **ObserverWard**: 一个用于网络侦察和信息收集的工具,可以帮助渗透测试人员获取目标系统的关键信息和漏洞情报。 190 | - **TideFinger**: 一个用于指纹识别和识别目标应用程序和服务的工具,可以帮助渗透测试人员确定目标系统所使用的技术和版本信息。 191 | 192 | #### 渗透测试工具-信息收集 193 | 194 | - **Amass**: 一个强大的资产发现和信息收集工具,可用于在渗透测试和红队操作中获取目标的域名、子域名、IP地址以及相关的网络信息。 195 | - **Ct_Exposer**: 一个用于从Certificate Transparency日志中发现潜在安全问题的工具,可以帮助发现未经授权的SSL/TLS证书和恶意域名。 196 | - **Dnsx**: 一个快速的DNS信息收集工具,用于获取目标的DNS记录、子域名、IP地址等相关信息。 197 | - **Ds_store_exp**: 利用.DS_Store文件泄露目录信息的工具,可帮助发现目标网站中隐藏的文件和目录。 198 | - **Fofa_Viewer**: 与FOFA(云观测安全搜索引擎)API交互的工具,可以通过FOFA提供的功能进行资产搜索和信息收集。 199 | - **Gitgraber**: 从Git存储库中获取敏感信息的工具,可以帮助发现在Git历史记录中意外泄露的密码、密钥和其他敏感数据。 200 | - **Githack**: 从GitHub存储库中获取源代码和文件的工具,可以帮助渗透测试人员在授权范围内获取目标存储库的内容。 201 | - **Gitminer**: 在Git存储库中发现敏感信息和漏洞的工具,可以帮助发现在Git提交中可能存在的敏感数据泄露和安全问题。 202 | - **Gobuster**: 目录和子域名爆破的工具,可帮助发现目标网站中隐藏的文件和目录,并进行敏感信息收集。 203 | - **Ksubdomain**: 子域名爆破工具,用于在渗透测试中获取目标网站的子域名和相关信息。 204 | - **Layer**: 子域名爆破和信息收集的工具,可帮助发现目标网站的子域名、IP地址和相关网络信息。 205 | - **Oneforall**: 子域名爆破和收集的综合工具,支持多种数据源和技术,可帮助获取目标网站的子域名和相关信息。 206 | - **Spiderfoot**: 开源情报自动化工具,用于在渗透测试和信息收集中获取目标的开放式情报(OSINT)数据。 207 | - **Subfinder**: 子域名收集和识别的工具,可以帮助发现目标网站的子域名和相关信息。 208 | - **Svnexploit**: 利用Subversion(SVN)配置错误的工具,可以帮助发现目标网站中的代码泄露和信息泄露。 209 | - **Theharvester**: 在渗透测试和情报收集中收集电子邮件地址、域名和相关信息的工具。它可以从多个来源(搜索引擎、公开目录等)抓取数据,并提供有关目标的电子邮件地址、子域名、相关主机和网络信息的结果。 210 | 211 | #### 渗透测试工具-权限维持 212 | 213 | - **Girsh**: 轻量级的反向 Shell 工具,它允许您在目标系统上建立一个反向连接,以便远程执行命令和交互式操作。它是渗透测试和远程管理中的有用工具。 214 | - **Govenom**: 用于生成恶意二进制文件的工具,用于渗透测试和红队行动。它可以帮助安全专业人员评估和测试系统的防御能力,并提供实际的攻击模拟。 215 | - **Platypus**: 跨平台的恶意软件开发框架,用于创建定制的恶意软件,以进行攻击、渗透测试和红队行动。它提供了灵活的功能和扩展性,可用于构建各种类型的恶意软件,包括后门、木马、键盘记录器等。 216 | - **Reverse SSH**: 一种技术,用于建立从目标系统到远程服务器的反向 SSH 连接。它可以帮助您在无法直接连接目标系统的情况下,通过目标系统主动向远程服务器建立连接,以便进行远程访问和管理。这在远程维护、跳板访问和远程渗透测试中非常有用。 217 | 218 | #### 渗透测试工具-密码攻击 219 | 220 | - **HackBrowserData**: 用于提取和导出浏览器数据的工具,包括历史记录、书签、密码、Cookie 等。它可以帮助渗透测试人员和数字取证专家获取目标系统中浏览器相关的敏感信息。 221 | - **Hashcat**: 高性能的密码恢复工具,用于破解哈希密码。它支持多种密码哈希算法和攻击模式,并利用 GPU 和 CPU 的并行计算能力,加快密码破解的速度。 222 | - **John**: John the Ripper(简称 John)是一个流行的密码破解工具,用于破解密码哈希。它支持多种密码哈希算法和攻击模式,并具有灵活的配置选项和高度可定制性。 223 | - **Johnny**: 密码破解工具,用于执行离线字典攻击和暴力破解密码。它支持多种攻击模式和密码哈希算法,并提供用户友好的界面和配置选项。 224 | - **Patator**: 多功能的渗透测试工具,用于执行各种类型的暴力破解攻击,包括密码破解、SSH 暴力破解、FTP 暴力破解等。它支持多种协议和攻击模式,并具有高度可定制性。 225 | - **Probable_Wordlists**: 常用的字典文件集合,用于密码破解和渗透测试。它包含各种常见的密码和常用词汇,可用于执行字典攻击和密码猜测。 226 | - **Psudohash**: 伪哈希生成工具,用于生成伪造的哈希值。它可以用于欺骗系统或应用程序,以绕过密码验证或欺骗数据验证过程。 227 | - **Thc_Hydra**: 强大的网络登录破解工具,用于执行各种类型的暴力破解和字典攻击。它支持多种协议和攻击模式,包括 SSH、FTP、HTTP、SMTP 等,并具有高度可定制性和并行处理能力。 228 | 229 | #### 渗透测试工具-渗透测试框架 230 | 231 | - **Metasploit**: 广泛使用的渗透测试框架,提供了丰富的漏洞利用和渗透测试工具。它包含大量的漏洞模块和利用脚本,可用于探测和利用各种网络漏洞,从而获取对目标系统的控制权限。 232 | - **Pocsuite3**: 开源的漏洞利用和渗透测试工具,用于快速发现和利用各种漏洞。它支持多种漏洞检测和利用方式,并提供了易于使用的命令行界面和丰富的插件生态系统,方便安全研究人员进行漏洞验证和渗透测试。 233 | 234 | #### 渗透测试工具-端口转发 235 | 236 | - **Frp**: 内网穿透的工具,它可以帮助用户在不同网络环境下访问内网服务。通过配置 Frp,可以将内网服务映射到公网,并通过公网地址进行访问,实现内网穿透的功能。 237 | - **Iox**: 端口转发 & 内网代理工具,功能类似于`lcx`/`ew`,但是比它们更好。 238 | - **Neo_reGeorg**: 基于 Python 开发的反向代理工具,用于绕过防火墙限制和进行网络代理。它能够将外部流量转发到内部网络,并支持通过代理隧道进行数据传输,实现网络代理和隧道的功能。 239 | - **Nps**: 轻量级的反向代理工具,用于在内网中建立安全的访问通道。它可以将内网服务映射到公网,并提供安全的访问方式,支持多种网络协议和数据加密方式。 240 | - **reGeorg**: 基于 HTTP 协议的隧道工具,用于在网络中传输数据。它可以将数据封装在 HTTP 请求中,并通过 HTTP 流量进行传输,从而绕过网络防火墙限制,实现数据隧道的功能。 241 | 242 | #### 渗透测试工具-端口扫描 243 | 244 | - **Masscan**: 高速的端口扫描工具,具有出色的扫描速度和性能。它支持快速扫描大量 IP 地址和端口范围,可以帮助用户快速发现目标系统的开放端口。 245 | - **Naabu**: 简单而快速的端口扫描工具,旨在快速识别目标主机的开放端口。它具有高度并发的能力,可以快速扫描多个目标,并输出扫描结果。 246 | - **NimScan**: 用于网络扫描和主机发现的工具,使用 Nim 语言开发。它支持快速扫描目标网络的活动主机,识别开放端口和服务信息,为渗透测试和网络安全评估提供支持。 247 | - **Nmap**: 强大的网络扫描和主机发现工具,用于识别目标网络中的活动主机、开放端口和服务信息。它支持多种扫描技术和高级功能,可用于渗透测试、漏洞评估和网络监控等用途。 248 | - **Scaninfo**: 用于收集和分析网络扫描结果的工具,可以将 Nmap 等扫描工具的输出结果转换为易读的格式,并提供更详细的扫描信息和统计数据,帮助用户更好地理解扫描结果。 249 | - **TXPortMap**: 在渗透测试的端口扫描阶段,相信很多人遇到的问题是nmap太慢,masscan不准确。 250 | 251 | #### 渗透测试工具-提权辅助 252 | 253 | - **Windows_Kernel_Exploits**: Windows_Kernel_Exploits 是一个集合了多个 Windows 内核漏洞利用工具的项目。它提供了一系列针对 Windows 操作系统内核漏洞的利用脚本和工具,用于渗透测试和安全评估,帮助用户发现和利用 Windows 内核漏洞。 254 | - **Linux_Kernel_Exploits**: Linux_Kernel_Exploits 是一个收集了多个针对 Linux 内核漏洞的利用脚本和工具的项目。它包含了各种用于渗透测试和漏洞利用的工具,用于发现和利用 Linux 操作系统内核中的漏洞,提供了一种测试和评估 Linux 系统安全性的方法。 255 | - **SharpSQLToolsGUI**: SharpSQLToolsGUI 是一个基于 .NET 的图形化 SQL 注入工具。它提供了一套方便易用的界面和功能,用于执行 SQL 注入攻击、获取数据库信息和执行数据库操作。 256 | 257 | #### 渗透测试工具-代理 258 | 259 | - **BurpSuite**: 广泛使用的渗透测试工具,用于发现和利用 Web 应用程序的安全漏洞。它提供了代理服务器、漏洞扫描器、攻击工具和报告生成器等功能。 260 | - 插件位于%Tools%\Proxy\BurpSuite\Script, 请手动安装。 261 | - **Proxifier**: 网络代理工具,用于将网络流量通过代理服务器进行转发。它可以让用户将任何应用程序的网络连接路由到指定的代理服务器,实现网络流量的转发和隧道化。 262 | - **SocksCap64**: 允许将非 SOCKS 协议的应用程序通过 SOCKS 代理服务器进行连接的工具。它提供了一种简单的方法来使非本身支持 SOCKS 协议的应用程序能够通过 SOCKS 代理服务器进行网络连接,从而实现网络流量的隧道化和代理。 263 | - **Wireshark**: 流行的网络协议分析工具,用于捕获和分析网络流量。它能够以图形化界面显示和解析网络数据包,并提供了丰富的过滤、统计和分析功能,帮助用户深入了解网络通信和进行网络故障排除、安全分析等任务。 264 | - **Yakit**: 简单易用的网络封包分析工具,用于捕获和分析网络数据包。 265 | 266 | #### 渗透测试工具-漏洞扫描 267 | 268 | - **Afrog**: 开源的漏洞扫描工具,用于发现和评估网络应用程序中的安全漏洞。 269 | - **Goby**: G全面的漏洞扫描和安全评估工具,用于发现和分析网络应用程序和主机的漏洞。 270 | - **Nuclei**: 用于自动化执行安全测试的工具,它使用基于模板的方式进行漏洞扫描和安全测试。 271 | - **OSV Scanner**: 专注于开源组件漏洞扫描的工具,用于发现应用程序中使用的开源组件中的安全漏洞。 272 | - **Vscan**: 网络漏洞扫描工具,用于发现和评估网络设备和应用程序中的安全漏洞。 273 | - **Xray**: 强大的渗透测试工具,用于发现和利用网络应用程序中的安全漏洞。它支持多种漏洞检测和渗透测试技术,包括 XSS、SQL 注入、命令执行等。Xray 提供了灵活的配置和自定义功能,可根据具体需求执行全面的安全测试。 274 | - **Super_Xray**: Xray图形化工具。 275 | 276 | #### 渗透测试工具-Webshell 277 | 278 | - **AntSword**: AntSword 是一款开源的红蚁安全团队自主研发的渗透测试框架,用于执行各种网络渗透测试任务。 279 | - **Behinder**: Behinder 是一款常见的 Web 后门工具,用于在目标 Web 服务器上植入后门,从而实现对目标系统的远程控制。 280 | - **Godzilla**: 加密的Webshell管理工具。 281 | - **Skyscorpion**: Skyscorpion 是一款开源的远程管理工具,用于远程控制和管理目标系统。 282 | - **Webshell_Script**:webshell收集项目。 283 | 284 | ### 设置Doskey (Windows Alias) 285 | 286 | - **Doskey**: 在 Windows 操作系统上使用的命令行工具,它提供了命令行历史记录、宏定义、命令别名等功能,以增强命令行的交互性和效率。 287 | - **Clink**: 为 Windows 命令行提供增强功能的工具。它扩展了 Windows 命令提示符(cmd.exe)的功能,使其更加强大和易用。Clink 提供了诸如命令自动完成、历史记录浏览、语法高亮、跳转等功能,使命令行操作更加高效和方便。 288 | 289 | ### 启动器 290 | 291 | - Dawn Launcher 免安装版 292 | 293 | ## 软件激活 294 | 295 | 仅提供方法连接,本项目未对软件进行激活。 296 | 297 | - Cobalt Strike: 来自微信公众号SafetyTeam, 侵删。 298 | - Burp Suite: 来自[独自等待](https://www.waitalone.cn/), 侵删。 299 | - [Navicat Premium](https://gitee.com/zktww/navicat-cracker) 300 | - Proxifier 4: 5EZ8G-C3WL5-B56YG-SCXM9-6QZAP 301 | - [Typora](https://fahai.org/jszt/14.html) 302 | - [Sublime Test](https://gist.github.com/opastorello/4d494d627ec9012367028c89cb7a1945) 303 | 304 | ## Star History 305 | 306 | 307 | 308 | 309 | 310 | Star History Chart 311 | 312 | 313 | 314 | -------------------------------------------------------------------------------- /install/penetration_testing_tools.go: -------------------------------------------------------------------------------- 1 | package install 2 | 3 | import ( 4 | "AceofHearts/config" 5 | "AceofHearts/utils" 6 | "fmt" 7 | "os" 8 | "path/filepath" 9 | ) 10 | 11 | func PenetrationTestingTools() { 12 | 13 | utils.Title("渗透测试工具部署") 14 | utils.Title2("渗透测试工具-免杀") 15 | os.Mkdir(config.ToolDirectory["Bypass_AV"], 0755) 16 | bypassAV() 17 | utils.Title2("渗透测试工具-C2") 18 | os.Mkdir(config.ToolDirectory["C2_Framework"], 0755) 19 | c2Framework() 20 | utils.Title2("渗透测试工具-目录扫描") 21 | os.Mkdir(config.ToolDirectory["Dir_Scanner"], 0755) 22 | dirScanner() 23 | utils.Title2("渗透测试工具-漏洞利用") 24 | os.Mkdir(config.ToolDirectory["EXP"], 0755) 25 | EXP() 26 | utils.Title2("渗透测试工具-指纹识别") 27 | os.Mkdir(config.ToolDirectory["Fingerprinting"], 0755) 28 | fingerprinting() 29 | utils.Title2("渗透测试工具-信息收集") 30 | os.Mkdir(config.ToolDirectory["Info_Gathering"], 0755) 31 | infoGathering() 32 | utils.Title2("渗透测试工具-权限维持") 33 | os.Mkdir(config.ToolDirectory["Maintain_Access"], 0755) 34 | maintainAccess() 35 | utils.Title2("渗透测试工具-密码攻击") 36 | os.Mkdir(config.ToolDirectory["Pass_Attack"], 0755) 37 | passAttack() 38 | utils.Title2("渗透测试工具-渗透测试框架") 39 | os.Mkdir(config.ToolDirectory["Penetration_Testing_Framework"], 0755) 40 | penetrationTestingFramework() 41 | utils.Title2("渗透测试工具-端口转发") 42 | os.Mkdir(config.ToolDirectory["Port_Forwarding"], 0755) 43 | portForwarding() 44 | utils.Title2("渗透测试工具-端口扫描") 45 | os.Mkdir(config.ToolDirectory["Port_Scanner"], 0755) 46 | portScanner() 47 | utils.Title2("渗透测试工具-提权辅助") 48 | os.Mkdir(config.ToolDirectory["Privilege_Escalation"], 0755) 49 | privilegeEscalation() 50 | utils.Title2("渗透测试工具-代理") 51 | os.Mkdir(config.ToolDirectory["Proxy"], 0755) 52 | proxy() 53 | utils.Title2("渗透测试工具-漏洞扫描") 54 | os.Mkdir(config.ToolDirectory["Vuln_Scanner"], 0755) 55 | vulnScanner() 56 | utils.Title2("渗透测试工具-漏洞检索") 57 | os.Mkdir(config.ToolDirectory["Vuln_Search"], 0755) 58 | vulnSearch() 59 | utils.Title2("渗透测试工具-Webshell") 60 | os.Mkdir(config.ToolDirectory["Webshell"], 0755) 61 | webshell() 62 | } 63 | 64 | func bypassAV() { 65 | 66 | filename, version, description := utils.GitReleases("1y0n", "AV_Evasion_Tool", ".zip", config.ToolDirectory["TEMP"]) 67 | utils.Unzip(filename, config.ToolDirectory["AV_Evasion_Tool"], false) 68 | fmt.Println(config.Green("掩日部署完成!")) 69 | utils.Log(fmt.Sprintf("-\t掩日\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["AV_Evasion_Tool"])) 70 | 71 | filename, version, description = utils.GitReleases("TideSec", "BypassAntiVirus", "master", config.ToolDirectory["TEMP"]) 72 | utils.Unzip(filename, config.ToolDirectory["BypassAntiVirus"], true) 73 | fmt.Println(config.Green("BypassAntiVirus 部署完成!")) 74 | utils.Log(fmt.Sprintf("-\tBypassAntiVirus\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["BypassAntiVirus"])) 75 | 76 | filename, version, description = utils.GitReleases("AceofHearts404", "GBByPass", ".jar", config.ToolDirectory["GBByPass"]) 77 | fmt.Println(config.Green("GBByPass 部署完成!")) 78 | utils.Log(fmt.Sprintf("-\tGBByPass\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["GBByPass"])) 79 | 80 | filename, version, description = utils.GitReleases("sairson", "MateuszEx", ".exe", config.ToolDirectory["MateuszEx"]) 81 | fmt.Println(config.Green("MateuszEx 部署完成!")) 82 | utils.Log(fmt.Sprintf("-\tMateuszEx\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["MateuszEx"])) 83 | 84 | filename, version, description = utils.GitReleases("knownsec", "shellcodeloader", ".7z", config.ToolDirectory["TEMP"]) 85 | utils.Unzip(filename, config.ToolDirectory["Shellcodeloader"], false) 86 | fmt.Println(config.Green("Shellcodeloader部署完成!")) 87 | utils.Log(fmt.Sprintf("-\tShellcodeloader\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Shellcodeloader"])) 88 | 89 | } 90 | 91 | func c2Framework() { 92 | 93 | filename, version, description := utils.GitReleases("AceofHearts404", "cs_open_jar", "jar.zip", config.ToolDirectory["TEMP"]) 94 | utils.Unzip(filename, config.ToolDirectory["Cobalt_Strike"], true) 95 | fmt.Println(config.Green("Cobalt_Strike 部署完成!")) 96 | utils.Log(fmt.Sprintf("-\tCobalt Strike\n\t-\tVersion: 4.5\n\t-\t简介: SafetyTeam 魔改版,请关注该公众号!\n\t-\t安装路径: %s\n", config.ToolDirectory["Cobalt_Strike"])) 97 | 98 | filename, version, description = utils.GitReleases("d3ckx1", "OLa", ".7z", config.ToolDirectory["TEMP"]) 99 | utils.Unzip(filename, config.ToolDirectory["OLa"], false) 100 | fmt.Println(config.Green("OLa 部署完成!")) 101 | utils.Log(fmt.Sprintf("-\t\tOLa(请手动加载)\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Cobalt_Strike"])) 102 | 103 | filename, version, description = utils.GitReleases("BishopFox", "sliver", "client_windows.exe", config.ToolDirectory["Sliver"]) 104 | filename, version, description = utils.GitReleases("BishopFox", "sliver", "server_windows.exe", config.ToolDirectory["Sliver"]) 105 | fmt.Println(config.Green("Sliver 部署完成!")) 106 | utils.Log(fmt.Sprintf("-\tSliver\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Sliver"])) 107 | 108 | } 109 | 110 | func dirScanner() { 111 | 112 | filename, version, description := utils.GitReleases("H4ckForJob", "dirmap", "master", config.ToolDirectory["TEMP"]) 113 | utils.Unzip(filename, config.ToolDirectory["Dirmap"], true) 114 | fmt.Println(config.Green("Dirmap 部署完成!")) 115 | utils.Log(fmt.Sprintf("-\tDirmap\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Dirmap"])) 116 | 117 | filename, version, description = utils.GitReleases("maurosoria", "dirsearch", "master", config.ToolDirectory["TEMP"]) 118 | utils.Unzip(filename, config.ToolDirectory["Dirsearch"], true) 119 | fmt.Println(config.Green("Dirsearch 部署完成!")) 120 | utils.Log(fmt.Sprintf("-\tDirsearch\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Dirsearch"])) 121 | 122 | filename, version, description = utils.GitReleases("ffuf", "ffuf", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 123 | utils.Unzip(filename, config.ToolDirectory["Ffuf"], false) 124 | fmt.Println(config.Green("Ffuf 部署完成!")) 125 | utils.Log(fmt.Sprintf("-\tFfuf\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Ffuf"])) 126 | 127 | filename, version, description = utils.GitReleases("Threezh1", "JSFinder", "master", config.ToolDirectory["TEMP"]) 128 | utils.Unzip(filename, config.ToolDirectory["JSFinder"], true) 129 | fmt.Println(config.Green("JSFinder 部署完成!")) 130 | utils.Log(fmt.Sprintf("-\tJSFinder\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["JSFinder"])) 131 | 132 | filename, version, description = utils.GitReleases("7kbstorm", "7kbscan-WebPathBrute", ".zip", config.ToolDirectory["TEMP"]) 133 | utils.Unzip(filename, config.ToolDirectory["WebPathBrute"], false) 134 | fmt.Println(config.Green("WebPathBrute 部署完成!")) 135 | utils.Log(fmt.Sprintf("-\tWebPathBrute\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["WebPathBrute"])) 136 | 137 | } 138 | 139 | func EXP() { 140 | 141 | filename, version, description := utils.GitReleases("kleiton0x00", "Advanced-SQL-Injection-Cheatsheet", "main", config.ToolDirectory["TEMP"]) 142 | utils.Unzip(filename, config.ToolDirectory["Advanced_SQL_Injection_Cheatsheet"], true) 143 | fmt.Println(config.Green("Advanced-SQL-Injection-Cheatsheet 部署完成!")) 144 | utils.Log(fmt.Sprintf("-\tAdvanced-SQL-Injection-Cheatsheet\n\t-\tVersion: 无\n\t-\t简介: 此存储库包含所有类型的 SQL 注入的高级方法。\n\t-\t安装路径: %s\n", config.ToolDirectory["Advanced_SQL_Injection_Cheatsheet"])) 145 | 146 | filename, version, description = utils.GitReleases("Mustard404", "cf", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 147 | utils.Unzip(filename, config.ToolDirectory["CF"], false) 148 | fmt.Println(config.Green("CF 部署完成!")) 149 | utils.Log(fmt.Sprintf("-\tCF\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["CF"])) 150 | 151 | filename, version, description = utils.GitReleases("commixproject", "commix", "master", config.ToolDirectory["TEMP"]) 152 | utils.Unzip(filename, config.ToolDirectory["Commix"], true) 153 | fmt.Println(config.Green("Commix 部署完成!")) 154 | utils.Log(fmt.Sprintf("-\tCommix\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Commix"])) 155 | 156 | filename, version, description = utils.GitReleases("hahwul", "dalfox", "windows_amd64.tar.gz", config.ToolDirectory["TEMP"]) 157 | utils.Unzip(filename, config.ToolDirectory["Dalfox"], false) 158 | fmt.Println(config.Green("Dalfox 部署完成!")) 159 | utils.Log(fmt.Sprintf("-\tDalfox\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Dalfox"])) 160 | 161 | filename, version, description = utils.GitReleases("almandin", "fuxploider", "master", config.ToolDirectory["TEMP"]) 162 | utils.Unzip(filename, config.ToolDirectory["Fuxploider"], true) 163 | fmt.Println(config.Green("Fuxploider 部署完成!")) 164 | utils.Log(fmt.Sprintf("-\tFuxploider\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Fuxploider"])) 165 | 166 | filename, version, description = utils.GitReleases("AceofHearts404", "JNDIExploit", ".zip", config.ToolDirectory["TEMP"]) 167 | utils.Unzip(filename, config.ToolDirectory["JNDIExploit"], true) 168 | fmt.Println(config.Green("JNDIExploit 部署完成!")) 169 | utils.Log(fmt.Sprintf("-\tJNDIExploit\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["JNDIExploit"])) 170 | 171 | filename, version, description = utils.GitReleases("D35m0nd142", "LFISuite", "master", config.ToolDirectory["TEMP"]) 172 | utils.Unzip(filename, config.ToolDirectory["LFISuite"], true) 173 | fmt.Println(config.Green("LFISuite 部署完成!")) 174 | utils.Log(fmt.Sprintf("-\tLFISuite\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["LFISuite"])) 175 | 176 | filename, version, description = utils.GitReleases("feihong-cs", "ShiroExploit-Deprecated", ".7z", config.ToolDirectory["TEMP"]) 177 | utils.Unzip(filename, config.ToolDirectory["ShiroExploit"], true) 178 | fmt.Println(config.Green("ShiroExploit 部署完成!")) 179 | utils.Log(fmt.Sprintf("-\tShiroExploit\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["ShiroExploit"])) 180 | 181 | filename, version, description = utils.GitReleases("SummerSec", "ShiroAttack2", ".zip", config.ToolDirectory["TEMP"]) 182 | utils.Unzip(filename, config.ToolDirectory["ShiroAttack2"], false) 183 | fmt.Println(config.Green("ShiroAttack2 部署完成!")) 184 | utils.Log(fmt.Sprintf("-\tShiroAttack2\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["ShiroAttack2"])) 185 | 186 | filename, version, description = utils.GitReleases("sqlmapproject", "sqlmap", "master", config.ToolDirectory["TEMP"]) 187 | utils.Unzip(filename, config.ToolDirectory["Sqlmap"], true) 188 | fmt.Println(config.Green("Sqlmap 部署完成!")) 189 | utils.Log(fmt.Sprintf("-\tSqlmap\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Sqlmap"])) 190 | 191 | filename, version, description = utils.GitReleases("shack2", "SuperSQLInjectionV1", ".zip", config.ToolDirectory["TEMP"]) 192 | utils.Unzip(filename, config.ToolDirectory["SuperSQLInjection"], false) 193 | fmt.Println(config.Green("SuperSQLInjection 部署完成!")) 194 | utils.Log(fmt.Sprintf("-\tSuperSQLInjection\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["SuperSQLInjection"])) 195 | 196 | filename, version, description = utils.GitReleases("s0md3v", "XSStrike", "master", config.ToolDirectory["TEMP"]) 197 | utils.Unzip(filename, config.ToolDirectory["XSStrike"], true) 198 | fmt.Println(config.Green("XSStrike 部署完成!")) 199 | utils.Log(fmt.Sprintf("-\tXSStrike\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["XSStrike"])) 200 | 201 | filename, version, description = utils.GitReleases("evilcos", "xssor2", "master", config.ToolDirectory["TEMP"]) 202 | utils.Unzip(filename, config.ToolDirectory["Xssor2"], true) 203 | fmt.Println(config.Green("Xssor2 部署完成!")) 204 | utils.Log(fmt.Sprintf("-\tXssor2\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Xssor2"])) 205 | 206 | filename, version, description = utils.GitReleases("enjoiz", "XXEinjector", "master", config.ToolDirectory["TEMP"]) 207 | utils.Unzip(filename, config.ToolDirectory["XXEinjector"], true) 208 | fmt.Println(config.Green("XXEinjector 部署完成!")) 209 | utils.Log(fmt.Sprintf("-\tXXEinjector\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["XXEinjector"])) 210 | 211 | filename, version, description = utils.GitReleases("KimJun1010", "WeblogicTool", ".jar", config.ToolDirectory["WeblogicTool"]) 212 | fmt.Println(config.Green("WeblogicTool 部署完成!")) 213 | utils.Log(fmt.Sprintf("-\tWeblogicTool\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["WeblogicTool"])) 214 | 215 | filename, version, description = utils.GitReleases("wh1t3p1g", "ysomap", ".jar", config.ToolDirectory["Ysomap"]) 216 | fmt.Println(config.Green("Ysomap 部署完成!")) 217 | utils.Log(fmt.Sprintf("-\tYsomap\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Ysomap"])) 218 | } 219 | 220 | func fingerprinting() { 221 | 222 | filename, version, description := utils.GitReleases("Tuhinshubhra", "CMSeeK", "master", config.ToolDirectory["TEMP"]) 223 | utils.Unzip(filename, config.ToolDirectory["CMSeeK"], true) 224 | fmt.Println(config.Green("CMSeeK 部署完成!")) 225 | utils.Log(fmt.Sprintf("-\tCMSeeK\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["CMSeeK"])) 226 | 227 | filename, version, description = utils.GitReleases("EdgeSecurityTeam", "EHole", "windows", config.ToolDirectory["TEMP"]) 228 | utils.Unzip(filename, config.ToolDirectory["EHole"], false) 229 | fmt.Println(config.Green("EHole 部署完成!")) 230 | utils.Log(fmt.Sprintf("-\tCMSeeK\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["EHole"])) 231 | 232 | filename, version, description = utils.GitReleases("0x727", "ObserverWard", "windows-msvc.zip", config.ToolDirectory["TEMP"]) 233 | utils.Unzip(filename, config.ToolDirectory["ObserverWard"], false) 234 | fmt.Println(config.Green("ObserverWard 部署完成!")) 235 | utils.Log(fmt.Sprintf("-\tObserverWard\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["ObserverWard"])) 236 | 237 | filename, version, description = utils.GitReleases("TideSec", "TideFinger", "master", config.ToolDirectory["TEMP"]) 238 | utils.Unzip(filename, config.ToolDirectory["TideFinger"], false) 239 | fmt.Println(config.Green("TideFinger 部署完成!")) 240 | utils.Log(fmt.Sprintf("-\tTideFinger\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["TideFinger"])) 241 | 242 | } 243 | 244 | func infoGathering() { 245 | 246 | filename, version, description := utils.GitReleases("owasp-amass", "amass", "amass_Windows_amd64.zip", config.ToolDirectory["TEMP"]) 247 | utils.Unzip(filename, config.ToolDirectory["Amass"], true) 248 | fmt.Println(config.Green("Amass 部署完成!")) 249 | utils.Log(fmt.Sprintf("-\tAmass\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Amass"])) 250 | 251 | filename, version, description = utils.GitReleases("chris408", "ct-exposer", "master", config.ToolDirectory["TEMP"]) 252 | utils.Unzip(filename, config.ToolDirectory["Ct_Exposer"], true) 253 | fmt.Println(config.Green("Ct_Exposer 部署完成!")) 254 | utils.Log(fmt.Sprintf("-\tCt_Exposer\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Ct_Exposer"])) 255 | 256 | filename, version, description = utils.GitReleases("projectdiscovery", "dnsx", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 257 | utils.Unzip(filename, config.ToolDirectory["Dnsx"], false) 258 | fmt.Println(config.Green("Dnsx 部署完成!")) 259 | utils.Log(fmt.Sprintf("-\tDnsx\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Dnsx"])) 260 | 261 | filename, version, description = utils.GitReleases("lijiejie", "ds_store_exp", "master", config.ToolDirectory["TEMP"]) 262 | utils.Unzip(filename, config.ToolDirectory["Ds_store_exp"], true) 263 | fmt.Println(config.Green("Ds_store_exp 部署完成!")) 264 | utils.Log(fmt.Sprintf("-\tDs_store_exp\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Ds_store_exp"])) 265 | 266 | filename, version, description = utils.GitReleases("wgpsec", "fofa_viewer", "JDK8.zip", config.ToolDirectory["TEMP"]) 267 | utils.Unzip(filename, config.ToolDirectory["Fofa_Viewer"], false) 268 | fmt.Println(config.Green("Fofa_Viewer 部署完成!")) 269 | utils.Log(fmt.Sprintf("-\tFofa_Viewer\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Fofa_Viewer"])) 270 | 271 | filename, version, description = utils.GitReleases("hisxo", "gitGraber", "master", config.ToolDirectory["TEMP"]) 272 | utils.Unzip(filename, config.ToolDirectory["Gitgraber"], true) 273 | fmt.Println(config.Green("Gitgraber 部署完成!")) 274 | utils.Log(fmt.Sprintf("-\tGitgraber\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Gitgraber"])) 275 | 276 | filename, version, description = utils.GitReleases("lijiejie", "GitHack", "master", config.ToolDirectory["TEMP"]) 277 | utils.Unzip(filename, config.ToolDirectory["Githack"], true) 278 | fmt.Println(config.Green("Githack 部署完成!")) 279 | utils.Log(fmt.Sprintf("-\tGithack\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Githack"])) 280 | 281 | filename, version, description = utils.GitReleases("UnkL4b", "GitMiner", "master", config.ToolDirectory["TEMP"]) 282 | utils.Unzip(filename, config.ToolDirectory["Gitminer"], true) 283 | fmt.Println(config.Green("Gitminer 部署完成!")) 284 | utils.Log(fmt.Sprintf("-\tGitminer\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Gitminer"])) 285 | 286 | // 未发布正式版本,暂不调取 287 | filename = utils.Download("https://github.com/michenriksen/gitrob/releases/download/v2.0.0-beta/gitrob_windows_amd64_2.0.0-beta.zip", config.ToolDirectory["TEMP"]) 288 | utils.Unzip(filename, config.ToolDirectory["Gitrob"], false) 289 | fmt.Println(config.Green("Gitrob 部署完成!")) 290 | utils.Log(fmt.Sprintf("-\tGitminer\n\t-\tVersion: v2.0.0-beta\n\t-\t简介: Gitrob 是一种工具,可帮助查找推送到 Github 上公共存储库的潜在敏感文件。\n\t-\t安装路径: %s\n", config.ToolDirectory["Gitminer"])) 291 | 292 | filename, version, description = utils.GitReleases("OJ", "gobuster", "Windows_x86_64.zip", config.ToolDirectory["TEMP"]) 293 | utils.Unzip(filename, config.ToolDirectory["Gobuster"], false) 294 | fmt.Println(config.Green("Gobuster 部署完成!")) 295 | utils.Log(fmt.Sprintf("-\tGobuster\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Gobuster"])) 296 | 297 | filename, version, description = utils.GitReleases("boy-hack", "ksubdomain", "windows.tar", config.ToolDirectory["TEMP"]) 298 | utils.Unzip(filename, config.ToolDirectory["Ksubdomain"], false) 299 | fmt.Println(config.Green("Ksubdomain 部署完成!")) 300 | utils.Log(fmt.Sprintf("-\tKsubdomain\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Ksubdomain"])) 301 | 302 | filename, version, description = utils.GitReleases("euphrat1ca", "LayerDomainFinder", ".zip", config.ToolDirectory["TEMP"]) 303 | utils.Unzip(filename, config.ToolDirectory["Layer"], false) 304 | fmt.Println(config.Green("Layer 部署完成!")) 305 | utils.Log(fmt.Sprintf("-\tLayer\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Layer"])) 306 | 307 | filename, version, description = utils.GitReleases("shmilylty", "OneForAll", "master", config.ToolDirectory["TEMP"]) 308 | utils.Unzip(filename, config.ToolDirectory["Oneforall"], true) 309 | fmt.Println(config.Green("Oneforall 部署完成!")) 310 | utils.Log(fmt.Sprintf("-\tOneforall\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Oneforall"])) 311 | 312 | filename, version, description = utils.GitReleases("smicallef", "spiderfoot", "master", config.ToolDirectory["TEMP"]) 313 | utils.Unzip(filename, config.ToolDirectory["Spiderfoot"], true) 314 | fmt.Println(config.Green("Spiderfoot 部署完成!")) 315 | utils.Log(fmt.Sprintf("-\tSpiderfoot\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Spiderfoot"])) 316 | 317 | filename, version, description = utils.GitReleases("projectdiscovery", "subfinder", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 318 | utils.Unzip(filename, config.ToolDirectory["Subfinder"], false) 319 | fmt.Println(config.Green("Subfinder 部署完成!")) 320 | utils.Log(fmt.Sprintf("-\tSubfinder\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Subfinder"])) 321 | 322 | filename, version, description = utils.GitReleases("admintony", "svnExploit", "master", config.ToolDirectory["TEMP"]) 323 | utils.Unzip(filename, config.ToolDirectory["Svnexploit"], true) 324 | fmt.Println(config.Green("Svnexploit 部署完成!")) 325 | utils.Log(fmt.Sprintf("-\tSvnexploit\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Svnexploit"])) 326 | 327 | filename, version, description = utils.GitReleases("laramies", "theharvester", "master", config.ToolDirectory["TEMP"]) 328 | utils.Unzip(filename, config.ToolDirectory["Theharvester"], true) 329 | fmt.Println(config.Green("Theharvester 部署完成!")) 330 | utils.Log(fmt.Sprintf("-\tTheharvester\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Theharvester"])) 331 | } 332 | 333 | func maintainAccess() { 334 | 335 | filename, version, description := utils.GitReleases("nodauf", "Girsh", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 336 | utils.Unzip(filename, config.ToolDirectory["Girsh"], false) 337 | fmt.Println(config.Green("Girsh 部署完成!")) 338 | utils.Log(fmt.Sprintf("-\tGirsh\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Girsh"])) 339 | 340 | filename, version, description = utils.GitReleases("erikgeiser", "govenom", "windows_x64.zip", config.ToolDirectory["Govenom"]) 341 | utils.Unzip(filename, config.ToolDirectory["Govenom"], false) 342 | fmt.Println(config.Green("Govenom 部署完成!")) 343 | utils.Log(fmt.Sprintf("-\tGovenom\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Govenom"])) 344 | 345 | filename, version, description = utils.GitReleases("WangYihang", "Platypus", "windows_amd64.exe", config.ToolDirectory["Platypus"]) 346 | fmt.Println(config.Green("Platypus 部署完成!")) 347 | utils.Log(fmt.Sprintf("-\tPlatypus\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Platypus"])) 348 | 349 | filename, version, description = utils.GitReleases("Fahrj", "reverse-ssh", "x64.exe", config.ToolDirectory["Reverse_ssh"]) 350 | fmt.Println(config.Green("Reverse_ssh 部署完成!")) 351 | utils.Log(fmt.Sprintf("-\tReverse_ssh\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Reverse_ssh"])) 352 | 353 | } 354 | 355 | func passAttack() { 356 | 357 | filename, version, description := utils.GitReleases("moonD4rk", "HackBrowserData", "windows-64bit.zip", config.ToolDirectory["TEMP"]) 358 | utils.Unzip(filename, config.ToolDirectory["HackBrowserData"], false) 359 | fmt.Println(config.Green("HackBrowserData 部署完成!")) 360 | utils.Log(fmt.Sprintf("-\tHackBrowserData\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["HackBrowserData"])) 361 | 362 | filename, version, description = utils.GitReleases("hashcat", "hashcat", ".7z", config.ToolDirectory["TEMP"]) 363 | utils.Unzip(filename, config.ToolDirectory["Hashcat"], true) 364 | fmt.Println(config.Green("Hashcat 部署完成!")) 365 | utils.Log(fmt.Sprintf("-\tHashcat\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Hashcat"])) 366 | 367 | filename, version, description = utils.GitReleases("maaaaz", "thc-hydra-windows", ".zip", config.ToolDirectory["TEMP"]) 368 | utils.Unzip(filename, config.ToolDirectory["Thc_Hydra"], false) 369 | fmt.Println(config.Green("Thc_Hydra 部署完成!")) 370 | utils.Log(fmt.Sprintf("-\tThc_Hydra\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Thc_Hydra"])) 371 | 372 | filename = utils.Download("https://www.openwall.com/john/k/john-1.9.0-jumbo-1-win64.7z", config.ToolDirectory["TEMP"]) 373 | utils.Unzip(filename, config.ToolDirectory["John"], true) 374 | fmt.Println(config.Green("John 部署完成!")) 375 | utils.Log(fmt.Sprintf("-\tJohn\n\t-\tVersion: v1.9.0 \n\t-\t简介: John the Ripper 是一种开源密码安全审核和密码恢复工具,可用于许多操作系统\n\t-\t安装路径: %s\n", config.ToolDirectory["John"])) 376 | 377 | filename = utils.Download("https://openwall.info/wiki/_media/john/johnny/johnny_2.2_win.zip", config.ToolDirectory["TEMP"]) 378 | utils.Unzip(filename, config.ToolDirectory["Johnny"], false) 379 | fmt.Println(config.Green("Johnny 部署完成!")) 380 | utils.Log(fmt.Sprintf("-\tJohnny\n\t-\tVersion: v2.2\n\t-\t简介: Johnny 是流行的密码破解者 John the Ripper 的 跨平台开源GUI前端。\n\t-\t安装路径: %s\n", config.ToolDirectory["Johnny"])) 381 | 382 | filename, version, description = utils.GitReleases("lanjelot", "patator", "master", config.ToolDirectory["TEMP"]) 383 | utils.Unzip(filename, config.ToolDirectory["Patator"], true) 384 | fmt.Println(config.Green("Patator 部署完成!")) 385 | utils.Log(fmt.Sprintf("-\tPatator\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Patator"])) 386 | 387 | filename, version, description = utils.GitReleases("berzerk0", "Probable-Wordlists", "master", config.ToolDirectory["TEMP"]) 388 | utils.Unzip(filename, config.ToolDirectory["Probable_Wordlists"], true) 389 | fmt.Println(config.Green("Probable_Wordlists 部署完成!")) 390 | utils.Log(fmt.Sprintf("-\tProbable_Wordlists\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Probable_Wordlists"])) 391 | 392 | filename, version, description = utils.GitReleases("t3l3machus", "psudohash", "main", config.ToolDirectory["TEMP"]) 393 | utils.Unzip(filename, config.ToolDirectory["Psudohash"], true) 394 | fmt.Println(config.Green("Psudohash 部署完成!")) 395 | utils.Log(fmt.Sprintf("-\tPsudohash\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Psudohash"])) 396 | 397 | } 398 | 399 | func penetrationTestingFramework() { 400 | 401 | filename := utils.Download("https://windows.metasploit.com/metasploitframework-latest.msi", config.ToolDirectory["TEMP"]) 402 | result := utils.Cmd("msiexec", "/i", filename, "/qn", fmt.Sprintf("INSTALLLOCATION=%s", config.ToolDirectory["Penetration_Testing_Framework"])) 403 | oldFilename := filepath.Join(config.ToolDirectory["Penetration_Testing_Framework"], "\\metasploit-framework") 404 | os.Rename(oldFilename, config.ToolDirectory["Metasploit"]) 405 | if result { 406 | fmt.Println(config.Green("部署Metasploit成功!\n")) 407 | utils.Log(fmt.Sprintf("-\t部署Metasploit成功!\n\t-\t安装路径: %s\n", config.ToolDirectory["Metasploit"])) 408 | } else { 409 | fmt.Println(config.Red("部署Metasploit失败!\n")) 410 | utils.Log("-\t部署Metasploit失败!\n") 411 | } 412 | 413 | filename, version, description := utils.GitReleases("knownsec", "pocsuite3", "master", config.ToolDirectory["TEMP"]) 414 | utils.Unzip(filename, config.ToolDirectory["Pocsuite3"], true) 415 | fmt.Println(config.Green("Pocsuite3部署完成!")) 416 | utils.Log(fmt.Sprintf("-\tPocsuite3\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Pocsuite3"])) 417 | } 418 | 419 | func portForwarding() { 420 | 421 | filename, version, description := utils.GitReleases("fatedier", "frp", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 422 | utils.Unzip(filename, config.ToolDirectory["Frp"], true) 423 | fmt.Println(config.Green("Frp 部署完成!")) 424 | utils.Log(fmt.Sprintf("-\tFrp\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Frp"])) 425 | 426 | filename, version, description = utils.GitReleases("EddieIvan01", "iox", "Windows_x86_64.tar.gz", config.ToolDirectory["TEMP"]) 427 | utils.Unzip(filename, config.ToolDirectory["Iox"], false) 428 | fmt.Println(config.Green("Iox 部署完成!")) 429 | utils.Log(fmt.Sprintf("-\tIox\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Iox"])) 430 | 431 | filename, version, description = utils.GitReleases("L-codes", "Neo-reGeorg", "master", config.ToolDirectory["TEMP"]) 432 | utils.Unzip(filename, config.ToolDirectory["Neo_reGeorg"], true) 433 | fmt.Println(config.Green("Neo_reGeorg 部署完成!")) 434 | utils.Log(fmt.Sprintf("-\tNeo_reGeorg\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Neo_reGeorg"])) 435 | 436 | filename, version, description = utils.GitReleases("ehang-io", "nps", "windows_amd64_server.tar.gz", config.ToolDirectory["TEMP"]) 437 | utils.Unzip(filename, config.ToolDirectory["Nps"], false) 438 | fmt.Println(config.Green("Nps 部署完成!")) 439 | utils.Log(fmt.Sprintf("-\tNps\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Nps"])) 440 | 441 | filename, version, description = utils.GitReleases("sensepost", "reGeorg", "master", config.ToolDirectory["TEMP"]) 442 | utils.Unzip(filename, config.ToolDirectory["reGeorg"], true) 443 | fmt.Println(config.Green("reGeorg 部署完成!")) 444 | utils.Log(fmt.Sprintf("-\treGeorg\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["reGeorg"])) 445 | 446 | } 447 | 448 | func portScanner() { 449 | 450 | filename, version, description := utils.GitReleases("AceofHearts404", "masscan", "masscan.exe", config.ToolDirectory["Masscan"]) 451 | fmt.Println(config.Green("Masscan 部署完成!")) 452 | utils.Log(fmt.Sprintf("-\tMasscan\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Masscan"])) 453 | 454 | filename, version, description = utils.GitReleases("projectdiscovery", "naabu", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 455 | utils.Unzip(filename, config.ToolDirectory["Naabu"], false) 456 | fmt.Println(config.Green("Naabu 部署完成!")) 457 | utils.Log(fmt.Sprintf("-\tNaabu\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Naabu"])) 458 | 459 | filename, version, description = utils.GitReleases("elddy", "NimScan", "NimScan.exe", config.ToolDirectory["NimScan"]) 460 | fmt.Println(config.Green("NimScan 部署完成!")) 461 | utils.Log(fmt.Sprintf("-\tNimScan\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["NimScan"])) 462 | 463 | nmapCommand := []string{""} 464 | utils.ChocoInstall("Nmap", "nmap", config.ToolDirectory["Nmap"], nmapCommand) 465 | os.Rename("C:\\Program Files (x86)\\Nmap", config.ToolDirectory["Nmap"]) 466 | 467 | filename, version, description = utils.GitReleases("AceofHearts404", "RouterScan", ".zip", config.ToolDirectory["TEMP"]) 468 | utils.Unzip(filename, config.ToolDirectory["RouterScan"], false) 469 | fmt.Println(config.Green("RouterScan 部署完成!")) 470 | utils.Log(fmt.Sprintf("-\tRouterScan\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["RouterScan"])) 471 | 472 | filename, version, description = utils.GitReleases("redtoolskobe", "scaninfo", "windows_x64.exe", config.ToolDirectory["Scaninfo"]) 473 | fmt.Println(config.Green("Scaninfo 部署完成!")) 474 | utils.Log(fmt.Sprintf("-\tScaninfo\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Scaninfo"])) 475 | 476 | filename, version, description = utils.GitReleases("4dogs-cn", "TXPortMap", "windows_x64.exe", config.ToolDirectory["TXPortMap"]) 477 | fmt.Println(config.Green("TXPortMap 部署完成!")) 478 | utils.Log(fmt.Sprintf("-\tTXPortMap\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["TXPortMap"])) 479 | 480 | } 481 | 482 | func privilegeEscalation() { 483 | 484 | filename, version, description := utils.GitReleases("SecWiki", "windows-kernel-exploits", "master", config.ToolDirectory["TEMP"]) 485 | utils.Unzip(filename, config.ToolDirectory["Windows_Kernel_Exploits"], true) 486 | fmt.Println(config.Green("Windows_Kernel_Exploits 部署完成!")) 487 | utils.Log(fmt.Sprintf("-\tWindows_Kernel_Exploits\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Windows_Kernel_Exploits"])) 488 | 489 | filename, version, description = utils.GitReleases("SecWiki", "linux-kernel-exploits", "master", config.ToolDirectory["TEMP"]) 490 | utils.Unzip(filename, config.ToolDirectory["Linux_Kernel_Exploits"], true) 491 | fmt.Println(config.Green("Linux_Kernel_Exploits 部署完成!")) 492 | utils.Log(fmt.Sprintf("-\tLinux_Kernel_Exploits\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Linux_Kernel_Exploits"])) 493 | 494 | filename, version, description = utils.GitReleases("RowTeam", "SharpSQLTools", "SharpSQLToolsGUI.zip", config.ToolDirectory["TEMP"]) 495 | utils.Unzip(filename, config.ToolDirectory["SharpSQLToolsGUI"], false) 496 | fmt.Println(config.Green("SharpSQLToolsGUI 部署完成!")) 497 | utils.Log(fmt.Sprintf("-\tSharpSQLToolsGUI\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["SharpSQLToolsGUI"])) 498 | } 499 | 500 | func proxy() { 501 | 502 | //burpsuiteCommand := []string{fmt.Sprintf("--install-arguments=\"-dir %s\"", config.ToolDirectory["BurpSuite"])} 503 | //utils.ChocoInstall("BurpSuite", "burp-suite-pro-edition", config.ToolDirectory["BurpSuite"], burpsuiteCommand) 504 | filename, version, description := utils.GitReleases("AceofHearts404", "bp", ".zip", config.ToolDirectory["TEMP"]) 505 | utils.Unzip(filename, config.ToolDirectory["BurpSuite"], false) 506 | fmt.Println(config.Green("BurpSuite 部署完成!")) 507 | utils.Log(fmt.Sprintf("-\tBurpSuite\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["BurpSuite"])) 508 | 509 | proxifierCommand := []string{fmt.Sprintf("--install-arguments=\"/DIR=%s\"", config.ToolDirectory["Proxifier"])} 510 | utils.ChocoInstall("Proxifier", "proxifier", config.ToolDirectory["Proxifier"], proxifierCommand) 511 | 512 | filename, version, description = utils.GitReleases("AceofHearts404", "SocksCap64", ".zip", config.ToolDirectory["TEMP"]) 513 | utils.Unzip(filename, config.ToolDirectory["SocksCap64"], false) 514 | fmt.Println(config.Green("SocksCap64 部署完成!")) 515 | utils.Log(fmt.Sprintf("-\tSocksCap64\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["SocksCap64"])) 516 | 517 | wiresharkCommand := []string{fmt.Sprintf("--install-arguments=\"/D=%s\"", config.ToolDirectory["Wireshark"])} 518 | utils.ChocoInstall("Wireshark", "wireshark", config.ToolDirectory["Wireshark"], wiresharkCommand) 519 | 520 | filename, version, description = utils.GitReleases("yaklang", "yakit", ".exe", config.ToolDirectory["TEMP"]) 521 | utils.Cmd(filename) 522 | yakitDirectory := filepath.Join(os.Getenv("USERPROFILE"), "\\AppData\\Local\\Programs\\yakit") 523 | err := os.Rename(yakitDirectory, config.ToolDirectory["Proxy"]) 524 | if err != nil { 525 | fmt.Println(config.Red("重命名文件夹失败:"), err) 526 | return 527 | } 528 | fmt.Println(config.Green("Yakit 部署完成!")) 529 | utils.Log(fmt.Sprintf("-\tYakit\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Yakit"])) 530 | } 531 | 532 | func vulnScanner() { 533 | filename, version, description := utils.GitReleases("zan8in", "afrog", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 534 | utils.Unzip(filename, config.ToolDirectory["Afrog"], false) 535 | fmt.Println(config.Green("Afrog 部署完成!")) 536 | utils.Log(fmt.Sprintf("-\tAfrog\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Afrog"])) 537 | 538 | filename, version, description = utils.GitReleases("projectdiscovery", "nuclei", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 539 | utils.Unzip(filename, config.ToolDirectory["Nuclei"], false) 540 | fmt.Println(config.Green("Nuclei 部署完成!")) 541 | utils.Log(fmt.Sprintf("-\tNuclei\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Nuclei"])) 542 | 543 | filename, version, description = utils.GitReleases("google", "osv-scanner", "windows_arm64.exe", config.ToolDirectory["OSV_Scanner"]) 544 | fmt.Println(config.Green("OSV Scanner 部署完成!")) 545 | utils.Log(fmt.Sprintf("-\tOSV Scanner\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["OSV_Scanner"])) 546 | 547 | filename, version, description = utils.GitReleases("gobysec", "Goby", "goby-win", config.ToolDirectory["TEMP"]) 548 | utils.Unzip(filename, config.ToolDirectory["Goby"], true) 549 | fmt.Println(config.Green("Goby 部署完成!")) 550 | utils.Log(fmt.Sprintf("-\tGoby\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Goby"])) 551 | 552 | filename, version, description = utils.GitReleases("veo", "vscan", "windows_amd64.zip", config.ToolDirectory["TEMP"]) 553 | utils.Unzip(filename, config.ToolDirectory["Vscan"], false) 554 | fmt.Println(config.Green("Vscan 部署完成!")) 555 | utils.Log(fmt.Sprintf("-\tVscan\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Vscan"])) 556 | 557 | filename, version, description = utils.GitReleases("chaitin", "Xray", "windows_amd64.exe.zip", config.ToolDirectory["TEMP"]) 558 | utils.Unzip(filename, config.ToolDirectory["Xray"], false) 559 | fmt.Println(config.Green("Xray 部署完成!")) 560 | utils.Log(fmt.Sprintf("-\tXray\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Xray"])) 561 | 562 | filename, version, description = utils.GitReleases("4ra1n", "super-xray", ".jar", config.ToolDirectory["Super_Xray"]) 563 | fmt.Println(config.Green("Super_Xray 部署完成!")) 564 | utils.Log(fmt.Sprintf("-\tSuper_Xray\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Super_Xray"])) 565 | } 566 | 567 | func vulnSearch() { 568 | 569 | } 570 | 571 | func webshell() { 572 | filename, version, description := utils.GitReleases("AntSwordProject", "AntSword-Loader", "win32-x64.zip", config.ToolDirectory["TEMP"]) 573 | utils.Unzip(filename, config.ToolDirectory["Antsword"], true) 574 | fmt.Println(config.Green("Antsword 部署完成!")) 575 | utils.Log(fmt.Sprintf("-\tAntSword\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Antsword"])) 576 | 577 | filename, version, description = utils.GitReleases("rebeyond", "Behinder", ".zip", config.ToolDirectory["TEMP"]) 578 | utils.Unzip(filename, config.ToolDirectory["Behinder"], false) 579 | fmt.Println(config.Green("Behinder 部署完成!")) 580 | utils.Log(fmt.Sprintf("-\tBehinder\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Behinder"])) 581 | 582 | filename, version, description = utils.GitReleases("BeichenDream", "Godzilla", ".jar", config.ToolDirectory["Godzilla"]) 583 | fmt.Println(config.Green("Godzilla 部署完成!")) 584 | utils.Log(fmt.Sprintf("-\tGodzilla\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Godzilla"])) 585 | 586 | filename, version, description = utils.GitReleases("shack2", "skyscorpion", ".zip", config.ToolDirectory["TEMP"]) 587 | utils.Unzip(filename, config.ToolDirectory["Skyscorpion"], false) 588 | fmt.Println(config.Green("Skyscorpion 部署完成!")) 589 | utils.Log(fmt.Sprintf("-\tSkyscorpion\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Skyscorpion"])) 590 | 591 | filename, version, description = utils.GitReleases("tennc", "webshell", "master", config.ToolDirectory["TEMP"]) 592 | utils.Unzip(filename, config.ToolDirectory["Webshell_Script"], true) 593 | fmt.Println(config.Green("Webshell_Script 部署完成!")) 594 | utils.Log(fmt.Sprintf("-\tWebshell_Script\n\t-\tVersion: %s\n\t-\t简介: %s\n\t-\t安装路径: %s\n", version, description, config.ToolDirectory["Webshell_Script"])) 595 | } 596 | --------------------------------------------------------------------------------