|
|
|
|
@ -4,6 +4,7 @@ import ( |
|
|
|
|
"crypto/sha256" |
|
|
|
|
"crypto/rand" |
|
|
|
|
"golang.org/x/crypto/chacha20poly1305" |
|
|
|
|
"github.com/atotto/clipboard" |
|
|
|
|
"encoding/base64" |
|
|
|
|
"encoding/gob" |
|
|
|
|
"encoding/hex" |
|
|
|
|
@ -113,6 +114,21 @@ func chDec(eText string)(string) { |
|
|
|
|
return string(decrypted) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func copyText(text string) { |
|
|
|
|
err := clipboard.WriteAll(text) |
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Println("Failed to copy to clipboard:", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
fmt.Println("Text copied to clipboard!") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func pause() { |
|
|
|
|
var input string |
|
|
|
|
fmt.Print("Press Enter to continue...") |
|
|
|
|
fmt.Scanln(&input) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func main() { |
|
|
|
|
configFilePtr := flag.String("config", "config.yaml", "Path to the YAML configuration file") |
|
|
|
|
flag.Parse() |
|
|
|
|
@ -120,6 +136,7 @@ func main() { |
|
|
|
|
if *configFilePtr == "" { |
|
|
|
|
fmt.Println("Please specify a configuration file using -config") |
|
|
|
|
flag.Usage() |
|
|
|
|
pause() |
|
|
|
|
os.Exit(1) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -127,6 +144,7 @@ func main() { |
|
|
|
|
yamlFile, err := ioutil.ReadFile(*configFilePtr) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Fatalf("Error reading YAML file: %v\n", err) |
|
|
|
|
pause() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Parse the YAML
|
|
|
|
|
@ -134,11 +152,13 @@ func main() { |
|
|
|
|
err = yaml.Unmarshal(yamlFile, &config) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Fatalf("Error parsing YAML file: %v\n", err) |
|
|
|
|
pause() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Print the ChaKey
|
|
|
|
|
if config.Auth.ChaKey == "" { |
|
|
|
|
fmt.Println("Warning: ChaKey not found in configuration file") |
|
|
|
|
pause() |
|
|
|
|
} |
|
|
|
|
ChaKey = []byte(config.Auth.ChaKey) |
|
|
|
|
|
|
|
|
|
@ -212,18 +232,23 @@ func main() { |
|
|
|
|
|
|
|
|
|
if err := enc.Encode(req); err != nil { |
|
|
|
|
fmt.Println("Failed to send request:", err) |
|
|
|
|
pause() |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var res Response |
|
|
|
|
if err := dec.Decode(&res); err != nil { |
|
|
|
|
fmt.Println("Failed to receive response:", err) |
|
|
|
|
pause() |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if res.Message != "" { |
|
|
|
|
fmt.Println("Server response:", res.Message) |
|
|
|
|
} else { |
|
|
|
|
fmt.Println("Server response:", chDec(res.Enc)) |
|
|
|
|
passwd := chDec(res.Enc) |
|
|
|
|
fmt.Println("Server response:", passwd) |
|
|
|
|
copyText(passwd) |
|
|
|
|
} |
|
|
|
|
pause() |
|
|
|
|
} |
|
|
|
|
|