1 Commits
3 changed files with 184 additions and 51 deletions

No files matched your search

+126 -44
View File
@@ -9,10 +9,10 @@ namespace FrappeMocha
public enum LicenseTypes
{
License3270 = 0x8c,
License5250 = 0x80,
License3812 = 0xa0,
LicenseTelnet = 0x9b,
LicenseWindows3270 = 0x8c,
LicenseWindows5250 = 0x80,
LicenseWindows3812 = 0xa0,
LicenseWindowsTelnet = 0x9b,
LicenseJava3270 = 0x1e,
LicenseJava5250 = 0x1e,
LicenseJavaTelnet = 0x1b,
@@ -21,6 +21,9 @@ namespace FrappeMocha
LicenseMac3812 = 0x22,
LicenseMacTelnet = 0x5e,
LicenseMacKeyboard = 0xa5,
LicenseChrome3270 = 0xb3,
LicenseChrome5250 = 0xb2,
LicenseChromeTelnet = 0xb4,
}
public Keygen()
@@ -33,10 +36,10 @@ namespace FrappeMocha
{
switch (license)
{
case LicenseTypes.License3270:
case LicenseTypes.License3812:
case LicenseTypes.License5250:
case LicenseTypes.LicenseTelnet:
case LicenseTypes.LicenseWindows3270:
case LicenseTypes.LicenseWindows3812:
case LicenseTypes.LicenseWindows5250:
case LicenseTypes.LicenseWindowsTelnet:
return GenLicenseWindows(type, param_company, license);
case LicenseTypes.LicenseJavaTelnet:
@@ -52,6 +55,11 @@ namespace FrappeMocha
case LicenseTypes.LicenseMacTelnet:
case LicenseTypes.LicenseMacKeyboard:
return GenLicenseMacNum(type, param_company, license);
case LicenseTypes.LicenseChrome3270:
case LicenseTypes.LicenseChrome5250:
case LicenseTypes.LicenseChromeTelnet:
return GenLicenseJavascript(type, param_company, license);
}
return "";
}
@@ -66,22 +74,22 @@ namespace FrappeMocha
byte[] byteArray = this.StrToByteArray(param_company);
for (int index = 0; index < byteArray.Length; ++index)
{
if ((int)byteArray[index] >= 65 && (int)byteArray[index] <= 90)
byteArray[index] += (byte)32; // this is basically str.toLower()
if ((int) byteArray[index] >= 65 && (int) byteArray[index] <= 90)
byteArray[index] += (byte) 32; // this is basically str.toLower()
}
for (int index = 0; index < byteArray.Length; ++index)
{
if ((int)byteArray[index] >= 65) // 'A'
num1 += (uint)byteArray[index] + (uint)license;
if ((int) byteArray[index] >= 65) // 'A'
num1 += (uint) byteArray[index] + (uint) license;
}
uint num2 = num1 * (uint)param_lickey[0];
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue);
uint num2 = num1 * (uint) param_lickey[0];
uint num3 = (uint) ((int) num2 * ((int) num2 & (int) byte.MaxValue) & (int) ushort.MaxValue);
if (num3 < 100U)
num3 = 2728U;
param_lickey = (param_lickey[0].ToString() + (object)num3) + '-' +
(Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
param_lickey = (param_lickey[0].ToString() + (object) num3) + '-' +
(Int32) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
return param_lickey;
@@ -93,7 +101,7 @@ namespace FrappeMocha
*/
public string GenLicenseJava(int itype, string param_company, LicenseTypes license)
{
char type = (char)(itype + (int)'A');
char type = (char) (itype + (int) 'A');
string param_lickey = type.ToString() + '@';
byte[] byteArray = this.StrToByteArray(param_company);
uint num1 = 0;
@@ -101,11 +109,11 @@ namespace FrappeMocha
for (int b = 0; b < byteArray.Length; b++)
{
if (param_company.ToCharArray()[b] > ' ')
num1 += param_company.ToCharArray()[b] + (uint)license;
num1 += param_company.ToCharArray()[b] + (uint) license;
}
uint num2 = num1 * (uint)param_lickey[0];
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue);
uint num2 = num1 * (uint) param_lickey[0];
uint num3 = (uint) ((int) num2 * ((int) num2 & (int) byte.MaxValue) & (int) ushort.MaxValue);
param_lickey += (object) num3;
return param_lickey;
}
@@ -119,7 +127,7 @@ namespace FrappeMocha
public string GenLicenseMacAlpha(int itype, string param_company, LicenseTypes license)
{
// must start with an 'a' or 'b;
char type = (char)(itype + (int)'a');
char type = (char) (itype + (int) 'a');
string param_lickey = type.ToString();
byte[] byteArray = this.StrToByteArray(param_company);
short num1 = 0;
@@ -127,11 +135,11 @@ namespace FrappeMocha
for (int b = 0; b < byteArray.Length; b++)
{
if (param_company.ToCharArray()[b] >= 0x21)
num1 += (short)(param_company.ToCharArray()[b] + license);
num1 += (short) (param_company.ToCharArray()[b] + license);
}
ushort num2 = (ushort)(num1 * (short)param_lickey[0]);
param_lickey += (ushort)((num2 & byte.MaxValue) * num2);
ushort num2 = (ushort) (num1 * (short) param_lickey[0]);
param_lickey += (ushort) ((num2 & byte.MaxValue) * num2);
return param_lickey;
}
@@ -144,13 +152,13 @@ namespace FrappeMocha
*/
public string GenLicenseMacNum(int itype, string param_company, LicenseTypes license)
{
char type = (char)(itype + (int)'0');
char type = (char) (itype + (int) '0');
string param_lickey = type.ToString();
uint num1 = 0;
byte[] byteArray = this.StrToByteArray(param_company);
for (int index = 0; index < byteArray.Length; ++index)
{
if (license == LicenseTypes.LicenseMacKeyboard && (byte)(byteArray[index] + 0xbf) < 0x1a)
if (license == LicenseTypes.LicenseMacKeyboard && (byte) (byteArray[index] + 0xbf) < 0x1a)
{
byteArray[index] += 32;
}
@@ -162,16 +170,16 @@ namespace FrappeMocha
for (int index = 0; index < byteArray.Length; ++index)
{
if ((int)byteArray[index] >= 0x41) // 'A'
num1 += (uint)byteArray[index] + (uint)license;
if ((int) byteArray[index] >= 0x41) // 'A'
num1 += (uint) byteArray[index] + (uint) license;
}
uint num2 = (uint)(num1 * (int)param_lickey[0]);
num2 = (uint)(num2 * (num2 & byte.MaxValue) & ushort.MaxValue);
uint num2 = (uint) (num1 * (int) param_lickey[0]);
num2 = (uint) (num2 * (num2 & byte.MaxValue) & ushort.MaxValue);
ulong num3 = 0xaa8;
if (99 < num2)
{
num3 = (ulong)num2;
num3 = (ulong) num2;
}
param_lickey = param_lickey[0].ToString() + (object) num3;
@@ -180,15 +188,50 @@ namespace FrappeMocha
return param_lickey;
}
/**
* This one was fun as well
* Found out that the license must end with "45" in order to validate
*/
public string GenLicenseJavascript(int itype, string param_company, LicenseTypes license)
{
char type = (char) (itype + (int) '0');
string param_lickey = type.ToString();
ulong sum = 0;
byte[] byteArray = this.StrToByteArray(param_company);
for (int index = 0; index < byteArray.Length; ++index)
{
if ((ulong) byteArray[index] >= 65 && (ulong) byteArray[index] <= 90)
byteArray[index] += 32; // this is basically str.toLower()
}
for (int index = 0; index < byteArray.Length; ++index)
{
if ((ulong) byteArray[index] >= 65 && (ulong) byteArray[index] <= 122)
{
sum += byteArray[index] + (uint) license;
}
}
sum = sum * param_lickey[0];
sum = sum * (sum & byte.MaxValue) & ushort.MaxValue;
if (sum < 100U)
sum = 2728U;
param_lickey = (param_lickey[0].ToString() + (object) sum) + '-' +
(Int32) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds
+ "45"; // a little salt, as a treat
return param_lickey;
}
public bool CheckLicense(string param_lickey, string param_company, LicenseTypes license)
{
switch (license)
{
case LicenseTypes.License3270:
case LicenseTypes.License3812:
case LicenseTypes.License5250:
case LicenseTypes.LicenseTelnet:
case LicenseTypes.LicenseWindows3270:
case LicenseTypes.LicenseWindows3812:
case LicenseTypes.LicenseWindows5250:
case LicenseTypes.LicenseWindowsTelnet:
return CheckLicenseWindows(param_lickey, param_company, license);
case LicenseTypes.LicenseJavaTelnet:
@@ -202,10 +245,49 @@ namespace FrappeMocha
case LicenseTypes.LicenseMacTelnet:
case LicenseTypes.LicenseMacKeyboard:
return CheckLicenseMac(param_lickey, param_company, license);
case LicenseTypes.LicenseChrome3270:
case LicenseTypes.LicenseChrome5250:
case LicenseTypes.LicenseChromeTelnet:
return CheckLicenseJavaScript(param_lickey, param_company, license);
}
return false;
}
/**
* All Javascript licenses need to end with "45" in order to validate
*/
public bool CheckLicenseJavaScript(string param_lickey, string param_company, LicenseTypes license)
{
ulong sum = 0;
byte[] byteArray = this.StrToByteArray(param_company);
for (int index = 0; index < byteArray.Length; ++index)
{
if ((ulong) byteArray[index] >= 65 && (ulong) byteArray[index] <= 90)
byteArray[index] += 32; // this is basically str.toLower()
}
for (int index = 0; index < byteArray.Length; ++index)
{
if ((ulong) byteArray[index] >= 65 && (ulong) byteArray[index] <= 122)
{
sum += byteArray[index] + (uint) license;
}
}
sum = sum * param_lickey[0];
sum = sum * (sum & byte.MaxValue) & ushort.MaxValue;
if (sum < 100U)
sum = 2728U;
if (!param_lickey.StartsWith(param_lickey[0].ToString() + (object) sum) || !param_lickey.EndsWith("45"))
{
return false;
}
return true;
}
/**
* @todo: write some sanity checks
*/
@@ -214,6 +296,7 @@ namespace FrappeMocha
return true;
}
/**
* @todo: write some sanity checks
*/
@@ -233,20 +316,20 @@ namespace FrappeMocha
for (int index = 0; index < byteArray.Length; ++index)
{
// >= 'A' && <= 'Z'
if ((int)byteArray[index] >= 65 && (int)byteArray[index] <= 90)
byteArray[index] += (byte)32;
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;
if ((int) byteArray[index] >= 65) // 'A'
num1 += (uint) byteArray[index] + (uint) license;
}
uint num2 = num1 * (uint)param_lickey[0];
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue);
uint num2 = num1 * (uint) param_lickey[0];
uint num3 = (uint) ((int) num2 * ((int) num2 & (int) byte.MaxValue) & (int) ushort.MaxValue);
if (num3 < 100U)
num3 = 2728U;
if (param_lickey.StartsWith((param_lickey[0].ToString() ?? "") + (object)num3))
if (param_lickey.StartsWith((param_lickey[0].ToString() ?? "") + (object) num3))
{
//this.aa = param_lickey.Substring(0, 1);
return true;
@@ -269,7 +352,7 @@ namespace FrappeMocha
}
catch (Exception ex2)
{
return new byte[1] { (byte)63 };
return new byte[1] {(byte) 63};
}
}
}
@@ -292,6 +375,5 @@ namespace FrappeMocha
}
}
}
}
}
+8 -2
View File
@@ -133,7 +133,10 @@
"TN5250 for Mac OS X",
"TN3812 for Mac OS X",
"Telnet for Mac OS X",
"Keyboard for Mac OS X"});
"Keyboard for Mac OS X",
"TN3270 for Google Chrome",
"TN5250 for Google Chrome",
"Telnet for Google Chrome"});
this.productSelect.Location = new System.Drawing.Point(12, 25);
this.productSelect.Name = "productSelect";
this.productSelect.Size = new System.Drawing.Size(146, 21);
@@ -156,12 +159,15 @@
this.Controls.Add(this.label1);
this.Controls.Add(this.companytext);
this.Controls.Add(this.TypeDropDown);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.Text = "FrappeMocha";
this.Shown += new System.EventHandler(this.MainForm_Shown);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
this.ResumeLayout(false);
this.PerformLayout();
+50 -5
View File
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
@@ -11,6 +12,7 @@ namespace FrappeMocha
public partial class MainForm : Form
{
protected Keygen frappeKeygen;
private char[] ficus = new char[6];
private object[] windowsLicenseTypeItems = new object[2];
private object[] macLicenseTypeItems = new object[1];
private object[] javaLicenseTypeItems = new object[5];
@@ -61,19 +63,19 @@ namespace FrappeMocha
switch (productSelect.SelectedIndex)
{
case 0:
this.keygen(Keygen.LicenseTypes.License3270);
this.keygen(Keygen.LicenseTypes.LicenseWindows3270);
break;
case 1:
this.keygen(Keygen.LicenseTypes.License5250);
this.keygen(Keygen.LicenseTypes.LicenseWindows5250);
break;
case 2:
this.keygen(Keygen.LicenseTypes.License3812);
this.keygen(Keygen.LicenseTypes.LicenseWindows3812);
break;
case 3:
this.keygen(Keygen.LicenseTypes.LicenseTelnet);
this.keygen(Keygen.LicenseTypes.LicenseWindowsTelnet);
break;
case 4:
@@ -107,6 +109,18 @@ namespace FrappeMocha
case 11:
this.keygen(Keygen.LicenseTypes.LicenseMacKeyboard);
break;
case 12:
this.keygen(Keygen.LicenseTypes.LicenseChrome3270);
break;
case 13:
this.keygen(Keygen.LicenseTypes.LicenseChrome5250);
break;
case 14:
this.keygen(Keygen.LicenseTypes.LicenseChromeTelnet);
break;
}
}
@@ -127,6 +141,8 @@ namespace FrappeMocha
{
companyusernamelabel.Text = "Name";
}
AcceptButton.PerformClick();
}
private void keygen(Keygen.LicenseTypes license)
@@ -174,6 +190,7 @@ namespace FrappeMocha
case 3:
case 7: // mac type 1
case 8: // mac type 1
case 12:
if (windowsLicenseTypeItems[0] != null)
{
TypeDropDown.Items.Clear();
@@ -195,11 +212,39 @@ namespace FrappeMocha
break;
}
TypeDropDown.SelectedIndex = 0;
AcceptButton.PerformClick();
}
private void licensebox_Click(object sender, EventArgs e)
{
licensebox.SelectAll();
}
private void MainForm_Shown(object sender, EventArgs e)
{
AcceptButton.PerformClick();
}
private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
{
Array.Copy(this.ficus, 1, this.ficus, 0, this.ficus.Length -1);
this.ficus[ficus.Length -1] = e.KeyChar;
if (new string (ficus) == "spicey")
{
switch (MessageBox.Show("Would you like a little salt, as a treat?", "Orly?", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question))
{
case DialogResult.Yes:
Process.Start("https://i.imgur.com/EJ31bmk.jpg");
break;
case DialogResult.No:
Process.Start(
"https://pics.me.me/white-people-cant-handle-spicy-food-um-try-again-sweetie-6626438.png");
break;
case DialogResult.Cancel:
break;
}
}
}
}
}
}