Skip to content

Commit

Permalink
status: Show achievement when pwned
Browse files Browse the repository at this point in the history
  • Loading branch information
qu35t-code committed Feb 12, 2025
1 parent 9d6f193 commit c388227
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 23 deletions.
11 changes: 11 additions & 0 deletions cmd/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,17 @@ func coreStatusCmd() (string, error) {
fmt.Println(fmt.Sprintf("Name : %s", name))

Check failure on line 33 in cmd/status.go

View workflow job for this annotation

GitHub Actions / lint

S1038: should use fmt.Printf instead of fmt.Println(fmt.Sprintf(...)) (but don't forget the newline) (gosimple)
fmt.Println(fmt.Sprintf("OS : %s", os))

Check failure on line 34 in cmd/status.go

View workflow job for this annotation

GitHub Actions / lint

S1038: should use fmt.Printf instead of fmt.Println(fmt.Sprintf(...)) (but don't forget the newline) (gosimple)
fmt.Println(fmt.Sprintf("Stars : %v", stars))

if authUserInUserOwns && authUserInRootOwns {
link, err := utils.GetAchievementLink(int(activeMachineData["id"].(float64)))
if err != nil {
config.GlobalConfig.Logger.Error("", zap.Error(err))
return "", err
}
fmt.Println("The machine has been pwned !")
fmt.Println(link)
return "", nil
}
fmt.Println(fmt.Sprintf("User flag : %v", authUserInUserOwns))
fmt.Println(fmt.Sprintf("Root flag : %v", authUserInRootOwns))
return "", nil
Expand Down
3 changes: 2 additions & 1 deletion cmd/submit.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/GoToolSharing/htb-cli/config"
"github.com/GoToolSharing/htb-cli/lib/submit"
"github.com/GoToolSharing/htb-cli/lib/utils"
"github.com/GoToolSharing/htb-cli/lib/webhooks"
"github.com/spf13/cobra"
"go.uber.org/zap"
Expand Down Expand Up @@ -85,7 +86,7 @@ var submitCmd = &cobra.Command{

fmt.Println(output)

link, err := submit.GetAchievementLink(machineID)
link, err := utils.GetAchievementLink(machineID)
if err != nil {
config.GlobalConfig.Logger.Error("", zap.Error(err))
os.Exit(1)
Expand Down
22 changes: 0 additions & 22 deletions lib/submit/submit.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,25 +165,3 @@ func CoreSubmitCmd(difficultyParam int, modeType string, modeValue string) (stri
}
return message, mID, nil
}

func GetAchievementLink(machineID int) (string, error) {
resp, err := utils.HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/info", config.BaseHackTheBoxAPIURL), nil)
if err != nil {
return "", err
}
info := utils.ParseJsonMessage(resp, "info")
infoMap, _ := info.(map[string]interface{})
config.GlobalConfig.Logger.Debug(fmt.Sprintf("User ID: %v", infoMap["id"]))
config.GlobalConfig.Logger.Debug(fmt.Sprintf("Machine ID: %d", machineID))

resp, err = utils.HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/achievement/machine/%v/%d", config.BaseHackTheBoxAPIURL, infoMap["id"], machineID), nil)
if err != nil {
return "", err
}
_, ok := utils.ParseJsonMessage(resp, "message").(string)
if !ok {
return fmt.Sprintf("\nAchievement link: https://labs.hackthebox.com/achievement/machine/%v/%d", infoMap["id"], machineID), nil
}
return "", nil

}
30 changes: 30 additions & 0 deletions lib/utils/machines.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package utils

import (
"fmt"
"net/http"

"github.com/GoToolSharing/htb-cli/config"
)

func GetAchievementLink(machineID int) (string, error) {
resp, err := HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/info", config.BaseHackTheBoxAPIURL), nil)
if err != nil {
return "", err
}
info := ParseJsonMessage(resp, "info")
infoMap, _ := info.(map[string]interface{})
config.GlobalConfig.Logger.Debug(fmt.Sprintf("User ID: %v", infoMap["id"]))
config.GlobalConfig.Logger.Debug(fmt.Sprintf("Machine ID: %d", machineID))

resp, err = HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/achievement/machine/%v/%d", config.BaseHackTheBoxAPIURL, infoMap["id"], machineID), nil)
if err != nil {
return "", err
}
_, ok := ParseJsonMessage(resp, "message").(string)
if !ok {
return fmt.Sprintf("\nAchievement link: https://labs.hackthebox.com/achievement/machine/%v/%d", infoMap["id"], machineID), nil
}
return "", nil

}

0 comments on commit c388227

Please sign in to comment.