Skip to content

Commit c388227

Browse files
committed
status: Show achievement when pwned
1 parent 9d6f193 commit c388227

4 files changed

Lines changed: 43 additions & 23 deletions

File tree

cmd/status.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ func coreStatusCmd() (string, error) {
3333
fmt.Println(fmt.Sprintf("Name : %s", name))
3434
fmt.Println(fmt.Sprintf("OS : %s", os))
3535
fmt.Println(fmt.Sprintf("Stars : %v", stars))
36+
37+
if authUserInUserOwns && authUserInRootOwns {
38+
link, err := utils.GetAchievementLink(int(activeMachineData["id"].(float64)))
39+
if err != nil {
40+
config.GlobalConfig.Logger.Error("", zap.Error(err))
41+
return "", err
42+
}
43+
fmt.Println("The machine has been pwned !")
44+
fmt.Println(link)
45+
return "", nil
46+
}
3647
fmt.Println(fmt.Sprintf("User flag : %v", authUserInUserOwns))
3748
fmt.Println(fmt.Sprintf("Root flag : %v", authUserInRootOwns))
3849
return "", nil

cmd/submit.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/GoToolSharing/htb-cli/config"
88
"github.com/GoToolSharing/htb-cli/lib/submit"
9+
"github.com/GoToolSharing/htb-cli/lib/utils"
910
"github.com/GoToolSharing/htb-cli/lib/webhooks"
1011
"github.com/spf13/cobra"
1112
"go.uber.org/zap"
@@ -85,7 +86,7 @@ var submitCmd = &cobra.Command{
8586

8687
fmt.Println(output)
8788

88-
link, err := submit.GetAchievementLink(machineID)
89+
link, err := utils.GetAchievementLink(machineID)
8990
if err != nil {
9091
config.GlobalConfig.Logger.Error("", zap.Error(err))
9192
os.Exit(1)

lib/submit/submit.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -165,25 +165,3 @@ func CoreSubmitCmd(difficultyParam int, modeType string, modeValue string) (stri
165165
}
166166
return message, mID, nil
167167
}
168-
169-
func GetAchievementLink(machineID int) (string, error) {
170-
resp, err := utils.HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/info", config.BaseHackTheBoxAPIURL), nil)
171-
if err != nil {
172-
return "", err
173-
}
174-
info := utils.ParseJsonMessage(resp, "info")
175-
infoMap, _ := info.(map[string]interface{})
176-
config.GlobalConfig.Logger.Debug(fmt.Sprintf("User ID: %v", infoMap["id"]))
177-
config.GlobalConfig.Logger.Debug(fmt.Sprintf("Machine ID: %d", machineID))
178-
179-
resp, err = utils.HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/achievement/machine/%v/%d", config.BaseHackTheBoxAPIURL, infoMap["id"], machineID), nil)
180-
if err != nil {
181-
return "", err
182-
}
183-
_, ok := utils.ParseJsonMessage(resp, "message").(string)
184-
if !ok {
185-
return fmt.Sprintf("\nAchievement link: https://labs.hackthebox.com/achievement/machine/%v/%d", infoMap["id"], machineID), nil
186-
}
187-
return "", nil
188-
189-
}

lib/utils/machines.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package utils
2+
3+
import (
4+
"fmt"
5+
"net/http"
6+
7+
"github.com/GoToolSharing/htb-cli/config"
8+
)
9+
10+
func GetAchievementLink(machineID int) (string, error) {
11+
resp, err := HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/info", config.BaseHackTheBoxAPIURL), nil)
12+
if err != nil {
13+
return "", err
14+
}
15+
info := ParseJsonMessage(resp, "info")
16+
infoMap, _ := info.(map[string]interface{})
17+
config.GlobalConfig.Logger.Debug(fmt.Sprintf("User ID: %v", infoMap["id"]))
18+
config.GlobalConfig.Logger.Debug(fmt.Sprintf("Machine ID: %d", machineID))
19+
20+
resp, err = HtbRequest(http.MethodGet, fmt.Sprintf("%s/user/achievement/machine/%v/%d", config.BaseHackTheBoxAPIURL, infoMap["id"], machineID), nil)
21+
if err != nil {
22+
return "", err
23+
}
24+
_, ok := ParseJsonMessage(resp, "message").(string)
25+
if !ok {
26+
return fmt.Sprintf("\nAchievement link: https://labs.hackthebox.com/achievement/machine/%v/%d", infoMap["id"], machineID), nil
27+
}
28+
return "", nil
29+
30+
}

0 commit comments

Comments
 (0)