Saber en un programa la fórmula matemática.

Iniciado por Meta, 30 Enero 2014, 09:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

Quiero saber en un programa la fórmula matemática que tiene incluida como muestra esta imagen.



La descarga es aquí.
https://mega.co.nz/#!wU9HCSAZ!fnT5yQRkR-PUiDrkPNB7TAlHNecRa9p-2EUVChCPuM0

Donde pone seedNumber que como ejemplo introduje 123456789000, pulsas el botón generar y te sale en Password e código generado que en este caso es 1110EDEF, en hexadecimal.

¿Es posible saber lo que quiero?

Parece que le código está hecho con VB 6 o C++ 6 de MicroSoft por supuesto.

Vamos haber si se puede hacer una igeniería inversa de este pequeño programa que aparenta ser sencillo.

Cuando averigüe la fórmula, lo pasaré a C#, C++ y V Basic 2013.

Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

.:UND3R:.


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Meta

Hola:

Estuve buscando que te busca en San Google gracias a los enlaces mostrados y llegué a esto:

Es un programa de dotnet. Puedes usar ILSpy para encontrar y extraer la rutina generadora.

Código (csharp) [Seleccionar]
private string Calculo_Password(string seedNumber)
{
int num = Convert.ToInt32(seedNumber.Substring(0, 6), 16);
int num2 = num + 284206435;
int num3 = Convert.ToInt32(seedNumber.Substring(10, 2), 16);
num3 &= 7;
int num4 = num2 >> num3 | num2 << 32 - num3;
return (num4 ^ num).ToString("X");
}


Los que quieran confirmarlo sabrán su estilo de como hacerlo.

Gracias por la ayuda mi muy distinguido amigo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

tincopasan

pues de entrada le has errado al compilador! y mientras escribía el mensaje publicaron otro.
en efecto la rutina es:
   
    int num = Convert.ToInt32(seedNumber.Substring(0, 6), 0x10);
    int num2 = num + 0x10f0a563;
    int num3 = Convert.ToInt32(seedNumber.Substring(10, 2), 0x10) & 7;
    int num4 = (num2 >> num3) | (num2 << (0x20 - num3));
    num4 ^= num;
    return num4.ToString("X");
que es la misma que la ya publicada, claro que la salida es en hexa como esta y no en decimal como está expresada la anterior

Meta

Ok, eso me estaba fijando en el código, todo en hexadecimal.

Otra cosa que no me sale, ya casi tengo olvidado la programación, ajjajaja. Tengo que reponerme.

He hecho un formulario nuevo en C# pero no se hacer que me funcione bien.

Código completo.

Le introduje dos textBox y un Button que sus nombres  son:

button_Generar

textBox_seedNumber

textBox_Password


Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ZynPass
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button_Generar_Click(object sender, EventArgs e)
        {
            //void Calculo_Password();
        }

        private string Calculo_Password(string seedNumber)
        {
             int num = Convert.ToInt32(seedNumber.Substring(0, 6), 0x10);
             int num2 = num + 0x10f0a563;
             int num3 = Convert.ToInt32(seedNumber.Substring(10, 2), 0x10) & 7;
             int num4 = (num2 >> num3) | (num2 << (0x20 - num3));
             num4 ^= num;
             return num4.ToString("X");
        }
    }
}
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

Holas:

Ya funciona.

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ZynPass
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button_Generar_Click(object sender, EventArgs e)
        {
            try
            {
                textBox_Password.Text = Calculo_Password(textBox_seedNumber.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Debe ingresar un número de 12 cifras hexadeximales [0-9, A-F, a-f]", "E R R O R", MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }
        }

        private string Calculo_Password(string seedNumber)
        {
            int num = Convert.ToInt32(seedNumber.Substring(0, 6), 0x10);
            int num2 = num + 0x10f0a563;
            int num3 = Convert.ToInt32(seedNumber.Substring(10, 2), 0x10) & 7;
            int num4 = (num2 >> num3) | (num2 << (0x20 - num3));
            num4 ^= num;
            return num4.ToString("X");
        }
    }
}


Gracias por la ayuda.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/