Posted July 15, 201312 yr This is my first keygen-me so good luck. Original Language: C# Difficulty: Beginner to Intermediate Obfuscated: Yes (SmartAssembly) Self-Keygen/IL-Patching: No Not sure if the algo I wrote is used in real software but it works and creating a keygen for it shouldn't be too difficult. Keygen Me.rar Edited July 15, 201312 yr by master131
July 15, 201312 yr So we have 5 groups separated by "-"each group is a hex number! class0_0.int_0 is a int array: int[] numArray = new int[] { 5, 2, 4, 6, 7 }; string[] strArray; if (string.IsNullOrEmpty(string_0)) { return false; } if ((strArray = string_0.Split(new char[] { '-' })).Length != class0_0.int_0.Length) { return false; } List<int> list = new List<int>(); foreach (string str in strArray) { int num; if (str.Length != 4) { return false; } if (!int.TryParse(str, NumberStyles.HexNumber, null, out num)) { return false; } list.Add(num); }in the end we have a list with numbers!The most important part:for (int i = 0; i < list.Count; i++) { int num3 = 0; foreach (char ch in Convert.ToString(list, 2)) // convert int to base 2 { num3 += (ch == '1') ? 1 : 0; // here char can be only 1 or 0 since is base 2 // when char is 1 add 1 to the number } if (num3 != class0_0.int_0) { return false; } } return true;So int[] numArray = new int[] { 5, 2, 4, 6, 7 };means numbers of "1" in binary!Still don't know how to generate serials yet!
July 15, 201312 yr @CodeCracker I think this keygenme it's imposible to solve because each group must be 4 like this: xxxx-xxxx-xxxx-xxxx-xxxx If we replace the x with 1 with be 4 +1: 1111-1111-1111-1111-1111 num3 then the maximum value can be 4. The array contains 5, 2, 4, 6, 7. So the only possible serials that can be generated will be the 2nd and 3rd group on the serial. If we put another number that converted to base 2 will be also 1 or 0 so it's imposible to generate a serial.
July 15, 201312 yr LordCoder: you are actually wrong!First of all each number is on Hexadecimal!5 means 5 binary with "1": 11111 -> 1F -> 001F (since is 4 chars long)2 means 2 binary with "1": 11 -> 3 -> 00034 means 4 binary with "1": 15 -> F -> 000F6 means 6 binary with "1": 63 -> 3F -> 003F7 means 7 binary with 1 -> 007FValid serial: 001F-0003-000F-003F-007Fand product registered!I still don't know how to make a program which generates multiple serials :-DI just do them manually! Edited July 15, 201312 yr by CodeCracker
July 15, 201312 yr maybe create empty space of 0 then fill it with 1 until 5,2,4,6,7 then convert it to hex like this 1001001101-100000001-100010101-1001100100101-11001101101 => 024d-0101-0115-1325-066d Edited July 15, 201312 yr by ewwink
July 16, 201312 yr Author Great job guys. Creating a keygen is possible, but it might involve some bruteforcing. Hint: 0x0000-0xFFFF Edited July 16, 201312 yr by master131
July 16, 201312 yr Solution Umm, no. No bruteforce required, just some brain. PoC Keygen + relevant source attached. kg_master131_by_kao.zip
July 16, 201312 yr Author Umm, no. No bruteforce required, just some brain. PoC Keygen + relevant source attached. Or you could do that, lol. Nice job.
July 16, 201312 yr I have some hard time with this.Here is my solution. Keygen for master131 KeyGenMe.rar
July 16, 201312 yr It looked an easy target Yeah I was confused at it. Now I see it's better to do a protection with maths than with some other encryptions
July 16, 201312 yr My sources: Public Class frmKeygen Function ConvertBinToHex(ByVal a As String) As String If a = "" Then Return String.Empty Else Return Convert.ToString(Convert.ToInt32(a, 2), 16).ToUpper End If End Function Private Sub cmdGenereaza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenereaza.Click Dim rnd As New Random() Dim lungime As Integer = 4 Dim strdup As String = "11011" Dim strreplicat As String = "0100" Dim index As String = rnd.Next(0, strdup.Length) Dim strfinal As String = strdup.Insert(index, strreplicat) txtSerial1.Text = "000" + ConvertBinToHex(strfinal) txtSerial1.Text = Strings.Right(txtSerial1.Text, lungime) Dim strdup1 As String = "010" Dim index1 As String = rnd.Next(0, strdup1.Length) Dim strfinal1 As String = strdup1.Insert(index1, strreplicat) txtSerial2.Text = "000" + ConvertBinToHex(strfinal1) txtSerial2.Text = Strings.Right(txtSerial2.Text, lungime) Dim strdup2 As String = "10101" Dim index2 As String = rnd.Next(0, strdup2.Length) Dim strfinal2 As String = strdup2.Insert(index2, strreplicat) txtSerial3.Text = "000" + ConvertBinToHex(strfinal2) txtSerial3.Text = Strings.Right(txtSerial3.Text, lungime) Dim strdup3 As String = "101100101" Dim index3 As String = rnd.Next(0, strdup3.Length) Dim strfinal3 As String = strdup3.Insert(index3, strreplicat) txtSerial4.Text = "000" + ConvertBinToHex(strfinal3) txtSerial4.Text = Strings.Right(txtSerial4.Text, lungime) Dim strdup4 As String = "111010110" Dim index4 As String = rnd.Next(0, strdup4.Length) Dim strfinal4 As String = strdup4.Insert(index4, strreplicat) txtSerial5.Text = "000" + ConvertBinToHex(strfinal4) txtSerial5.Text = Strings.Right(txtSerial5.Text, lungime) Dim serialfinal As String = txtSerial1.Text & "-" & txtSerial2.Text & "-" & txtSerial3.Text & "-" & txtSerial4.Text & "-" & txtSerial5.Text serialfinal = serialfinal.ToUpper Clipboard.SetText(serialfinal) End Sub End Class And attached is a little aesthetic change to the keygen.Keygen for master131 KeyGenMe.rar Edited July 16, 201312 yr by GIV
Create an account or sign in to comment