evilginx2/core/utils.go
2023-05-10 11:04:32 +02:00

78 lines
1.4 KiB
Go

package core
import (
"crypto/rand"
"crypto/sha256"
"fmt"
"io/fs"
"io/ioutil"
"os"
)
func GenRandomToken() string {
rdata := make([]byte, 64)
rand.Read(rdata)
hash := sha256.Sum256(rdata)
token := fmt.Sprintf("%x", hash)
return token
}
func GenRandomString(n int) string {
const lb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
b := make([]byte, n)
for i := range b {
t := make([]byte, 1)
rand.Read(t)
b[i] = lb[int(t[0])%len(lb)]
}
return string(b)
}
func GenRandomAlphanumString(n int) string {
const lb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
b := make([]byte, n)
for i := range b {
t := make([]byte, 1)
rand.Read(t)
b[i] = lb[int(t[0])%len(lb)]
}
return string(b)
}
func CreateDir(path string, perm os.FileMode) error {
if _, err := os.Stat(path); os.IsNotExist(err) {
err = os.Mkdir(path, perm)
if err != nil {
return err
}
}
return nil
}
func ReadFromFile(path string) ([]byte, error) {
f, err := os.OpenFile(path, os.O_RDONLY, 0644)
defer f.Close()
if err != nil {
return nil, err
}
b, err := ioutil.ReadAll(f)
if err != nil {
return nil, err
}
return b, nil
}
func SaveToFile(b []byte, fpath string, perm fs.FileMode) error {
file, err := os.OpenFile(fpath, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, perm)
if err != nil {
return err
}
defer file.Close()
_, err = file.Write(b)
if err != nil {
return err
}
return nil
}