Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - .:UND3R:.

#711
Lo dejaré abierto por si se expira, en cuanto a la eliminación de la licencia es normal, mira lo siguiente:

Código (csharp) [Seleccionar]
// RapidDesignAddIn.Configuration.UcRegistration
private void btnRemoveLicense_Click(object sender, EventArgs e)
{
   RegistrationData registrationData = RegistrationManager.GetRegistrationData(this.LicenseXml);
   string text = string.Empty;
   LicenseType licenseType = registrationData.LicenseType;
   if (licenseType <= LicenseType.MultiUser)
   {
       if (licenseType != LicenseType.SingleUser)
       {
           if (licenseType == LicenseType.MultiUser)
           {
               text = "A multi-user license allows you to transfer license from one computer to another 6 times per year per user.";
           }
       }
       else
       {
           text = "A single-user license allows you to transfer license from one computer to another 6 times per year.";
       }
   }
   else
   {
       if (licenseType != LicenseType.Team)
       {
           if (licenseType == LicenseType.Corporate)
           {
               text = "A corporate license allows you to transfer license from one computer to another unlimited number of times.";
           }
       }
       else
       {
           text = "A team license allows you to transfer license from one computer to another 60 times per year.";
       }
   }
   DialogResult dialogResult = MessageBox.Show(string.Concat(new string[]
   {
       "Removing license allows you to register RapidDesign on another computer.",
       Environment.NewLine,
       text,
       Environment.NewLine,
       Environment.NewLine,
       "Do you want to remove your license from this computer?"
   }), "Removing license key", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
   if (dialogResult == DialogResult.Yes)
   {
       try
       {
           int num;
           if (RegistrationManager.WSUnregister(this.LicenseXml, out num))
           {
               this.LicenseXml = null;
               this.OnProductRegistered(EventArgs.Empty);
               this.ShowRegistrationInformation();
               string str = string.Empty;
               if (registrationData.LicenseType != LicenseType.Corporate)
               {
                   str = string.Concat(new object[]
                   {
                       Environment.NewLine,
                       "You can transfer your license for another: ",
                       num,
                       " times this year."
                   });
               }
               MessageBox.Show("Your license information has been successfuly removed." + str, "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
           }
           else
           {
               MessageBox.Show("Cannot remove your license. You have probably expired your transfer license limit.", "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Hand);
           }
       }
       catch (Exception ex)
       {
           MessageBox.Show(string.Concat(new string[]
           {
               "There has been an unexpected error while trying to remove RapidDesign license.",
               Environment.NewLine,
               "Please try again later, and if the problem still occours, contact the product vendor.",
               Environment.NewLine,
               Environment.NewLine,
               "The error details: ",
               ex.Message
           }));
       }
   }
}


Un Zoom:

Código (csharp) [Seleccionar]
if (registrationData.LicenseType != LicenseType.Corporate)
               {
                   str = string.Concat(new object[]
                   {
                       Environment.NewLine,
                       "You can transfer your license for another: ",
                       num,
                       " times this year."
                   });
               }
               MessageBox.Show("Your license information has been successfuly removed." + str, "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
           }
           else
           {
               MessageBox.Show("Cannot remove your license. You have probably expired your transfer license limit.", "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Hand);
           }


como vez la versión corporate no se puede eliminiar algo extraño  :rolleyes:

Y se cumplió lo que te comenté nunca se sabe que tan difícil puede ser un programa, aunque este me dio una impresión de que fuese fácil y terminé demorándome más de lo habitual.

Saludos

PD: Experto no soy, aquí considero 3 personas superiores años luz a mi nivel, yo solo pedí la moderación para limpiar el foro (barrendero)  :xD
#713
Si intentamos registrar con un serial incorrecto, nos aparecerá lo siguiente:


Arrancamos SAE y buscamos métodos interesantes, uno de ellos es el encargado de checkear la licencia:


Este siempre debe devolver true, por lo cual si nopeamos todas las instrucciones y agregamos la mostrada en la imagen, siempre retornará true:


Buscamos por la string registered:


Una vez encontrado lo visualizamos en C#, desconozco este lenguaje pero se me hace muy familiar por Java:


NOTA: Notamos dos métodos muy interesantes, los cuales están marcados con un círculo rojo.

Si hacemos clic en el método WSRegister, veremos que retorna un archivo XML con contenido, siempre y cuando la String text no retorne vacío:


Si nos fijamos text, obtiene el valor de acuerdo a lo que retorna Register, por lo que nos dirigimos a el:


Si lo cambiamos a lenguaje MSIL/CIL veremos lo siguiente:


El método debe retornar una String, y como vimos este debe ser un XML así que Eleкtro me obligó!! a tener que aprender una sintaxis básica de XML junto con .NET miren que lindo, por lo que pongo la siguiente sintaxis (ya explicaré como descubrí que era esa):

Código (xml) [Seleccionar]

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<License>
<UserName>UND3R</UserName>
<CompanyName>UND3R</CompanyName>
<LicenseType>40</LicenseType>
<HardwareId>0123456789</HardwareId>
<MachineName>UND3R</MachineName>
<UserCount>100</UserCount>
</License>


Quedándo más menos así:


Si nos vamos a GetRegistrationData (segundo método encerrado en rojo) veremos la estructura del xml (LicenseType parsea 40 por la licencia más cara  :silbar:):


Ya podremos registrarnos con cualquier serial (siempre y cuando tenga el tamaño correcto):





Link DLL:http://www.mediafire.com/download/bgyfn67ffis0mtj/RapidDesign.dll
Tipo Licencia: Corporate license
(No he probado esta DLL por favor dime si funciona)

Curiosidades:
- El programador se tomó la molestia de crear tan solo dos errores, los cuales eran lanzados cuando se producía una excepción, por lo cual cuando se crackeaba mal se producía una excepción, por lo cual estábamos forzados a recibir el XML.

- El proceso de validación era más menos el siguiente:
Se generaba un hardwareid o fingerprint, este se enviaba junto con la licencia introducida, si coincidían los datos, el servidor retornaba un archivo .xml junto con los datos correctos, ahora la validación de estos se hace por el método CheckLicence.

- Quise hacer el juego más divertido, tras algunas horas encontré lo siguiente:
Código (csharp) [Seleccionar]
public static int? CheckTrialDaysLeft(RapidDesignPackage package)
{
   int? result = null;
   int num = 14;
   RapidDesignHelpPage helpPage = package.HelpPage;
   XmlDocument licenseXml = package.RegistrationConfigPage.LicenseXml;
   if (!RegistrationManager.CheckLicense(licenseXml))
   {
       result = new int?(num);
       if ((helpPage.FirstUseDate.HasValue && !string.Equals(helpPage.FirstUseDateVerify, helpPage.GetDateVerifyString(helpPage.FirstUseDate.Value))) || (!helpPage.FirstUseDate.HasValue && !string.IsNullOrEmpty(helpPage.FirstUseDateVerify)) || (helpPage.LastUseDate.HasValue && !string.Equals(helpPage.LastUseDateVerify, helpPage.GetDateVerifyString(helpPage.LastUseDate.Value))) || (!helpPage.LastUseDate.HasValue && !string.IsNullOrEmpty(helpPage.LastUseDateVerify)) || (helpPage.FirstUseDate.HasValue && helpPage.FirstUseDate.Value > DateTime.Now) || (helpPage.LastUseDate.HasValue && helpPage.LastUseDate.Value > DateTime.Now))
       {
           result = new int?(0);
       }
       else
       {
           if (helpPage.FirstUseDate.HasValue)
           {
               int days = (DateTime.Now.Date - helpPage.FirstUseDate.Value.Date).Days;
               result = new int?(Math.Max(0, num - days));
           }
       }
   }
   return result;
}


Destaco la siguiente línea:

Código (csharp) [Seleccionar]
int num = 14;  :silbar:

Eso ha sido todo. Creo que debería funcionar a la perfección, en caso que no por favor coméntame.

Bueno todo esto lo he hecho por que (mi memoría no es una de las mejores pero si recuerda los buenos actos) una vez requería de un script muy puntual, sinceramente creo que era específicamente para mi servidor y tu me ayudaste sin problemas, sin contar que llevas años en el foro y estuvimos en el tiempo de guerra con los moderadores y el-brujo (las cuentas siempre estaban baneadas). Saludos.

No hacía un tutorial hace más de un año uff
#714
¿Alguien sabe a donde encontrar una lista detalla de instrucciones CIL?

Encontré estas:
http://en.wikipedia.org/wiki/List_of_CIL_instructions

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf

Saludos

PD: CIL o MSIL ?

#715
Lo que el usuario quiere, es cómo obtener el PATH de instalación de dropbox debido a que es variable en cada equipo (carpeta asignada por el usuario), su idea es mover archivos dentro de esa carpeta, lo más probable es que sea el mismo batch, quizás cambiando el nombre. Mi idea sería obtener los cambios realizados por DropBox para luego identificar en que archivo o registro almacena el PATH configurado por el usuario, para luego leerlo y tomarlo como variable, el lado positivo de esto es que no es tan sencillo (al menos en batch) por lo cual te entretendrá un poco.
#716
Somos dos, por eso te lo pedí, quería complicarle a otro la vida  :xD
#717
Ya deje un tema con chincheta sobre esto. Voy a cerrar este tema para que aquellos que tengan dudas, puedan postear sus inquietudes en el thread correcto

PD: Mad, haz un video tute también :)
#718
Hola, la modificación que haz hecho es la correcta, en propiedades modificas los permisos de lectura y escritura. Veo que quieres que los usuarios puedan visualizar películas pero que no las puedan copiar, lamento decirte que la forma en que lo estás haciendo no es posible, lo que más puedes lograr es que los archivos sean solo de lecturas, por lo que los usuarios podrán acceder a ellos, pero no podrán realizar modificaciones, pero no puedes lograr que los usuarios puedan visualizar archivos sin que puedan ser copiados, ya que el equipo necesita almacenar el contenido de este para su reproducción (caché) y no puede quedar en el aire, debe pasar si o sí por el equipo que se está conectando.
#719
Excelente iniciativa blipi, esperamos verte más seguido, saludos  ;-)
#720
Curiosidad y medir sus límites