81 lines
3.0 KiB
C#
81 lines
3.0 KiB
C#
using System;
|
|
|
|
namespace FrappeMocha.Keygen.Platforms
|
|
{
|
|
public class PlatformWindows : KeygenBase
|
|
{
|
|
public PlatformWindows()
|
|
{
|
|
Platform = "Windows";
|
|
Products.Add(new KeygenProduct(LicenseTypes.Windows3270, "TN3270", Platform));
|
|
Products.Add(new KeygenProduct(LicenseTypes.Windows5250, "TN5250", Platform));
|
|
Products.Add(new KeygenProduct(LicenseTypes.Windows3812, "TN3812", Platform));
|
|
Products.Add(new KeygenProduct(LicenseTypes.WindowsTelnet, "Telnet", Platform));
|
|
}
|
|
|
|
public override string Generate(int type, string paramCompany, LicenseTypes license)
|
|
{
|
|
string licenseKey = type.ToString();
|
|
uint sum = 0;
|
|
byte[] byteArray = StrToByteArray(paramCompany);
|
|
for (int index = 0; index < byteArray.Length; ++index)
|
|
{
|
|
if (byteArray[index] >= 'A' && byteArray[index] <= 'Z')
|
|
byteArray[index] += 32; // ASCII 'Space'
|
|
}
|
|
|
|
for (int index = 0; index < byteArray.Length; ++index)
|
|
{
|
|
if (byteArray[index] >= 'A')
|
|
sum += byteArray[index] + (uint)license;
|
|
}
|
|
sum = sum * licenseKey[0];
|
|
sum = (uint)((int)sum * ((int)sum & byte.MaxValue) & ushort.MaxValue);
|
|
if (sum < 100U)
|
|
sum = 2728U;
|
|
|
|
licenseKey = (licenseKey[0].ToString() + sum) + '-' +
|
|
(Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
|
|
|
|
|
|
return licenseKey;
|
|
}
|
|
|
|
/**
|
|
* Straight outta da Assembley
|
|
*/
|
|
public override bool Check(string paramLicenseKey, string paramCompany, LicenseTypes license)
|
|
{
|
|
uint num1 = 0;
|
|
if (paramCompany == null || paramCompany.Length < 2)
|
|
return false;
|
|
byte[] byteArray = this.StrToByteArray(paramCompany);
|
|
if (paramLicenseKey == null || paramLicenseKey.Length < 6)
|
|
return false;
|
|
|
|
for (int index = 0; index < byteArray.Length; ++index)
|
|
{
|
|
// >= 'A' && <= 'Z'
|
|
if ((int)byteArray[index] >= 65 && (int)byteArray[index] <= 90)
|
|
byteArray[index] += (byte)32;
|
|
}
|
|
for (int index = 0; index < byteArray.Length; ++index)
|
|
{
|
|
if ((int)byteArray[index] >= 65) // 'A'
|
|
num1 += (uint)byteArray[index] + (uint)license;
|
|
}
|
|
uint num2 = num1 * (uint)paramLicenseKey[0];
|
|
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue);
|
|
if (num3 < 100U)
|
|
num3 = 2728U;
|
|
|
|
if (paramLicenseKey.StartsWith((paramLicenseKey[0].ToString() ?? "") + (object)num3))
|
|
{
|
|
//this.aa = param_lickey.Substring(0, 1);
|
|
return true;
|
|
}
|
|
//this.aa = "";
|
|
return false;
|
|
}
|
|
}
|
|
} |