You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1438 lines
60 KiB
C#
1438 lines
60 KiB
C#
using Navicat_Keygen_Patch_By_DFoX.Properties;
|
|
using Org.BouncyCastle.Crypto;
|
|
using Org.BouncyCastle.Crypto.Encodings;
|
|
using Org.BouncyCastle.Crypto.Engines;
|
|
using Org.BouncyCastle.OpenSsl;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Web.Script.Serialization;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Navicat_Keygen_Patch_By_DFoX
|
|
{
|
|
public partial class FNavicat : Form
|
|
{
|
|
private Icon ico = Resources.Navicat;
|
|
private char[] SnKey = new char[16];
|
|
private string EncodeTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";//"ABCDEFGH8JKLMN9PQRSTUVWXYZ234567"; //Mac
|
|
private byte[] DESKey = { 0x64, 0xAD, 0xF3, 0x2F, 0xAE, 0xF2, 0x1A, 0x27 };
|
|
private static DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
|
|
private Random rnd = new Random();
|
|
private string exefile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\navicat.exe";
|
|
private string exefiledm = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\modeler.exe";
|
|
private string gpath = @"C:\Program Files{0}\PremiumSoft\Navicat Premium {1}\{2}";
|
|
private string gpathdm = @"C:\Program Files{0}\PremiumSoft\Navicat Data Modeler\{1}";
|
|
private string gpathes = @"C:\Program Files{0}\PremiumSoft\Navicat Premium Essentials {1}\{2}";
|
|
private string gpathre = @"C:\Program Files{0}\PremiumSoft\Navicat Report Viewer\{1}";
|
|
private string gpathmd = @"C:\Program Files{0}\PremiumSoft\Navicat {1} for {2}\{3}";
|
|
private DateTime la = DateTime.Now;
|
|
private string[] prod = { "Premium", "MongoDB", "MySQL", "PostgreSQL", "Oracle", "SQL Server", "SQLite", "MariaDB" };
|
|
private string[] lang = { "English", "Spanish", "French", "German", "Polish", "Portuguese", "Russian", "Korean", "Simplified Chinese", "Japanese", "Traditional Chinese" };
|
|
private string[] langname = { "en-GB", "es-ES", "fr-FR", "de-DE", "pl-PL", "pt-PT", "ru-RU", "ko-KR", "zh-CN", "ja-JP", "zh-TW" };
|
|
private string hostPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"drivers\etc\hosts");
|
|
private string Serial = String.Empty;
|
|
private string dirtmp = (Path.GetTempPath() != null) ? Path.GetTempPath() : Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
|
|
private string pemmaclin = String.Empty;
|
|
|
|
[System.Runtime.InteropServices.DllImport("Imagehlp.dll")]
|
|
private static extern bool ImageRemoveCertificate(IntPtr handle, int index);
|
|
public FNavicat()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
public static byte[] Crypt(byte[] desKey, byte[] body)
|
|
{
|
|
byte[] result;
|
|
try
|
|
{
|
|
DES.Key = desKey;
|
|
DES.Mode = CipherMode.ECB;
|
|
result = DES.CreateEncryptor().TransformFinalBlock(body, 0, body.Length);
|
|
}
|
|
catch
|
|
{
|
|
result = null;
|
|
}
|
|
return result;
|
|
}
|
|
internal static string DFX_dividia(double dimensione, string stringa, string Divisore = "-")
|
|
{
|
|
return String.Join(Divisore, Enumerable.Range(0, (int)Math.Ceiling(stringa.Length / dimensione))
|
|
.Select(i => new string(stringa
|
|
.Skip(i * (int)dimensione)
|
|
.Take((int)dimensione)
|
|
.ToArray())));
|
|
}
|
|
private string GenerateSnKey()
|
|
{
|
|
string cvalue = comboprod.Items[comboprod.SelectedIndex].ToString().Trim();
|
|
string clang = combolang.Items[combolang.SelectedIndex].ToString().Trim();
|
|
byte[] temp_snKey = new byte[10];
|
|
temp_snKey[0] = 0x68; // must start with 0x68, 0x2a
|
|
temp_snKey[1] = 0x2A; // must start with 0x68, 0x2a
|
|
temp_snKey[2] = (byte)rnd.Next(0, 256);
|
|
temp_snKey[3] = (byte)rnd.Next(0, 256);
|
|
temp_snKey[4] = (byte)rnd.Next(0, 256);
|
|
temp_snKey[5] = 0x00;
|
|
temp_snKey[6] = 0x00;
|
|
switch (clang)
|
|
{
|
|
case "French":
|
|
temp_snKey[5] = 0xFA;
|
|
temp_snKey[6] = 0x20;
|
|
break;
|
|
case "Simplified Chinese":
|
|
temp_snKey[5] = 0xCE;
|
|
temp_snKey[6] = 0x32;
|
|
break;
|
|
case "Traditional Chinese":
|
|
temp_snKey[5] = 0xAA;
|
|
temp_snKey[6] = 0x99;
|
|
break;
|
|
case "Japanese":
|
|
temp_snKey[5] = 0xAD;
|
|
temp_snKey[6] = 0x82;
|
|
break;
|
|
case "Spanish":
|
|
temp_snKey[5] = 0xAE;
|
|
temp_snKey[6] = 0x10;
|
|
break;
|
|
case "German":
|
|
temp_snKey[5] = 0xB1;
|
|
temp_snKey[6] = 0x60;
|
|
break;
|
|
case "Polish":
|
|
temp_snKey[5] = 0xBB;
|
|
temp_snKey[6] = 0x55;
|
|
break;
|
|
case "Portuguese":
|
|
temp_snKey[5] = 0xCD;
|
|
temp_snKey[6] = 0x49;
|
|
break;
|
|
case "Russian":
|
|
temp_snKey[5] = 0xEE;
|
|
temp_snKey[6] = 0x16;
|
|
break;
|
|
case "Korean":
|
|
temp_snKey[5] = 0xB5;
|
|
temp_snKey[6] = 0x60;
|
|
break;
|
|
default:
|
|
temp_snKey[5] = 0xAC;
|
|
temp_snKey[6] = 0x88;
|
|
break;
|
|
}
|
|
temp_snKey[7] = 0x00;
|
|
if (rmod.Checked)
|
|
{
|
|
if (rstd.Checked)
|
|
temp_snKey[7] = cMac.Checked ? (byte)0x48 : (byte)0x47;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = cMac.Checked ? (byte)0x4B : (byte)0x4A;
|
|
}
|
|
else if (repo.Checked)
|
|
temp_snKey[7] = 0x0B;
|
|
else if (resse12.Checked || resse11.Checked)
|
|
{
|
|
temp_snKey[7] = (byte)(resse12.Checked ? 0x67 : 0x3A);
|
|
}
|
|
else if (rn12.Checked)
|
|
{
|
|
if (cvalue == "Premium")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x65;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x66;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x67;
|
|
}
|
|
else if (cvalue == "MySQL")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x68;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x69;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x6A;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x6B;
|
|
}
|
|
else if (cvalue == "PostgreSQL")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x6C;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x6D;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x6E;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x6F;
|
|
}
|
|
else if (cvalue == "Oracle")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x70;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x71;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x72;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x73;
|
|
}
|
|
else if (cvalue == "SQL Server")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x74;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x75;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x76;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x77;
|
|
}
|
|
else if (cvalue == "SQLite")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x78;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x79;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x7A;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x7B;
|
|
}
|
|
else if (cvalue == "MariaDB")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x7C;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x7D;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x7E;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x7F;
|
|
}
|
|
else if (cvalue == "MongoDB")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x80;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x81;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x82;
|
|
}
|
|
}
|
|
else if (rn11.Checked)
|
|
{
|
|
if (cvalue == "Premium")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x15;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x16;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x3A;
|
|
}
|
|
else if (cvalue == "MySQL")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x01;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x02;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x07;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x35;
|
|
}
|
|
else if (cvalue == "PostgreSQL")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x04;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x05;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x09;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x36;
|
|
}
|
|
else if (cvalue == "Oracle")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x10;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x11;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x12;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x37;
|
|
}
|
|
else if (cvalue == "SQL Server")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x24;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x25;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x26;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x39;
|
|
}
|
|
else if (cvalue == "SQLite")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x1D;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x1E;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x1F;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x38;
|
|
}
|
|
else if (cvalue == "MariaDB")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x4D;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x4E;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x4F;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x50;
|
|
}
|
|
else if (cvalue == "MongoDB")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x80;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x81;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x82;
|
|
}
|
|
}
|
|
else if (cMac.Checked)
|
|
{
|
|
if (cvalue == "Premium")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x17;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x18;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x40;
|
|
}
|
|
else if (cvalue == "MySQL")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x2B;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x03;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x08;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x3B;
|
|
}
|
|
else if (cvalue == "PostgreSQL")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x2C;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x06;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x0A;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x3C;
|
|
}
|
|
else if (cvalue == "Oracle")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x2D;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x13;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x14;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x3D;
|
|
}
|
|
else if (cvalue == "SQL Server")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x2F;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x27;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x28;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x3F;
|
|
}
|
|
else if (cvalue == "SQLite")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x2E;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x20;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x21;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x3E;
|
|
}
|
|
else if (cvalue == "MariaDB")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x51;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x52;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x53;
|
|
else if (ress.Checked)
|
|
temp_snKey[7] = 0x54;
|
|
}
|
|
else if (cvalue == "MongoDB")
|
|
{
|
|
if (rent.Checked)
|
|
temp_snKey[7] = 0x55;
|
|
else if (rstd.Checked)
|
|
temp_snKey[7] = 0x56;
|
|
else if (redu.Checked)
|
|
temp_snKey[7] = 0x57;
|
|
}
|
|
}
|
|
if (rmod.Checked)
|
|
temp_snKey[8] = 0x20; // High 4-bits = version number. Low 4-bits doesn't know, but can be used to delay activation time.
|
|
else
|
|
temp_snKey[8] = (byte)((rn12.Checked || resse12.Checked) ? 0xC0 : 0xB0);
|
|
temp_snKey[9] = 0x00;
|
|
if (rcs.Checked)
|
|
temp_snKey[9] = Convert.ToByte(comboCustom.SelectedIndex.ToString());
|
|
else if (rsl.Checked)
|
|
temp_snKey[9] = 0xFF; // 0xfd, 0xfc, 0xfb if you want to use not-for-resale license.
|
|
else if (rnfrl.Checked)
|
|
temp_snKey[9] = 0xFE;
|
|
else if (rnfr30.Checked)
|
|
temp_snKey[9] = 0xFB;
|
|
else if (rnfr90.Checked)
|
|
temp_snKey[9] = 0xFC;
|
|
else if (rnfr365.Checked)
|
|
temp_snKey[9] = 0xFD;
|
|
byte[] des_temp_snKey = new byte[temp_snKey.Length - 2];
|
|
Array.Copy(temp_snKey, 2, des_temp_snKey, 0, des_temp_snKey.Length);
|
|
byte[] enc_temp_snKey = Crypt(DESKey, des_temp_snKey);
|
|
byte[] fin_temp_snKey = new byte[enc_temp_snKey.Length + 2];
|
|
fin_temp_snKey[0] = 0x68; // must start with 0x68, 0x2a
|
|
fin_temp_snKey[1] = 0x2a; // must start with 0x68, 0x2a
|
|
Array.Copy(enc_temp_snKey, 0, fin_temp_snKey, 2, enc_temp_snKey.Length);
|
|
|
|
SnKey[0] = EncodeTable[fin_temp_snKey[0] >> 3];
|
|
SnKey[1] = EncodeTable[(fin_temp_snKey[0] & 0x07) << 2 | fin_temp_snKey[1] >> 6];
|
|
SnKey[2] = EncodeTable[fin_temp_snKey[1] >> 1 & 0x1F];
|
|
SnKey[3] = EncodeTable[(fin_temp_snKey[1] & 0x1) << 4 | fin_temp_snKey[2] >> 4];
|
|
SnKey[4] = EncodeTable[(fin_temp_snKey[2] & 0xF) << 1 | fin_temp_snKey[3] >> 7];
|
|
SnKey[5] = EncodeTable[fin_temp_snKey[3] >> 2 & 0x1F];
|
|
SnKey[6] = EncodeTable[fin_temp_snKey[3] << 3 & 0x1F | fin_temp_snKey[4] >> 5];
|
|
SnKey[7] = EncodeTable[fin_temp_snKey[4] & 0x1F];
|
|
|
|
SnKey[8] = EncodeTable[fin_temp_snKey[5] >> 3];
|
|
SnKey[9] = EncodeTable[(fin_temp_snKey[5] & 0x07) << 2 | fin_temp_snKey[6] >> 6];
|
|
SnKey[10] = EncodeTable[fin_temp_snKey[6] >> 1 & 0x1F];
|
|
SnKey[11] = EncodeTable[(fin_temp_snKey[6] & 0x1) << 4 | fin_temp_snKey[7] >> 4];
|
|
SnKey[12] = EncodeTable[(fin_temp_snKey[7] & 0xF) << 1 | fin_temp_snKey[8] >> 7];
|
|
SnKey[13] = EncodeTable[fin_temp_snKey[8] >> 2 & 0x1F];
|
|
SnKey[14] = EncodeTable[fin_temp_snKey[8] << 3 & 0x1F | fin_temp_snKey[9] >> 5];
|
|
SnKey[15] = EncodeTable[fin_temp_snKey[9] & 0x1F];
|
|
return DFX_dividia(4, new string(SnKey));
|
|
}
|
|
|
|
private void bexit_Click(object sender, EventArgs e)
|
|
{
|
|
Application.Exit();
|
|
}
|
|
|
|
private void bgenerateactivation_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if ((cMac.Checked || clin.Checked) && pemmaclin == String.Empty)
|
|
{
|
|
OpenFileDialog apriDialogoFile = new OpenFileDialog();
|
|
apriDialogoFile.Filter = "File pem|*.pem";
|
|
apriDialogoFile.Title = "Select the file : " + "\"pem\"";
|
|
apriDialogoFile.FilterIndex = 1;
|
|
apriDialogoFile.InitialDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
|
apriDialogoFile.RestoreDirectory = true;
|
|
if (apriDialogoFile.ShowDialog() == DialogResult.OK)
|
|
{
|
|
pemmaclin = apriDialogoFile.FileName;
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
generateactivation_DFoX();
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("Error on Generate Activation Code...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
private void generateactivation_DFoX()
|
|
{
|
|
if (tserial.Text.Trim() == String.Empty)
|
|
{
|
|
MessageBox.Show("Generate First a Serial...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
string npk = cMac.Checked || clin.Checked ? pemmaclin : dirtmp + "RegPrivateKey.pem";
|
|
if (!File.Exists(npk))
|
|
{
|
|
pemmaclin = String.Empty;
|
|
MessageBox.Show("Rsa Public Key not Find..", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
byte[] decrypt64rq = null;
|
|
string DeviceIdentifier = null;
|
|
string snKey = null;
|
|
StreamReader stReader = new StreamReader(npk);
|
|
PemReader pr = new PemReader(stReader);
|
|
AsymmetricCipherKeyPair keys = (AsymmetricCipherKeyPair)pr.ReadObject();
|
|
Pkcs1Encoding eng = new Pkcs1Encoding(new RsaEngine());
|
|
TimeSpan t = DateTime.Today - new DateTime(1970, 1, 1);
|
|
int tval = (int)t.TotalSeconds;
|
|
if (tname.Text.Trim() == String.Empty || torganization.Text.Trim() == String.Empty || tname.Text.Trim().Length > 25 || torganization.Text.Trim().Length > 25)
|
|
{
|
|
tname.Text = "DeltaFoX";
|
|
torganization.Text = "DeFconX";
|
|
}
|
|
string lic = String.Empty;
|
|
byte[] bytelic = null;
|
|
byte[] licenza = null;
|
|
if (rn12.Checked || resse12.Checked)
|
|
{
|
|
if (trequestcode.Text.Trim() == String.Empty)
|
|
{
|
|
MessageBox.Show("Please, Insert Request Code...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
trequestcode.Text = trequestcode.Text.Trim().Trim().Replace(" ", "").Replace(Environment.NewLine, "");
|
|
try
|
|
{
|
|
decrypt64rq = Convert.FromBase64String(trequestcode.Text.Trim());
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("Request Code not Valid...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
eng.Init(false, keys.Private);
|
|
string dec = Encoding.Default.GetString(eng.ProcessBlock(decrypt64rq, 0, decrypt64rq.Length));
|
|
if (rn12.Checked || resse12.Checked)
|
|
{
|
|
var json = new JavaScriptSerializer();
|
|
dynamic dfxj = json.Deserialize<Dictionary<string, object>>(dec);
|
|
DeviceIdentifier = dfxj["DI"];
|
|
snKey = dfxj["K"];
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
if (File.Exists(npk))
|
|
File.Delete(npk);
|
|
MessageBox.Show("Error on Decrypt Request Code...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
if (DeviceIdentifier == null)
|
|
{
|
|
MessageBox.Show("Error DI Value is null...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
lic = String.Format("{{\"K\":\"{0}\", \"DI\":\"{1}\", \"N\":\"{2}\", \"O\":\"{3}\", \"T\":{4}}}"/*, \"P\":\"{2}\"*/, snKey != null ? snKey : tserial.Text.Trim().Replace("-", ""), DeviceIdentifier, tname.Text.Trim(), torganization.Text.Trim(), tval/*, Platform != null ? Platform : cMac.Checked ? "Mac 10.13" : "WIN 8"*/);
|
|
eng.Init(true, keys.Private);
|
|
bytelic = Encoding.ASCII.GetBytes(lic);
|
|
licenza = eng.ProcessBlock(bytelic, 0, bytelic.Length);
|
|
string actv = Convert.ToBase64String(licenza);
|
|
tactivationcode.Text = actv;
|
|
if (cautoi.Checked)
|
|
CopyToApp2(delegate (WindowHandleManipulator manipulator, IntPtr[] editHandles)
|
|
{
|
|
if ((editHandles != null) && (editHandles.Length >= 3))
|
|
manipulator.SetText(editHandles[1], actv);
|
|
}
|
|
);
|
|
}
|
|
else
|
|
{
|
|
lic = String.Format("{{\"K\":\"{0}\", \"N\":\"{1}\", \"O\":\"{2}\", \"T\":{3}}}", snKey != null ? snKey : tserial.Text.Trim().Replace("-", ""), tname.Text.Trim(), torganization.Text.Trim(), tval/*, Platform != null ? Platform : cMac.Checked ? "Mac 10.13" : "WIN 8"*/);
|
|
eng.Init(true, keys.Private);
|
|
bytelic = Encoding.ASCII.GetBytes(lic);
|
|
licenza = eng.ProcessBlock(bytelic, 0, bytelic.Length);
|
|
FolderBrowserDialog folderDlg = new FolderBrowserDialog();
|
|
folderDlg.ShowNewFolderButton = true;
|
|
string vers = (resse11.Checked || rn11.Checked) ? "v11" : "v12";
|
|
folderDlg.Description = "Select Navicat " + ((resse11.Checked || resse12.Checked) ? "Essentials" : "") + ((!rmod.Checked) ? vers : "\"Modeler\"") + " Installation Folder...";
|
|
folderDlg.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
DialogResult result = folderDlg.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
try
|
|
{
|
|
string nfile = folderDlg.SelectedPath + "\\license_file";
|
|
if (File.Exists(nfile))
|
|
File.Delete(nfile);
|
|
File.WriteAllBytes(folderDlg.SelectedPath + "\\license_file", licenza);
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("Error on Save Navicat " + ((!rmod.Checked) ? "v11" : "Modeler") + " License File...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
MessageBox.Show("Navicat " + ((!rmod.Checked) ? "v11" : "\"Modeler\"") + " License Saved...", "Info", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
private void CopyToApp(Action<WindowHandleManipulator, IntPtr[]> action)
|
|
{
|
|
string clvalue = combolang.Items[combolang.SelectedIndex].ToString().Trim();
|
|
string TRegistrationForm = (clvalue != "Simplified Chinese") ? "TRegistrationForm" : "TRegistrationSubForm";
|
|
string TPanel = "TPanel";
|
|
string TEdit = "TEdit";
|
|
WindowHandleManipulator windowHandleManipulator = new WindowHandleManipulator(2);
|
|
List<IntPtr> list = new List<IntPtr>();
|
|
List<IntPtr> list2 = new List<IntPtr>();
|
|
List<IntPtr> list3 = new List<IntPtr>();
|
|
IntPtr[] array3 = windowHandleManipulator.Find(IntPtr.Zero, TRegistrationForm, null, false);
|
|
foreach (IntPtr item in array3)
|
|
{
|
|
if (!list.Contains(item))
|
|
{
|
|
list.Add(item);
|
|
}
|
|
}
|
|
if (list.Any<IntPtr>())
|
|
{
|
|
|
|
foreach (IntPtr parentHandle in list)
|
|
{
|
|
|
|
IntPtr[] array4 = windowHandleManipulator.Find(parentHandle, TPanel, null, true);
|
|
foreach (IntPtr item2 in array4)
|
|
{
|
|
if (!list2.Contains(item2))
|
|
{
|
|
list2.Add(item2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (list2.Any<IntPtr>())
|
|
{
|
|
foreach (IntPtr parentHandle in list2)
|
|
{
|
|
|
|
IntPtr[] array5 = windowHandleManipulator.Find(parentHandle, TEdit, null, true);
|
|
foreach (IntPtr item3 in array5)
|
|
{
|
|
if (!list3.Contains(item3))
|
|
{
|
|
list3.Add(item3);
|
|
}
|
|
}
|
|
|
|
action(windowHandleManipulator, list3.ToArray());
|
|
}
|
|
}
|
|
}
|
|
|
|
private void CopyToApp2(Action<WindowHandleManipulator, IntPtr[]> action)
|
|
{
|
|
string clvalue = combolang.Items[combolang.SelectedIndex].ToString().Trim();
|
|
string TRegistrationForm = (clvalue != "Simplified Chinese") ? "TManualActivationForm" : "TManualActivationSubForm";
|
|
string TMemo = "TMemo";
|
|
WindowHandleManipulator windowHandleManipulator = new WindowHandleManipulator(2);
|
|
List<IntPtr> list = new List<IntPtr>();
|
|
List<IntPtr> list2 = new List<IntPtr>();
|
|
IntPtr[] array3 = windowHandleManipulator.Find(IntPtr.Zero, TRegistrationForm, null, false);
|
|
foreach (IntPtr item in array3)
|
|
{
|
|
if (!list.Contains(item))
|
|
{
|
|
list.Add(item);
|
|
}
|
|
}
|
|
if (list.Any<IntPtr>())
|
|
{
|
|
|
|
foreach (IntPtr parentHandle in list)
|
|
{
|
|
|
|
IntPtr[] array4 = windowHandleManipulator.Find(parentHandle, TMemo, null, true);
|
|
foreach (IntPtr item2 in array4)
|
|
{
|
|
if (!list2.Contains(item2))
|
|
{
|
|
list2.Add(item2);
|
|
}
|
|
}
|
|
action(windowHandleManipulator, list2.ToArray());
|
|
}
|
|
}
|
|
}
|
|
private void bgenrates_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
Serial = String.Empty;
|
|
if (rn12.Checked)
|
|
trequestcode.Text = String.Empty;
|
|
tactivationcode.Text = String.Empty;
|
|
Serial = GenerateSnKey();
|
|
tserial.Text = Serial;
|
|
if (cautoi.Checked)
|
|
CopyToApp(delegate (WindowHandleManipulator manipulator, IntPtr[] editHandles)
|
|
{
|
|
|
|
if ((editHandles != null) && (editHandles.Length >= 4))
|
|
{
|
|
int startIndex = 0;
|
|
string clvalue = combolang.Items[combolang.SelectedIndex].ToString().Trim();
|
|
try
|
|
{
|
|
if (clvalue == "Simplified Chinese" || clvalue == "Traditional Chinese")
|
|
{
|
|
manipulator.SetText(editHandles[6], this.Serial.Substring(startIndex, 4));
|
|
manipulator.SetText(editHandles[5], this.Serial.Substring(startIndex += 5, 4));
|
|
manipulator.SetText(editHandles[4], this.Serial.Substring(startIndex += 5, 4));
|
|
manipulator.SetText(editHandles[3], this.Serial.Substring(startIndex + 5, 4));
|
|
}
|
|
else
|
|
{
|
|
manipulator.SetText(editHandles[3], this.Serial.Substring(startIndex, 4));
|
|
manipulator.SetText(editHandles[2], this.Serial.Substring(startIndex += 5, 4));
|
|
manipulator.SetText(editHandles[1], this.Serial.Substring(startIndex += 5, 4));
|
|
manipulator.SetText(editHandles[0], this.Serial.Substring(startIndex + 5, 4));
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//Nothing
|
|
}
|
|
}
|
|
}
|
|
);
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("Error on Generate Serial...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
private void bcopyrc_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (trequestcode.Text.Trim() == String.Empty)
|
|
return;
|
|
Clipboard.SetText((trequestcode.SelectedText != String.Empty) ? trequestcode.SelectedText : trequestcode.Text.Trim());
|
|
}
|
|
catch
|
|
{
|
|
//Se Vuoto
|
|
}
|
|
}
|
|
private void bcopyserial_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (tserial.Text.Trim() == String.Empty)
|
|
return;
|
|
Clipboard.SetText((tserial.SelectedText != String.Empty) ? tserial.SelectedText : tserial.Text.Trim());
|
|
}
|
|
catch
|
|
{
|
|
//Se Vuoto
|
|
}
|
|
}
|
|
private void bcopyactivationcode_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (tactivationcode.Text.Trim() == String.Empty)
|
|
return;
|
|
Clipboard.SetText((tactivationcode.SelectedText != String.Empty) ? tactivationcode.SelectedText : tactivationcode.Text.Trim());
|
|
}
|
|
catch
|
|
{
|
|
//Se Vuoto
|
|
}
|
|
}
|
|
private void bclearr_Click(object sender, EventArgs e)
|
|
{
|
|
trequestcode.Text = String.Empty;
|
|
}
|
|
|
|
private void bcleara_Click(object sender, EventArgs e)
|
|
{
|
|
tactivationcode.Text = String.Empty;
|
|
}
|
|
|
|
private void bpaste_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string ps = String.Empty;
|
|
if (cautoi.Checked)
|
|
CopyToApp2(delegate (WindowHandleManipulator manipulator, IntPtr[] editHandles)
|
|
{
|
|
if ((editHandles != null) && (editHandles.Length >= 3))
|
|
ps = manipulator.GetText(editHandles[2]).Trim();
|
|
}
|
|
);
|
|
trequestcode.Text = (ps != String.Empty) ? ps : (Clipboard.GetText().Length <= 0x163) ? Clipboard.GetText() : Clipboard.GetText().Substring(0, 0x163);
|
|
}
|
|
catch
|
|
{
|
|
//Se Vuoto
|
|
}
|
|
}
|
|
|
|
private void checkdigit_KeyPress(object sender, KeyPressEventArgs e)
|
|
{
|
|
e.Handled = !(char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space);
|
|
}
|
|
|
|
private void trequestcode_TextChanged(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (rn12.Checked || resse12.Checked)
|
|
{
|
|
trequestcode.Text = trequestcode.Text.Trim().Trim().Replace(" ", "").Replace(Environment.NewLine, "");
|
|
tactivationcode.Text = tactivationcode.Text.Trim().Trim().Replace(" ", "").Replace(Environment.NewLine, "");
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
}
|
|
public bool Is64BitOperatingSystem()
|
|
{
|
|
return Environment.Is64BitOperatingSystem;
|
|
}
|
|
private bool filea64bit(string file)
|
|
{
|
|
try
|
|
{
|
|
Stream fs = File.OpenRead(file);
|
|
BinaryReader br = new BinaryReader(fs);
|
|
|
|
UInt16 mz = br.ReadUInt16();
|
|
if (mz == 0x5a4d) // check if it's a valid image ("MZ")
|
|
{
|
|
fs.Position = 60; // this location contains the offset for the PE header
|
|
UInt32 peoffset = br.ReadUInt32();
|
|
|
|
fs.Position = peoffset + 4; // contains the architecture
|
|
UInt16 machine = br.ReadUInt16();
|
|
br.Close();
|
|
if (machine == 0x8664 /* IMAGE_FILE_MACHINE_AMD64 */ || machine == 0x0200 /* IMAGE_FILE_MACHINE_IA64 */)
|
|
return true;
|
|
else if (machine == 0x014c /* IMAGE_FILE_MACHINE_I386 */)
|
|
return false;
|
|
else
|
|
//textBox1.Text = "Unknown";
|
|
return false;
|
|
}
|
|
else
|
|
//textBox1.Text = "Invalid image";
|
|
return false;
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
private void bPatch_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string file = String.Empty;
|
|
string cvalue = comboprod.Items[comboprod.SelectedIndex].ToString().Trim();
|
|
if (resse11.Checked || resse12.Checked)
|
|
file = File.Exists(exefile) ? exefile : String.Format(gpathes, (Is64BitOperatingSystem()) ? "" : " (x86)", resse12.Checked ? "12" : "11", "navicat.exe");
|
|
else if (rmod.Checked)
|
|
file = File.Exists(exefiledm) ? exefiledm : String.Format(gpathdm, (Is64BitOperatingSystem()) ? "" : " (x86)", "modeler.exe");
|
|
else if (repo.Checked)
|
|
file = File.Exists(exefiledm) ? exefiledm : String.Format(gpathre, (Is64BitOperatingSystem()) ? "" : " (x86)", "rviewer.exe");
|
|
else
|
|
{
|
|
if (cvalue == "Premium")
|
|
file = File.Exists(exefile) ? exefile : String.Format(gpath, (Is64BitOperatingSystem()) ? "" : " (x86)", rn12.Checked ? "12" : "11", "navicat.exe");
|
|
else
|
|
file = File.Exists(exefile) ? exefile : String.Format(gpathmd, (Is64BitOperatingSystem()) ? "" : " (x86)", rn12.Checked ? "12" : "11", cvalue, "navicat.exe");
|
|
}
|
|
if (!File.Exists(file))
|
|
{
|
|
string filter = String.Empty;
|
|
if (rmod.Checked)
|
|
filter = "modeler.exe";
|
|
else if (repo.Checked)
|
|
filter = "rviewer.exe";
|
|
else
|
|
filter = "navicat.exe";
|
|
OpenFileDialog apriDialogoFile = new OpenFileDialog();
|
|
apriDialogoFile.Filter = "File exe|" + filter;
|
|
apriDialogoFile.Title = "Select the file : " + "\"" + filter + "\"";
|
|
apriDialogoFile.FilterIndex = 1;
|
|
apriDialogoFile.InitialDirectory = (Directory.Exists(Path.GetDirectoryName(file))) ? Path.GetDirectoryName(file) : Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
apriDialogoFile.RestoreDirectory = true;
|
|
if (apriDialogoFile.ShowDialog() == DialogResult.OK)
|
|
{
|
|
PatchewNV(apriDialogoFile.FileName);
|
|
}
|
|
}
|
|
else
|
|
PatchewNV(file);
|
|
}
|
|
catch (UnauthorizedAccessException)
|
|
{
|
|
MessageBox.Show("Sorry !!!\nProblem on Access to File...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("Error to Crack Navicat File...", "Error...", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
g1.Enabled = g2.Enabled = g3.Enabled = g4.Enabled = true;
|
|
return;
|
|
}
|
|
private void terminaProcesso(Process[] nomiProcessi)
|
|
{
|
|
foreach (Process p in nomiProcessi)
|
|
{
|
|
try
|
|
{
|
|
p.Kill();
|
|
}
|
|
catch
|
|
{
|
|
try
|
|
{
|
|
p.Close();
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
Thread.Sleep(200);
|
|
return;
|
|
}
|
|
private void tp()
|
|
{
|
|
string[] np3264 = { "NP_x64", "NP_x32" };
|
|
for (int p = 0; p < np3264.Length; p++)
|
|
{
|
|
Process[] pr = Process.GetProcessesByName(np3264[p]);
|
|
if (pr.Length > 0)
|
|
terminaProcesso(pr);
|
|
}
|
|
return;
|
|
}
|
|
private void PatchewNV(string file)
|
|
{
|
|
torganization.Text = "Generating new RSA private key, it may take a long time...";
|
|
g1.Enabled = g2.Enabled = g3.Enabled = g4.Enabled = false;
|
|
if (controlloBackup.Checked == true)
|
|
{
|
|
if (File.Exists(file + ".BAK"))
|
|
File.Delete(file + ".BAK");
|
|
File.Copy(file, file + ".BAK");
|
|
string libcc = Path.GetDirectoryName(file) + @"\libcc.dll";
|
|
if (File.Exists(libcc))
|
|
{
|
|
if (File.Exists(libcc + ".BAK"))
|
|
File.Delete(libcc + ".BAK");
|
|
File.Copy(libcc, libcc + ".BAK");
|
|
}
|
|
}
|
|
puhost(patchhost.Checked ? false : true);
|
|
bool is64bit = filea64bit(file);
|
|
tp();
|
|
string np = dirtmp + (is64bit ? "NP_x64.exe" : "NP_x32.exe");
|
|
if (File.Exists(np))
|
|
File.Delete(np);
|
|
File.WriteAllBytes(np, (is64bit ? Resources.NP_x64 : Resources.NP_x32));
|
|
File.SetAttributes(np, FileAttributes.Hidden);
|
|
string npk = dirtmp + "RegPrivateKey.pem";
|
|
if (File.Exists(npk))
|
|
File.Delete(npk);
|
|
Process p = new Process();
|
|
p.StartInfo.WorkingDirectory = dirtmp;
|
|
p.StartInfo.CreateNoWindow = true;
|
|
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
|
p.StartInfo.UseShellExecute = false;
|
|
p.StartInfo.RedirectStandardOutput = true;
|
|
p.StartInfo.FileName = np;
|
|
if (Environment.OSVersion.Version.Major >= 6)
|
|
p.StartInfo.Verb = "runas";
|
|
p.StartInfo.Arguments = " \"" + Path.GetDirectoryName(file) + "\"";
|
|
p.Start();
|
|
using (var timer = new System.Threading.Timer(delegate { tp(); }, null, 60000, Timeout.Infinite))
|
|
{
|
|
string error = p.StandardOutput.ReadToEnd();
|
|
if (error.Contains("Patch has been done successfully"))
|
|
{
|
|
if (clin.Checked)
|
|
{
|
|
string nflin = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\RegPrivateKey.pem";
|
|
if (File.Exists(nflin))
|
|
File.Delete(nflin);
|
|
File.Copy(npk, nflin);
|
|
File.Delete(npk);
|
|
}
|
|
else
|
|
File.SetAttributes(npk, FileAttributes.Hidden);
|
|
MessageBox.Show(Path.GetFileName(file) + ((!is64bit) ? " - x32 -> " : " - x64 -> ") + " Cracked!.", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
|
}
|
|
else
|
|
MessageBox.Show("No All Pattern Found!\nFile Already Patched?", "Info", MessageBoxButtons.OK, MessageBoxIcon.Question);
|
|
}
|
|
tp();
|
|
torganization.Text = "DeFconX";
|
|
if (File.Exists(np))
|
|
File.Delete(np);
|
|
p.Close();
|
|
return;
|
|
}
|
|
private void finale(string filefull, byte[] filearr, bool mt = true)
|
|
{
|
|
bool sololet = false;
|
|
string nf = String.Empty;
|
|
try
|
|
{
|
|
try
|
|
{
|
|
nf = "\"" + Path.GetFileName(filefull) + "\"";
|
|
la = File.GetLastWriteTime(filefull);
|
|
FileAttributes attributo = File.GetAttributes(filefull);
|
|
if ((attributo & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
|
|
{
|
|
sololet = true;
|
|
File.SetAttributes(filefull, attributo ^ FileAttributes.ReadOnly);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
|
|
File.WriteAllBytes(filefull, filearr);
|
|
|
|
try
|
|
{
|
|
bool PE = SistemaPeCks(filefull);
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
|
|
if (sololet)
|
|
{
|
|
try
|
|
{
|
|
// Metto il ReadOnly.
|
|
File.SetAttributes(filefull, File.GetAttributes(filefull) | FileAttributes.ReadOnly);
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
}
|
|
try
|
|
{
|
|
//Ripristino Data Ultimo Accesso
|
|
if (la != DateTime.Now && la != null)
|
|
File.SetLastWriteTime(filefull, la);
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
}
|
|
catch (UnauthorizedAccessException)
|
|
{
|
|
MessageBox.Show("Sorry !!!\nYou Run the Program as Administrator...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("Sorry !!!\nProblem with the File " + nf, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
return;
|
|
}
|
|
private bool SistemaPeCks(string file)
|
|
{
|
|
try
|
|
{
|
|
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.ReadWrite))
|
|
{
|
|
ImageRemoveCertificate(fs.SafeFileHandle.DangerousGetHandle(), 0);
|
|
fs.Close();
|
|
}
|
|
mCheckSum PE = new mCheckSum();
|
|
return PE.FixCheckSum(file);
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
public int cercaBytes(byte[] array, byte[] cosaCercare, int indiceDiPartenza, int contatore)
|
|
{
|
|
if (array == null || array.Length == 0 || cosaCercare == null || cosaCercare.Length == 0 || contatore == 0)
|
|
return -1;
|
|
|
|
int i = indiceDiPartenza;
|
|
int indiceFine = contatore > 0 ? Math.Min(indiceDiPartenza + contatore, array.Length) : array.Length;
|
|
int dfx = 0;
|
|
int ultimoDfx = 0;
|
|
|
|
while (i < indiceFine)
|
|
{
|
|
ultimoDfx = dfx;
|
|
dfx = (array[i] == cosaCercare[dfx]) ? ++dfx : 0;
|
|
if (dfx == cosaCercare.Length)
|
|
return i - dfx + 1;
|
|
if (ultimoDfx > 0 && dfx == 0)
|
|
{
|
|
i = i - ultimoDfx;
|
|
ultimoDfx = 0;
|
|
}
|
|
i++;
|
|
}
|
|
return -1;
|
|
}
|
|
private void rn11_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
tserial.Text = String.Empty;
|
|
tactivationcode.Text = String.Empty;
|
|
bool ed = rn11.Checked || rmod.Checked || repo.Checked ? false : true;
|
|
if (resse11.Checked || resse12.Checked)
|
|
{
|
|
this.Icon = Resources.Essentials;
|
|
comboprod.Enabled = false;
|
|
combolang.Enabled = true;
|
|
rent.Enabled = false;
|
|
redu.Enabled = false;
|
|
rstd.Enabled = false;
|
|
ress.Enabled = true;
|
|
ress.Checked = true;
|
|
}
|
|
else if (rmod.Checked)
|
|
{
|
|
this.Icon = Resources.DataModeler;
|
|
comboprod.Enabled = false;
|
|
combolang.Enabled = true;
|
|
rent.Enabled = false;
|
|
redu.Enabled = true;
|
|
rstd.Enabled = true;
|
|
rstd.Checked = true;
|
|
ress.Enabled = false;
|
|
}
|
|
else if (repo.Checked)
|
|
{
|
|
this.Icon = Resources.ReportViewer;
|
|
combolang.SelectedIndex = combolang.FindStringExact("English");
|
|
combolang.Enabled = false;
|
|
rent.Enabled = false;
|
|
redu.Enabled = false;
|
|
rstd.Enabled = true;
|
|
rstd.Checked = true;
|
|
ress.Enabled = false;
|
|
}
|
|
else
|
|
{
|
|
this.Icon = Resources.Navicat;
|
|
combolang.Enabled = true;
|
|
comboprod.Enabled = true;
|
|
comboprod.SelectedIndex = comboprod.FindStringExact("Premium");
|
|
rent.Enabled = true;
|
|
rent.Checked = true;
|
|
rstd.Enabled = false;
|
|
redu.Enabled = true;
|
|
ress.Enabled = true;
|
|
}
|
|
trequestcode.Text = !ed ? "To Activate :" + Environment.NewLine + Environment.NewLine + "1) Patch Host or Put the PC Offline" + Environment.NewLine + "2) In Registration Press CTRL+SHIFT and Click on Activate" + Environment.NewLine + "3) Select the Generated File \"license_file\"" : "";
|
|
toolTip1.SetToolTip(trequestcode, !ed ? "" : "Put the PC Offline, Click on Manual Activation and Paste the Request Code Here...");
|
|
trequestcode.Enabled = ed;
|
|
tactivationcode.Enabled = ed;
|
|
bcleara.Enabled = ed;
|
|
bclearr.Enabled = ed;
|
|
bpaste.Enabled = ed;
|
|
}
|
|
|
|
private void linna_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Process.Start(@"https://navicat.com");
|
|
}
|
|
|
|
private void linkur_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Process.Start(@"https://www.dfox.it");
|
|
}
|
|
private void NC_Load(object sender, EventArgs e)
|
|
{
|
|
this.Icon = ico;
|
|
Version version = Assembly.GetExecutingAssembly().GetName().Version;
|
|
this.Text = String.Format("Navicat Products - Patch/Keygen v{0}.{1}", version.Major, version.Minor);
|
|
CultureInfo ci = CultureInfo.InstalledUICulture;
|
|
string ln = ci.Name.ToString().Trim();
|
|
for (int cmm = 0; cmm < 0xFF + 1; cmm++)
|
|
comboCustom.Items.Insert(cmm, "0x" + (cmm).ToString("X2").PadLeft(2, '0'));
|
|
for (int cpr = 0; cpr < prod.Length; cpr++)
|
|
comboprod.Items.Insert(cpr, prod[cpr]);
|
|
for (int lng = 0; lng < lang.Length; lng++)
|
|
combolang.Items.Insert(lng, lang[lng]);
|
|
comboprod.SelectedIndex = comboprod.FindStringExact("Premium");
|
|
combolang.SelectedIndex = langname.Contains(ln) ? combolang.FindStringExact(lang[Array.IndexOf(langname, ln)])
|
|
: combolang.FindStringExact("English");
|
|
comboCustom.SelectedIndex = 0x32;
|
|
}
|
|
|
|
private void rnfrl_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rcs.Checked)
|
|
comboCustom.Enabled = true;
|
|
else
|
|
comboCustom.Enabled = false;
|
|
}
|
|
|
|
private void rnfr30_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rcs.Checked)
|
|
comboCustom.Enabled = true;
|
|
else
|
|
comboCustom.Enabled = false;
|
|
}
|
|
|
|
private void rnfr365_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rcs.Checked)
|
|
comboCustom.Enabled = true;
|
|
else
|
|
comboCustom.Enabled = false;
|
|
}
|
|
|
|
private void rcs_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rcs.Checked)
|
|
comboCustom.Enabled = true;
|
|
else
|
|
comboCustom.Enabled = false;
|
|
}
|
|
|
|
private void rnfr90_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rcs.Checked)
|
|
comboCustom.Enabled = true;
|
|
else
|
|
comboCustom.Enabled = false;
|
|
}
|
|
|
|
private void rsl_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rcs.Checked)
|
|
comboCustom.Enabled = true;
|
|
else
|
|
comboCustom.Enabled = false;
|
|
}
|
|
|
|
private void comboCustom_KeyPress(object sender, KeyPressEventArgs e)
|
|
{
|
|
e.Handled = true;
|
|
}
|
|
|
|
private void comboprod_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
tserial.Text = String.Empty;
|
|
trequestcode.Text = String.Empty;
|
|
tactivationcode.Text = String.Empty;
|
|
string icoprod = comboprod.Items[comboprod.SelectedIndex].ToString().Trim();
|
|
if (rn11.Checked || rn12.Checked)
|
|
{
|
|
switch (icoprod)
|
|
{
|
|
case "MariaDB":
|
|
this.Icon = Resources.MariaDB;
|
|
break;
|
|
case "MongoDB":
|
|
this.Icon = Resources.MongoDB;
|
|
break;
|
|
case "MySQL":
|
|
this.Icon = Resources.MySQL;
|
|
break;
|
|
case "Oracle":
|
|
this.Icon = Resources.Oracle;
|
|
break;
|
|
case "PostgreSQL":
|
|
this.Icon = Resources.PostgreSQL;
|
|
break;
|
|
case "SQL Server":
|
|
this.Icon = Resources.SQLserver;
|
|
break;
|
|
case "SQLite":
|
|
this.Icon = Resources.SQLite;
|
|
break;
|
|
default:
|
|
this.Icon = Resources.Navicat;
|
|
break;
|
|
}
|
|
}
|
|
tserial.Text = String.Empty;
|
|
rstd.Enabled = (icoprod == "Premium") ? false : true;
|
|
ress.Enabled = (icoprod == "MongoDB") ? false : true;
|
|
}
|
|
private void ControlloHost(string cosatrovare = "")
|
|
{
|
|
try
|
|
{
|
|
if (!File.Exists(hostPath))
|
|
{
|
|
StreamWriter scrivo = new StreamWriter(hostPath, false, Encoding.Default);
|
|
scrivo.WriteLine("# 127.0.0.1 localhost");
|
|
scrivo.Close();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
}
|
|
private void ScriviHost(string cosascrivere, string cosatrovare = "", bool rimuovere = false)
|
|
{
|
|
ControlloHost();
|
|
bool trovato = false;
|
|
string line;
|
|
if (File.Exists(hostPath))
|
|
{
|
|
try
|
|
{
|
|
FileAttributes attributo = File.GetAttributes(hostPath);
|
|
if ((attributo & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
|
|
File.SetAttributes(hostPath, attributo ^ FileAttributes.ReadOnly);
|
|
StreamReader file = new StreamReader(hostPath);
|
|
if (!rimuovere)
|
|
{
|
|
while ((line = file.ReadLine()) != null)
|
|
if (line.IndexOf(cosatrovare) != -1 && line.Trim().Substring(0, 1) != "#")
|
|
trovato = true;
|
|
file.Close();
|
|
if (!trovato)
|
|
{
|
|
using (StreamWriter stream = new StreamWriter(hostPath, true, Encoding.Default))
|
|
{
|
|
stream.WriteLine(cosascrivere);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
List<string> hostlist = new List<string>();
|
|
while ((line = file.ReadLine()) != null)
|
|
if (line.IndexOf(cosatrovare) == -1) hostlist.Add(line);
|
|
file.Close();
|
|
StreamWriter scrivo = new StreamWriter(hostPath, false, Encoding.Default);
|
|
foreach (string lines in hostlist)
|
|
{
|
|
scrivo.WriteLine(lines);
|
|
}
|
|
scrivo.Close();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//Niente
|
|
}
|
|
finally
|
|
{
|
|
File.SetAttributes(hostPath, File.GetAttributes(hostPath) | FileAttributes.ReadOnly);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
private void puhost(bool pou)
|
|
{
|
|
ScriviHost("127.0.0.1 activate.navicat.com", "activate.navicat.com", pou);
|
|
}
|
|
private void clin_Click(object sender, EventArgs e)
|
|
{
|
|
cMac.Checked = false;
|
|
bool ecl = !clin.Checked;
|
|
patchhost.Checked = ecl;
|
|
patchhost.Enabled = ecl;
|
|
cautoi.Checked = ecl;
|
|
cautoi.Enabled = ecl;
|
|
if (!ecl)
|
|
pemmaclin = String.Empty;
|
|
}
|
|
private void cMac_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (cMac.Checked)
|
|
{
|
|
clin.Checked = false;
|
|
cautoi.Checked = false;
|
|
cautoi.Enabled = false;
|
|
EncodeTable = "ABCDEFGH8JKLMN9PQRSTUVWXYZ234567";
|
|
trequestcode.Enabled = true;
|
|
tactivationcode.Enabled = true;
|
|
bPatch.Enabled = false;
|
|
patchhost.Enabled = false;
|
|
patchhost.Checked = false;
|
|
controlloBackup.Enabled = false;
|
|
controlloBackup.Checked = false;
|
|
}
|
|
else
|
|
{
|
|
pemmaclin = String.Empty;
|
|
cautoi.Checked = true;
|
|
cautoi.Enabled = true;
|
|
tserial.Text = String.Empty;
|
|
trequestcode.Text = String.Empty;
|
|
tactivationcode.Text = String.Empty;
|
|
EncodeTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
|
|
bPatch.Enabled = true;
|
|
patchhost.Enabled = true;
|
|
patchhost.Checked = true;
|
|
controlloBackup.Enabled = true;
|
|
controlloBackup.Checked = true;
|
|
}
|
|
}
|
|
public static byte[] StringToByteArray(string hex)
|
|
{
|
|
return Enumerable.Range(0, hex.Length)
|
|
.Where(x => x % 2 == 0)
|
|
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
|
|
.ToArray();
|
|
}
|
|
|
|
private void FNavicat_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
tp();
|
|
}
|
|
}
|
|
} |