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 public enum LicenseTypes
{ {
License3270 = 0x8c, LicenseWindows3270 = 0x8c,
License5250 = 0x80, LicenseWindows5250 = 0x80,
License3812 = 0xa0, LicenseWindows3812 = 0xa0,
LicenseTelnet = 0x9b, LicenseWindowsTelnet = 0x9b,
LicenseJava3270 = 0x1e, LicenseJava3270 = 0x1e,
LicenseJava5250 = 0x1e, LicenseJava5250 = 0x1e,
LicenseJavaTelnet = 0x1b, LicenseJavaTelnet = 0x1b,
@@ -21,6 +21,9 @@ namespace FrappeMocha
LicenseMac3812 = 0x22, LicenseMac3812 = 0x22,
LicenseMacTelnet = 0x5e, LicenseMacTelnet = 0x5e,
LicenseMacKeyboard = 0xa5, LicenseMacKeyboard = 0xa5,
LicenseChrome3270 = 0xb3,
LicenseChrome5250 = 0xb2,
LicenseChromeTelnet = 0xb4,
} }
public Keygen() public Keygen()
@@ -33,10 +36,10 @@ namespace FrappeMocha
{ {
switch (license) switch (license)
{ {
case LicenseTypes.License3270: case LicenseTypes.LicenseWindows3270:
case LicenseTypes.License3812: case LicenseTypes.LicenseWindows3812:
case LicenseTypes.License5250: case LicenseTypes.LicenseWindows5250:
case LicenseTypes.LicenseTelnet: case LicenseTypes.LicenseWindowsTelnet:
return GenLicenseWindows(type, param_company, license); return GenLicenseWindows(type, param_company, license);
case LicenseTypes.LicenseJavaTelnet: case LicenseTypes.LicenseJavaTelnet:
@@ -52,6 +55,11 @@ namespace FrappeMocha
case LicenseTypes.LicenseMacTelnet: case LicenseTypes.LicenseMacTelnet:
case LicenseTypes.LicenseMacKeyboard: case LicenseTypes.LicenseMacKeyboard:
return GenLicenseMacNum(type, param_company, license); return GenLicenseMacNum(type, param_company, license);
case LicenseTypes.LicenseChrome3270:
case LicenseTypes.LicenseChrome5250:
case LicenseTypes.LicenseChromeTelnet:
return GenLicenseJavascript(type, param_company, license);
} }
return ""; return "";
} }
@@ -66,22 +74,22 @@ namespace FrappeMocha
byte[] byteArray = this.StrToByteArray(param_company); byte[] byteArray = this.StrToByteArray(param_company);
for (int index = 0; index < byteArray.Length; ++index) for (int index = 0; index < byteArray.Length; ++index)
{ {
if ((int)byteArray[index] >= 65 && (int)byteArray[index] <= 90) if ((int) byteArray[index] >= 65 && (int) byteArray[index] <= 90)
byteArray[index] += (byte)32; // this is basically str.toLower() byteArray[index] += (byte) 32; // this is basically str.toLower()
} }
for (int index = 0; index < byteArray.Length; ++index) for (int index = 0; index < byteArray.Length; ++index)
{ {
if ((int)byteArray[index] >= 65) // 'A' if ((int) byteArray[index] >= 65) // 'A'
num1 += (uint)byteArray[index] + (uint)license; num1 += (uint) byteArray[index] + (uint) license;
} }
uint num2 = num1 * (uint)param_lickey[0]; uint num2 = num1 * (uint) param_lickey[0];
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue); uint num3 = (uint) ((int) num2 * ((int) num2 & (int) byte.MaxValue) & (int) ushort.MaxValue);
if (num3 < 100U) if (num3 < 100U)
num3 = 2728U; num3 = 2728U;
param_lickey = (param_lickey[0].ToString() + (object)num3) + '-' + param_lickey = (param_lickey[0].ToString() + (object) num3) + '-' +
(Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; (Int32) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
return param_lickey; return param_lickey;
@@ -93,7 +101,7 @@ namespace FrappeMocha
*/ */
public string GenLicenseJava(int itype, string param_company, LicenseTypes license) 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() + '@'; string param_lickey = type.ToString() + '@';
byte[] byteArray = this.StrToByteArray(param_company); byte[] byteArray = this.StrToByteArray(param_company);
uint num1 = 0; uint num1 = 0;
@@ -101,11 +109,11 @@ namespace FrappeMocha
for (int b = 0; b < byteArray.Length; b++) for (int b = 0; b < byteArray.Length; b++)
{ {
if (param_company.ToCharArray()[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 num2 = num1 * (uint) param_lickey[0];
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue); uint num3 = (uint) ((int) num2 * ((int) num2 & (int) byte.MaxValue) & (int) ushort.MaxValue);
param_lickey += (object) num3; param_lickey += (object) num3;
return param_lickey; return param_lickey;
} }
@@ -119,7 +127,7 @@ namespace FrappeMocha
public string GenLicenseMacAlpha(int itype, string param_company, LicenseTypes license) public string GenLicenseMacAlpha(int itype, string param_company, LicenseTypes license)
{ {
// must start with an 'a' or 'b; // must start with an 'a' or 'b;
char type = (char)(itype + (int)'a'); char type = (char) (itype + (int) 'a');
string param_lickey = type.ToString(); string param_lickey = type.ToString();
byte[] byteArray = this.StrToByteArray(param_company); byte[] byteArray = this.StrToByteArray(param_company);
short num1 = 0; short num1 = 0;
@@ -127,11 +135,11 @@ namespace FrappeMocha
for (int b = 0; b < byteArray.Length; b++) for (int b = 0; b < byteArray.Length; b++)
{ {
if (param_company.ToCharArray()[b] >= 0x21) 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]); ushort num2 = (ushort) (num1 * (short) param_lickey[0]);
param_lickey += (ushort)((num2 & byte.MaxValue) * num2); param_lickey += (ushort) ((num2 & byte.MaxValue) * num2);
return param_lickey; return param_lickey;
} }
@@ -144,13 +152,13 @@ namespace FrappeMocha
*/ */
public string GenLicenseMacNum(int itype, string param_company, LicenseTypes license) 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(); string param_lickey = type.ToString();
uint num1 = 0; uint num1 = 0;
byte[] byteArray = this.StrToByteArray(param_company); byte[] byteArray = this.StrToByteArray(param_company);
for (int index = 0; index < byteArray.Length; ++index) 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; byteArray[index] += 32;
} }
@@ -162,16 +170,16 @@ namespace FrappeMocha
for (int index = 0; index < byteArray.Length; ++index) for (int index = 0; index < byteArray.Length; ++index)
{ {
if ((int)byteArray[index] >= 0x41) // 'A' if ((int) byteArray[index] >= 0x41) // 'A'
num1 += (uint)byteArray[index] + (uint)license; num1 += (uint) byteArray[index] + (uint) license;
} }
uint num2 = (uint)(num1 * (int)param_lickey[0]); uint num2 = (uint) (num1 * (int) param_lickey[0]);
num2 = (uint)(num2 * (num2 & byte.MaxValue) & ushort.MaxValue); num2 = (uint) (num2 * (num2 & byte.MaxValue) & ushort.MaxValue);
ulong num3 = 0xaa8; ulong num3 = 0xaa8;
if (99 < num2) if (99 < num2)
{ {
num3 = (ulong)num2; num3 = (ulong) num2;
} }
param_lickey = param_lickey[0].ToString() + (object) num3; param_lickey = param_lickey[0].ToString() + (object) num3;
@@ -180,15 +188,50 @@ namespace FrappeMocha
return param_lickey; 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) public bool CheckLicense(string param_lickey, string param_company, LicenseTypes license)
{ {
switch (license) switch (license)
{ {
case LicenseTypes.License3270: case LicenseTypes.LicenseWindows3270:
case LicenseTypes.License3812: case LicenseTypes.LicenseWindows3812:
case LicenseTypes.License5250: case LicenseTypes.LicenseWindows5250:
case LicenseTypes.LicenseTelnet: case LicenseTypes.LicenseWindowsTelnet:
return CheckLicenseWindows(param_lickey, param_company, license); return CheckLicenseWindows(param_lickey, param_company, license);
case LicenseTypes.LicenseJavaTelnet: case LicenseTypes.LicenseJavaTelnet:
@@ -202,10 +245,49 @@ namespace FrappeMocha
case LicenseTypes.LicenseMacTelnet: case LicenseTypes.LicenseMacTelnet:
case LicenseTypes.LicenseMacKeyboard: case LicenseTypes.LicenseMacKeyboard:
return CheckLicenseMac(param_lickey, param_company, license); 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; 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 * @todo: write some sanity checks
*/ */
@@ -214,6 +296,7 @@ namespace FrappeMocha
return true; return true;
} }
/** /**
* @todo: write some sanity checks * @todo: write some sanity checks
*/ */
@@ -233,20 +316,20 @@ namespace FrappeMocha
for (int index = 0; index < byteArray.Length; ++index) for (int index = 0; index < byteArray.Length; ++index)
{ {
// >= 'A' && <= 'Z' // >= 'A' && <= 'Z'
if ((int)byteArray[index] >= 65 && (int)byteArray[index] <= 90) if ((int) byteArray[index] >= 65 && (int) byteArray[index] <= 90)
byteArray[index] += (byte)32; byteArray[index] += (byte) 32;
} }
for (int index = 0; index < byteArray.Length; ++index) for (int index = 0; index < byteArray.Length; ++index)
{ {
if ((int)byteArray[index] >= 65) // 'A' if ((int) byteArray[index] >= 65) // 'A'
num1 += (uint)byteArray[index] + (uint)license; num1 += (uint) byteArray[index] + (uint) license;
} }
uint num2 = num1 * (uint)param_lickey[0]; uint num2 = num1 * (uint) param_lickey[0];
uint num3 = (uint)((int)num2 * ((int)num2 & (int)byte.MaxValue) & (int)ushort.MaxValue); uint num3 = (uint) ((int) num2 * ((int) num2 & (int) byte.MaxValue) & (int) ushort.MaxValue);
if (num3 < 100U) if (num3 < 100U)
num3 = 2728U; 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); //this.aa = param_lickey.Substring(0, 1);
return true; return true;
@@ -269,7 +352,7 @@ namespace FrappeMocha
} }
catch (Exception ex2) 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", "TN5250 for Mac OS X",
"TN3812 for Mac OS X", "TN3812 for Mac OS X",
"Telnet 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.Location = new System.Drawing.Point(12, 25);
this.productSelect.Name = "productSelect"; this.productSelect.Name = "productSelect";
this.productSelect.Size = new System.Drawing.Size(146, 21); this.productSelect.Size = new System.Drawing.Size(146, 21);
@@ -156,12 +159,15 @@
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.companytext); this.Controls.Add(this.companytext);
this.Controls.Add(this.TypeDropDown); 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.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "MainForm"; this.Name = "MainForm";
this.Text = "FrappeMocha"; 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.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
+50 -5
View File
@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
@@ -11,6 +12,7 @@ namespace FrappeMocha
public partial class MainForm : Form public partial class MainForm : Form
{ {
protected Keygen frappeKeygen; protected Keygen frappeKeygen;
private char[] ficus = new char[6];
private object[] windowsLicenseTypeItems = new object[2]; private object[] windowsLicenseTypeItems = new object[2];
private object[] macLicenseTypeItems = new object[1]; private object[] macLicenseTypeItems = new object[1];
private object[] javaLicenseTypeItems = new object[5]; private object[] javaLicenseTypeItems = new object[5];
@@ -61,19 +63,19 @@ namespace FrappeMocha
switch (productSelect.SelectedIndex) switch (productSelect.SelectedIndex)
{ {
case 0: case 0:
this.keygen(Keygen.LicenseTypes.License3270); this.keygen(Keygen.LicenseTypes.LicenseWindows3270);
break; break;
case 1: case 1:
this.keygen(Keygen.LicenseTypes.License5250); this.keygen(Keygen.LicenseTypes.LicenseWindows5250);
break; break;
case 2: case 2:
this.keygen(Keygen.LicenseTypes.License3812); this.keygen(Keygen.LicenseTypes.LicenseWindows3812);
break; break;
case 3: case 3:
this.keygen(Keygen.LicenseTypes.LicenseTelnet); this.keygen(Keygen.LicenseTypes.LicenseWindowsTelnet);
break; break;
case 4: case 4:
@@ -107,6 +109,18 @@ namespace FrappeMocha
case 11: case 11:
this.keygen(Keygen.LicenseTypes.LicenseMacKeyboard); this.keygen(Keygen.LicenseTypes.LicenseMacKeyboard);
break; 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"; companyusernamelabel.Text = "Name";
} }
AcceptButton.PerformClick();
} }
private void keygen(Keygen.LicenseTypes license) private void keygen(Keygen.LicenseTypes license)
@@ -174,6 +190,7 @@ namespace FrappeMocha
case 3: case 3:
case 7: // mac type 1 case 7: // mac type 1
case 8: // mac type 1 case 8: // mac type 1
case 12:
if (windowsLicenseTypeItems[0] != null) if (windowsLicenseTypeItems[0] != null)
{ {
TypeDropDown.Items.Clear(); TypeDropDown.Items.Clear();
@@ -195,11 +212,39 @@ namespace FrappeMocha
break; break;
} }
TypeDropDown.SelectedIndex = 0; TypeDropDown.SelectedIndex = 0;
AcceptButton.PerformClick();
} }
private void licensebox_Click(object sender, EventArgs e) private void licensebox_Click(object sender, EventArgs e)
{ {
licensebox.SelectAll(); 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;
}
}
}
} }
} }