Add golang version
This commit is contained in:
parent
ad9ef78e11
commit
4a8159a3a5
1 changed files with 49 additions and 0 deletions
49
go-version/main.go
Executable file
49
go-version/main.go
Executable file
|
|
@ -0,0 +1,49 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"crypto/hmac"
|
||||
"crypto/sha1"
|
||||
"strings"
|
||||
"regexp"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func hex2bin(s string) (string) {
|
||||
decoded, err := hex.DecodeString(s)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%s", decoded)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) == 2 {
|
||||
mac := strings.Replace(os.Args[1], ":", "", -1)
|
||||
if m, _ := regexp.MatchString(`^(\w+)$`, mac); !m {
|
||||
fmt.Println("Invalid Mac Address!")
|
||||
} else {
|
||||
h := hmac.New(sha1.New, []byte(hex2bin("8544E3B47ECA58F9583043F8")))
|
||||
h.Write([]byte(hex2bin(mac)))
|
||||
key := hex.EncodeToString(h.Sum(nil))[0:24]
|
||||
result := ""
|
||||
s := 0
|
||||
keylen := len([]rune(key))
|
||||
for i := 0; i < keylen; i++ {
|
||||
s++
|
||||
result += string(key[i])
|
||||
if s == 4 && i != keylen - 1 {
|
||||
result += "-"
|
||||
s = 0
|
||||
}
|
||||
}
|
||||
fmt.Println(result)
|
||||
}
|
||||
} else {
|
||||
fmt.Println("Supermicro IPMI License Generator")
|
||||
fmt.Println("https://github.com/kasuganosoras/SuperMicro-IPMI-LicenseGenerator")
|
||||
fmt.Println("Argument is missing, please append your BMC-MAC after this command.")
|
||||
fmt.Println("Example: " + os.Args[0] + " 0c:c4:7a:3e:2f:de")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue