Files
BunifuUiCrack/Bunifu.Licensing/Helpers/Registry.cs
T
hexadecimal e3c1cdea0e Add source
2025-04-24 20:51:29 +03:00

582 lines
19 KiB
C#

#if NET5_0_OR_NETFRAMEWORK
using System.Runtime.CompilerServices;
#endif
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text;
using Bunifu.Licensing.Models;
using Bunifu.Licensing.Options;
using Bunifu.Licensing.Properties;
using Bunifu.Licensing.Views;
using Microsoft.Win32;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Bunifu.Licensing.Helpers
{
// Token: 0x02000038 RID: 56
[DebuggerStepThrough]
internal sealed class Registry
{
// Token: 0x04000188 RID: 392
private static int _UIUpgradeCalls = 0;
// Token: 0x04000189 RID: 393
private static int _DBUpgradeCalls = 0;
// Token: 0x0400018A RID: 394
private static int _DAUpgradeCalls = 0;
// Token: 0x0400018B RID: 395
private static string RegistryPath = "Software\\";
// Token: 0x0400018C RID: 396
public static string FolderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Bunifu Technologies\\";
// Token: 0x0200004B RID: 75
public static class Base
{
// Token: 0x06000289 RID: 649 RVA: 0x00018184 File Offset: 0x00016384
public static void SaveValue(string company, string product, string key, object value)
{
try
{
string text = Registry.RegistryPath;
bool flag = !string.IsNullOrEmpty(company);
if (flag)
{
text = text + company + "\\";
}
text += product;
RegistryKey registryKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(text);
registryKey.SetValue(key, value.ToString());
}
catch (Exception)
{
}
}
// Token: 0x0600028A RID: 650 RVA: 0x000181F0 File Offset: 0x000163F0
public static string GetValue(string company, string product, string key)
{
string text2;
try
{
string text = Registry.RegistryPath;
bool flag = !string.IsNullOrEmpty(company);
if (flag)
{
text = text + company + "\\";
}
text += product;
RegistryKey registryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(text);
bool flag2 = registryKey != null;
if (flag2)
{
text2 = registryKey.GetValue(key).ToString();
}
else
{
text2 = "";
}
}
catch (Exception)
{
text2 = "";
}
return text2;
}
// Token: 0x0600028B RID: 651 RVA: 0x00018274 File Offset: 0x00016474
public static bool DeleteValue(string company, string product, string key)
{
bool flag3;
try
{
string text = Registry.RegistryPath;
bool flag = !string.IsNullOrEmpty(company);
if (flag)
{
text = text + company + "\\";
}
text += product;
using (RegistryKey registryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(text, true))
{
bool flag2 = registryKey != null;
if (flag2)
{
registryKey.DeleteValue(key);
}
}
flag3 = true;
}
catch (Exception)
{
flag3 = false;
}
return flag3;
}
}
// Token: 0x0200004C RID: 76
public static class Options
{
// Token: 0x0600028C RID: 652 RVA: 0x00018308 File Offset: 0x00016508
public static bool SaveLastNotificationTime(ProductTypes product, DateTime notificationTime)
{
bool flag;
try
{
Registry.Base.SaveValue(Resources.CPA, product.ToString(), "LNT", Registry.Options.Base64Encode(notificationTime.ToString()));
flag = true;
}
catch (Exception)
{
flag = false;
}
return flag;
}
// Token: 0x0600028D RID: 653 RVA: 0x0001835C File Offset: 0x0001655C
public static DateTime GetLastNotificationTime(ProductTypes product)
{
DateTime dateTime;
try
{
string text = Registry.Base.GetValue(Resources.CPA, product.ToString(), "LNT");
text = Registry.Options.Base64Decode(text);
dateTime = Convert.ToDateTime(text);
}
catch (Exception)
{
dateTime = DateTime.Now.AddDays(-1.0);
}
return dateTime;
}
// Token: 0x0600028E RID: 654 RVA: 0x000183C4 File Offset: 0x000165C4
private static string Base64Encode(string plainText)
{
byte[] bytes = Encoding.UTF8.GetBytes(plainText);
return Convert.ToBase64String(bytes);
}
// Token: 0x0600028F RID: 655 RVA: 0x000183E8 File Offset: 0x000165E8
private static string Base64Decode(string base64EncodedData)
{
byte[] array = Convert.FromBase64String(base64EncodedData);
return Encoding.UTF8.GetString(array);
}
}
// Token: 0x0200004D RID: 77
public static class Licensing
{
// Token: 0x06000290 RID: 656 RVA: 0x0001840C File Offset: 0x0001660C
public static Record GetLicense(ProductTypes product)
{
Record record2;
try
{
Logger.Add("Validating any installed licenses...");
string text = Registry.Base.GetValue(Resources.CPA, product.ToString(), "CLI");
text = Cryptography.Decrypt(text);
Logger.Add("Valid product license found.");
Logger.Add("License validated successfully.");
bool flag = false;
bool flag2 = false;
Record record = new Record();
string text2 = string.Empty;
bool flag3 = flag;
if (flag3)
{
Logger.Add("Checking license version...");
try
{
JObject jobject = JObject.Parse(text);
bool flag4 = jobject["HardwareID"] != null;
if (flag4)
{
text2 = jobject["HardwareID"].ToString();
}
bool flag5 = text2 != null || !string.IsNullOrEmpty(text2);
if (flag5)
{
Logger.Add("License verified as v1. Requesting for upgrade...");
bool flag6 = product == ProductTypes.UIWinForms && Registry._UIUpgradeCalls == 0;
if (flag6)
{
flag2 = true;
}
else
{
bool flag7 = product == ProductTypes.DatavizBasicWinForms && Registry._DBUpgradeCalls == 0;
if (flag7)
{
flag2 = true;
}
else
{
bool flag8 = product == ProductTypes.DatavizAdvancedWinForms && Registry._DAUpgradeCalls == 0;
if (flag8)
{
flag2 = true;
}
}
}
bool flag9 = flag2;
if (flag9)
{
bool flag10 = LicenseValidator.GetHardwareID() == text2;
if (flag10)
{
v1License v1License = JsonConvert.DeserializeObject<v1License>(text);
v1License._licenseKey = JObject.Parse(text).SelectToken("LicenseKey").ToString();
bool flag11 = InformationBoxHelper.Show("We recently updated our client licensing and are about to upgrade your old license to the newly updated license format in this device.", "New Licensing Upgrade", "", InformationBox.InformationBoxIcons.Information, "Upgrade", "");
Logger.Add("Upgrade started...");
bool flag12 = product == ProductTypes.UIWinForms;
if (flag12)
{
Registry._UIUpgradeCalls++;
}
else
{
bool flag13 = product == ProductTypes.DatavizBasicWinForms;
if (flag13)
{
Registry._DBUpgradeCalls++;
}
else
{
bool flag14 = product == ProductTypes.DatavizAdvancedWinForms;
if (flag14)
{
Registry._DAUpgradeCalls++;
}
}
}
bool flag15 = flag11;
if (flag15)
{
Logger.Add("License v2 activation upgrade starting...");
ActivationResults activationResults = LicenseValidator.Activate(v1License.Email, v1License._licenseKey);
bool flag16 = activationResults == ActivationResults.Success;
if (flag16)
{
Logger.Add("License successfully upgraded to v2.");
record = LicenseValidator.RetrievedLicense;
try
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(24, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(product);
defaultInterpolatedStringHandler.AppendLiteral("\\License Information.txt");
string text3 = defaultInterpolatedStringHandler.ToStringAndClear();
defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(12, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(record.License.Product);
defaultInterpolatedStringHandler.AppendLiteral("\\License.lic");
string text4 = defaultInterpolatedStringHandler.ToStringAndClear();
Registry.Licensing.CreateDirectoryIfNoneExists(product.ToString());
Registry.Licensing.UpdateLicenseFile(text3, text4, record);
InformationBoxHelper.Show("Your license has been successfully upgraded.Happy coding!", "License Upgrade Successful", "", InformationBox.InformationBoxIcons.Information, "Okay", "");
}
catch (Exception)
{
}
}
else
{
Logger.Add("License upgraded failed.");
record = new Record
{
IsValid = false
};
bool flag17 = InformationBoxHelper.Show(LicenseValidator.ResponseError, "Upgrade Failed", "", InformationBox.InformationBoxIcons.Warning, "Okay", "");
}
}
}
}
}
else
{
Logger.Add("License verified as v2.");
Logger.Add("License validation passed.");
}
}
catch (Exception ex)
{
Logger.Add("Exception L1: " + ex.Message);
}
}
try
{
record = JsonConvert.DeserializeObject<Record>(text);
record._licenseKey = JObject.Parse(text).SelectToken("LicenseKey").ToString();
try
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(24, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(product);
defaultInterpolatedStringHandler.AppendLiteral("\\License Information.txt");
string text5 = defaultInterpolatedStringHandler.ToStringAndClear();
defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(12, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(record.License.Product);
defaultInterpolatedStringHandler.AppendLiteral("\\License.lic");
string text6 = defaultInterpolatedStringHandler.ToStringAndClear();
Registry.Licensing.CreateDirectoryIfNoneExists(product.ToString());
Registry.Licensing.UpdateLicenseFile(text5, text6, record);
}
catch (Exception ex2)
{
Logger.Add("Exception L2: " + ex2.Message);
}
}
catch (Exception ex3)
{
Logger.Add("Exception L3: " + ex3.Message);
Registry.Licensing.DeleteLicense(product, false);
record = new Record
{
IsValid = false
};
}
record2 = record;
}
catch (Exception ex4)
{
Logger.Add("Exception L4: " + ex4.Message);
Registry.Licensing.DeleteLicense(product, false);
record2 = Registry.Licensing.GetBackupLicense(product);
}
return record2;
}
// Token: 0x06000291 RID: 657 RVA: 0x0001892C File Offset: 0x00016B2C
public static void SaveLicense(Record license)
{
try
{
bool isValid = license.IsValid;
if (isValid)
{
Registry.Base.SaveValue(Resources.CPA, license.License.Product.ToString(), "CLI", Cryptography.Encrypt(JsonConvert.SerializeObject(license)));
try
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(24, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(license.License.Product);
defaultInterpolatedStringHandler.AppendLiteral("\\License Information.txt");
string text = defaultInterpolatedStringHandler.ToStringAndClear();
defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(12, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(license.License.Product);
defaultInterpolatedStringHandler.AppendLiteral("\\License.lic");
string text2 = defaultInterpolatedStringHandler.ToStringAndClear();
Registry.Licensing.CreateDirectoryIfNoneExists(license.License.Product.ToString());
Registry.Licensing.UpdateLicenseFile(text, text2, license);
}
catch (Exception)
{
}
}
}
catch (Exception)
{
}
}
// Token: 0x06000292 RID: 658 RVA: 0x00018A54 File Offset: 0x00016C54
public static bool DeleteLicense(ProductTypes product, bool deleteLicenseInfoFile)
{
if (deleteLicenseInfoFile)
{
Registry.Licensing.DeleteDirectoryIfExists(product.ToString());
}
return Registry.Base.DeleteValue(Resources.CPA, product.ToString(), "CLI");
}
// Token: 0x06000293 RID: 659 RVA: 0x00018A9C File Offset: 0x00016C9C
public static void CreateDirectoryIfNoneExists(string product)
{
try
{
string text = Registry.FolderPath + product + "\\";
bool flag = !Directory.Exists(text);
if (flag)
{
Directory.CreateDirectory(text);
}
}
catch (Exception)
{
}
}
// Token: 0x06000294 RID: 660 RVA: 0x00018AE8 File Offset: 0x00016CE8
private static void DeleteDirectoryIfExists(string product)
{
try
{
string text = Registry.FolderPath + product + "\\";
bool flag = Directory.Exists(text);
if (flag)
{
Directory.Delete(text, true);
}
}
catch (Exception)
{
}
}
// Token: 0x06000295 RID: 661 RVA: 0x00018B34 File Offset: 0x00016D34
private static void UpdateLicenseFile(string licenseFile, string backupLicense, Record license)
{
try
{
string text = license.License.TotalDays.ToString();
string text2 = license.License.RemainingDays.ToString();
string text3 = license.License.ExpiryDate.ToString("dddd, MMMM dd, yyyy");
bool flag = license.License.Type == LicenseTypes.Enterprise;
if (flag)
{
text = "Unlimited";
text2 = "Unlimited";
text3 = "Perpetual";
}
File.WriteAllText(backupLicense, Cryptography.Encrypt(JsonConvert.SerializeObject(license)));
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(84, 7);
defaultInterpolatedStringHandler.AppendLiteral("Product: ");
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(license.License.Product);
defaultInterpolatedStringHandler.AppendLiteral("\n");
defaultInterpolatedStringHandler.AppendLiteral("Email: ");
defaultInterpolatedStringHandler.AppendFormatted(license.Client.Email);
defaultInterpolatedStringHandler.AppendLiteral("\n");
defaultInterpolatedStringHandler.AppendLiteral("Status: ");
defaultInterpolatedStringHandler.AppendFormatted<StatusOptions>(license.License.Status);
defaultInterpolatedStringHandler.AppendLiteral("\n");
defaultInterpolatedStringHandler.AppendLiteral("Activations: ");
defaultInterpolatedStringHandler.AppendFormatted<int>(license.License.MaxDevices);
defaultInterpolatedStringHandler.AppendLiteral("\n");
defaultInterpolatedStringHandler.AppendLiteral("Total Days: ");
defaultInterpolatedStringHandler.AppendFormatted(text);
defaultInterpolatedStringHandler.AppendLiteral("\n");
defaultInterpolatedStringHandler.AppendLiteral("Remaining Days: ");
defaultInterpolatedStringHandler.AppendFormatted(text2);
defaultInterpolatedStringHandler.AppendLiteral("\n");
defaultInterpolatedStringHandler.AppendLiteral("Expiry Date: ");
defaultInterpolatedStringHandler.AppendFormatted(text3);
File.WriteAllText(licenseFile, defaultInterpolatedStringHandler.ToStringAndClear());
}
catch (Exception)
{
}
}
// Token: 0x06000296 RID: 662 RVA: 0x00018D0C File Offset: 0x00016F0C
private static Record GetBackupLicense(ProductTypes product)
{
Record record2;
try
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(12, 2);
defaultInterpolatedStringHandler.AppendFormatted(Registry.FolderPath);
defaultInterpolatedStringHandler.AppendFormatted<ProductTypes>(product);
defaultInterpolatedStringHandler.AppendLiteral("\\License.lic");
string text = defaultInterpolatedStringHandler.ToStringAndClear();
bool flag = File.Exists(text);
if (flag)
{
string text2 = Cryptography.Decrypt(File.ReadAllText(text));
Record record = JsonConvert.DeserializeObject<Record>(text2);
record._licenseKey = JObject.Parse(text2).SelectToken("LicenseKey").ToString();
Registry.Base.SaveValue(Resources.CPA, record.License.Product.ToString(), "CLI", Cryptography.Encrypt(JsonConvert.SerializeObject(record)));
record2 = record;
}
else
{
record2 = new Record
{
IsValid = false
};
}
}
catch (Exception)
{
record2 = new Record
{
IsValid = false
};
}
return record2;
}
// Token: 0x06000297 RID: 663 RVA: 0x00018E00 File Offset: 0x00017000
public static bool sMDed()
{
bool flag2;
try
{
string text = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\" + Resources.XLD + "\\";
string text2 = text + Resources.XLF;
bool flag = !Directory.Exists(text);
if (flag)
{
Directory.CreateDirectory(text);
}
File.WriteAllText(text2, Cryptography.Encrypt(Resources.XLV));
flag2 = true;
}
catch (Exception)
{
flag2 = false;
}
return flag2;
}
// Token: 0x06000298 RID: 664 RVA: 0x00018E78 File Offset: 0x00017078
public static bool xMDed()
{
bool flag4;
try
{
string text = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\" + Resources.XLD + "\\";
string text2 = text + Resources.XLF;
bool flag = !Directory.Exists(text);
if (flag)
{
Directory.CreateDirectory(text);
}
bool flag2 = File.Exists(text2);
if (flag2)
{
string text3 = Cryptography.Decrypt(File.ReadAllText(text2));
bool flag3 = text3 == Resources.XLV;
if (flag3)
{
flag4 = true;
}
else
{
flag4 = false;
}
}
else
{
flag4 = false;
}
}
catch (Exception)
{
flag4 = false;
}
return flag4;
}
}
}
}