71 lines
2.2 KiB
C#
71 lines
2.2 KiB
C#
using Client.Sockets;
|
|
using System;
|
|
using System.IO;
|
|
using System.Net.Sockets;
|
|
using System.Security.Cryptography;
|
|
using System.Security.Principal;
|
|
using System.Text;
|
|
using System.Threading;
|
|
|
|
namespace Client.Helper
|
|
{
|
|
static class Methods
|
|
{
|
|
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.Client?.Shutdown(SocketShutdown.Both);
|
|
ClientSocket.SslClient?.Close();
|
|
ClientSocket.Client?.Close();
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
}
|