167 lines
5.6 KiB
C#
167 lines
5.6 KiB
C#
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
|
|
namespace keygen1
|
|
{
|
|
public partial class Form1 : Form
|
|
{
|
|
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
|
|
static extern IntPtr FindWindow(string? lpClassName, string lpWindowName);
|
|
|
|
[DllImport("user32.dll", SetLastError = true)]
|
|
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
|
|
|
|
[DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = false)]
|
|
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder? lParam);
|
|
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
|
|
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
|
|
|
|
const uint WM_SETTEXT = 0x000C;
|
|
const uint BM_CLICK = 0x00F5;
|
|
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Button1_Click(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(textBox1.Text))
|
|
{
|
|
MessageBox.Show("Name不能为空");
|
|
return;
|
|
}
|
|
if (string.IsNullOrEmpty(textBox2.Text))
|
|
{
|
|
MessageBox.Show("First Name不能为空");
|
|
return;
|
|
}
|
|
if (string.IsNullOrEmpty(textBox3.Text))
|
|
{
|
|
MessageBox.Show("Company不能为空");
|
|
return;
|
|
}
|
|
Generate(textBox1.Text, textBox2.Text, textBox3.Text);
|
|
}
|
|
|
|
private void Generate(string username, string fname, string company)
|
|
{
|
|
if (username.Length >= 0x11 || fname.Length >= 0x11 || company.Length >= 0x11)
|
|
{
|
|
MessageBox.Show("长度不合规");
|
|
return;
|
|
}
|
|
long[] key = GenerateKey(username, fname, company);
|
|
|
|
//string key = GenerateKey(username);
|
|
|
|
//if (!int.TryParse(username, out int serial1))
|
|
//{
|
|
// MessageBox.Show("Serial1不是有效数字");
|
|
// return;
|
|
//}
|
|
//string key = GenerateKey(serial1);
|
|
|
|
textBox4.Text = string.Join("-", key);
|
|
|
|
//if (checkBox1.Checked) AutoMode(username, fname, company, key);
|
|
}
|
|
|
|
//private static string GenerateKey(string name)
|
|
//{
|
|
// return ((char)(name[name.Length - 1] ^ 3)).ToString();
|
|
//}
|
|
|
|
private static long[] GenerateKey(string name, string fname, string company)
|
|
{
|
|
int day = DateTime.Now.Day;
|
|
int month = DateTime.Now.Month;
|
|
|
|
long nameAsc = Convert.ToInt32(name[0]);
|
|
long fnameAsc = Convert.ToInt32(fname[0]);
|
|
long companyAsc = Convert.ToInt32(company[0]);
|
|
|
|
int length1 = name.Length;
|
|
int length2 = fname.Length;
|
|
int length3 = company.Length;
|
|
|
|
string part1 = (length1 < 6) ? "444" : ((length1 < 11) ? "555" : "666");
|
|
string part2 = (length2 < 6) ? "777" : ((length2 < 11) ? "888" : "999");
|
|
string part3 = (length3 < 6) ? "111" : ((length3 < 11) ? "222" : "333");
|
|
|
|
long s1 = nameAsc * Convert.ToInt64(part1) * day / month;
|
|
long s2 = fnameAsc * Convert.ToInt64(part2) * day / month;
|
|
long s3 = companyAsc * Convert.ToInt64(part3) * day / month;
|
|
|
|
return [s1, s2, s3];
|
|
}
|
|
|
|
//private static string GenerateKey(int serial)
|
|
//{
|
|
// int a = 0x539; // ebp-4
|
|
// int c = 2 + a - 1; //ebp-C
|
|
|
|
// while (a != 0)
|
|
// {
|
|
// serial ^= c--;
|
|
// a--;
|
|
// }
|
|
|
|
// return serial.ToString();
|
|
//}
|
|
|
|
private static void AutoMode(string username, string firstname, string company)
|
|
{
|
|
string windowTitle = "Registration";
|
|
IntPtr hWnd = FindWindow(null, windowTitle);
|
|
|
|
if (hWnd == IntPtr.Zero)
|
|
{
|
|
MessageBox.Show("窗口未找到");
|
|
return;
|
|
}
|
|
|
|
int usernameControlId = 0x12;
|
|
int firstnameControlId = 0x10;
|
|
int companyControlId = 0xF;
|
|
int submitButtonId = 0x11;
|
|
|
|
IntPtr usernameHwnd = GetDlgItem(hWnd, usernameControlId);
|
|
IntPtr firstnameHwnd = GetDlgItem(hWnd, firstnameControlId);
|
|
IntPtr companyHwnd = GetDlgItem(hWnd, companyControlId);
|
|
IntPtr submitButtonHwnd = GetDlgItem(hWnd, submitButtonId);
|
|
|
|
if (usernameHwnd == IntPtr.Zero || firstnameHwnd == IntPtr.Zero || companyHwnd == IntPtr.Zero || submitButtonHwnd == IntPtr.Zero)
|
|
{
|
|
MessageBox.Show("控件未找到");
|
|
return;
|
|
}
|
|
|
|
StringBuilder usernameToSet = new(username);
|
|
StringBuilder firstnameToSet = new(firstname);
|
|
StringBuilder companyToSet = new(company);
|
|
|
|
SendMessage(usernameHwnd, WM_SETTEXT, IntPtr.Zero, usernameToSet);
|
|
SendMessage(firstnameHwnd, WM_SETTEXT, IntPtr.Zero, firstnameToSet);
|
|
SendMessage(companyHwnd, WM_SETTEXT, IntPtr.Zero, companyToSet);
|
|
SendMessage(submitButtonHwnd, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
|
|
}
|
|
|
|
private void Button2_Click(object sender, EventArgs e)
|
|
{
|
|
Clipboard.SetText(textBox1.Text);
|
|
}
|
|
|
|
private void Button3_Click(object sender, EventArgs e)
|
|
{
|
|
Clipboard.SetText(textBox2.Text);
|
|
}
|
|
|
|
private void Button4_Click(object sender, EventArgs e)
|
|
{
|
|
Clipboard.SetText(textBox3.Text);
|
|
}
|
|
}
|
|
}
|