manager license failed error 2017b licensing

licensing - failed - matlab license manager error 95



Licencia de evaluación de software (10)

Casi todos los sistemas de licencias comerciales se han descifrado, hemos utilizado muchos a lo largo de los años, todos se agrietan, la regla general es escribir la tuya, cámbiala cada versión, una vez que intentes descifrarla por tu cuenta.

Nada es realmente seguro, en última instancia, mira a los grandes jugadores de Microsoft, etc., van con el modelo que la gente honesta pagará y otro que lo copiará, no pongas demasiado esfuerzo en ello.

Si su aplicación vale la pena pagar dinero, la gente lo hará.

Mi compañía está buscando comenzar a distribuir algún software que hemos desarrollado y nos gustaría poder permitir que la gente pruebe el software antes de comprarlo. También nos gustaría asegurarnos de que no se pueda copiar y distribuir a los clientes de nuestros clientes.

Un modelo que hemos visto es vincular una licencia a una dirección MAC para que el software solo funcione en una máquina.

Lo que me pregunto es, ¿cuál es una buena forma de generar una clave de licencia con diferente información incrustada en ella, como la fecha de caducidad de la licencia, la dirección MAC y las diferentes restricciones de software?


Es difícil proporcionar una buena respuesta sin saber nada sobre su producto y sus clientes. Para el software empresarial que se vende a personas técnicas, puede utilizar un sistema de licencias bastante complejo y lo resolverán. Para el software de consumo vendido a los que apenas saben leer y escribir, necesita un sistema mucho más simple.

En general, he adoptado la práctica de hacer un sistema muy simple que mantenga honestas a las personas honestas. Cualquier persona que realmente quiera robar su software encontrará una forma de evitar cualquier sistema DRM.

En el pasado, he usado Armadillo (ahora Software Passport) para proyectos C ++. Actualmente estoy usando XHEO para proyectos de C #.


He usado tanto FLEXlm de Macrovision (anteriormente Globetrotter) como el RLM más nuevo de Reprise Software (según tengo entendido, escrito por los autores originales de FlexLM). Ambos pueden desactivar la dirección MAC o un dongle físico, pueden estar bloqueados por nodo (vinculados a una sola máquina) o "flotantes" (cualquier máquina autorizada en la red puede obtener una licencia asignada por un servidor de licencia central, hasta a un número máximo de copias simultáneamente desprotegidas determinado por cuánto han pagado). Existe una variedad de formas flexibles de configurarlo, incluidas las fechas de vencimiento, las funciones con sublicencias individuales, etc. La integración en una aplicación no es muy difícil. Estos son solo los dos que he usado, estoy seguro de que hay otros que también hacen el trabajo.

Estos programas se descifran fácilmente, lo que significa que hay vulnerabilidades conocidas que permiten a las personas eludir la seguridad de su aplicación que las utiliza, ya sea cortando sus propias licencias para falsificar el servidor de licencias o simplemente parcheando su binario para eludir la verificación de licencia ( esencialmente reemplazando la llamada de subrutina a su biblioteca con un código que simplemente dice "return ''true''". Es más complicado que eso, pero a eso se reduce principalmente. Verás versiones crackeadas de tu producto publicadas en varios sitios de Warez. Puede ser muy frustrante y desmoralizador, sobre todo porque a menudo están interesados ​​en descifrar el sake, y ni siquiera tienen uso para su producto o conocimiento de qué hacer con él. (Esto es obvio si tener un programa suficientemente especializado.)

Debido a esto, algunas personas dirán que debe escribir el suyo, tal vez incluso cambiar el esquema de cifrado con frecuencia. Pero no estoy de acuerdo. Es cierto que lanzar su propia cuenta significa que los exploits conocidos contra FLEXlm o RLM no funcionarán instantáneamente para su aplicación. Sin embargo, a menos que seas un experto total en este tipo de seguridad (que claramente no eres o no estarías haciendo la pregunta), es muy probable que en tu inexperiencia termines escribiendo un documento mucho menos seguro y más fácil de descifrar. esquema que los líderes del mercado (por débiles que sean).

La otra razón para no hacer lo propio es simplemente que es un juego interminable de gatos y ratones. Es mejor para sus clientes y sus ventas poner un mínimo esfuerzo en la seguridad de las licencias y pasar ese tiempo depurando o agregando características. Debes enfrentarte al esquema de licencias simplemente como "mantener honestas a las personas honestas", pero no para evitar un resquebrajamiento determinado. Acepte que los crackers no habrían pagado por el software de todos modos.

No todos pueden adoptar este tipo de actitud zen. Algunas personas no pueden dormir por la noche sabiendo que alguien está obteniendo algo por nada. Pero trata de aprender a manejarlo. No puede detener a los piratas, pero puede equilibrar su tiempo / esfuerzo / gasto tratando de detener toda la piratería en lugar de mejorar su producto para los usuarios. Recuerde, a veces las aplicaciones más pirateadas también son las más populares y rentables. Buena suerte y duerme bien.


Hemos utilizado el siguiente algoritmo en mi empresa durante años sin un solo incidente.

  1. Decida los campos que quiere en el código. Bit-pack tanto como sea posible. Por ejemplo, las fechas podrían ser "la cantidad de días desde 2007" y luego puede salirse con 16 bits.
  2. Agregue un campo adicional de "suma de comprobación". (Verá por qué en un segundo.) El valor de este campo es una suma de comprobación de los bytes empaquetados de los otros campos. Usamos "los primeros 32 bits de MD5".
  3. Cifre todo usando TEA . Para la clave, use algo que identifique al cliente (por ejemplo, nombre de la empresa + dirección de correo electrónico personal), de ese modo, si alguien desea publicar una clave en la interweb, debe incluir su propia información de contacto en texto sin formato.
  4. Convierte hex a una cuerda de una manera sensata. Puede hacer dígitos hexadecimales rectos, pero a algunas personas les gusta elegir un conjunto diferente de 16 caracteres para hacerlo menos obvio. Incluya también guiones o algo regularmente para que sea más fácil leerlo por teléfono.

Para descifrar, convierte hex a cadena y descifra con TEA. Pero luego está este paso adicional: calcule su propia suma de verificación de los campos (ignorando el campo de suma de comprobación) y compare con la suma de comprobación dada. Este es el paso que asegura que nadie manipule la clave .

La razón es que TEA mezcla los bits por completo, por lo que si se cambia un solo bit, es igualmente probable que todos los demás bits cambien durante el descifrado TEA, por lo tanto, la suma de comprobación no pasará.

¿Esto es pirateable? ¡Por supuesto! Casi todo lo es, pero esto es lo suficientemente ajustado y simple de implementar.

Si la vinculación a la información de contacto no es suficiente, incluya un campo para "ID de nodo" y fíjelo a la dirección MAC o somasuch como sugiera.


La compañía para la que trabajé usó un dongle usb . Esto fue útil porque:

  • Nuestro software también se instaló en esa memoria USB
  • El programa solo se ejecutará si encuentra la clave de hardware (única) (cualquier llave USB estándar tiene eso, por lo que no tiene que comprar algo especial, cualquier palo lo hará)
  • no estaba restringido a una computadora, sino que podría instalarse en otro sistema si así lo desea

Sé que a la mayoría de la gente no le gustan los dongles, pero en este caso fue bastante útil ya que en realidad se utilizó para un reproductor multimedia especial que también entregamos, las llaves USB podrían usarse como demostración en cualquier computadora, pero también , y sin ninguna modificación, ser utilizado en la aplicación real (es decir, los jugadores reales), una vez que el cliente estaba satisfecho


Lo mantenemos simple: almacena cada licencia de datos en un XML (fácil de leer y administrar), crea un hash de todo el XML y críptalo con una utilidad (también propia y simple).

Esto tampoco es perfecto, pero puede mantenerse durante un tiempo.


Si su producto requiere el uso de Internet, puede generar una identificación única para la máquina y usarla para verificar con un servicio web de licencia.

Si no es así, creo que ir con un producto comercial es el camino a seguir. Sí, pueden ser pirateados, pero para la persona que está absolutamente decidida a piratearlo, es poco probable que lo hayan pagado.

Hemos utilizado: http://www.aspack.com/asprotect.aspx

También utilizamos una llamada de función en su producto sdk que nos proporciona una identificación única para una máquina.

Buena compañía, aunque claramente no es nativo de habla inglesa desde que su primer producto se llamó "AsPack".


Te sugiero que tomes los datos que deseas en la clave y los hasch con md5, y luego solo tomas los primeros X caracteres (donde X es la longitud de una clave que crees que es manejable).

Criptográficamente, está lejos de ser perfecto, pero este es el tipo de área en la que desea colocar la mínima cantidad de esfuerzo que detendrá a un atacante casual: cualquier cosa más rápidamente se convierte en un agujero negro.

Oh, también debo señalar, querrás indicar la fecha de caducidad (y cualquier otra información que quieras leer tú mismo) en texto plano (o ligeramente ofuscado) como parte de la clave si vas por este camino - El md5 es solo para evitar que el usuario final cambie la fecha de vencimiento para extender la licencia.

Lo más fácil sería un archivo clave como este ...

# License key for XYZZY expiry-date=2009-01-01 other-info=blah key=[md5 has of MAC address, expiry date, other-info]


No use direcciones MAC. En algunos hardware que hemos probado, en particular algunos Thinkpads de IBM, la dirección MAC puede cambiar al reiniciarse. No nos molestamos en investigar por qué sucedió esto, pero aprendimos bastante temprano durante nuestra investigación a no confiar en ello.

Descargo de responsabilidad y tapón obligatorios: la compañía que cofundé produce la solución de licencia OffByZero Cobalt . Por lo tanto, probablemente no le sorprenda saber que recomiendo subcontratar su licencia y centrarse en sus competencias principales.

En serio, estas cosas son bastante difíciles de entender, y las consecuencias de equivocarse podrían ser bastante malas. Si tiene un precio alto de bajo volumen, unas pocas copias pirateadas podrían afectar seriamente sus ingresos, y si tiene un alto precio de bajo volumen, entonces hay un incentivo para que warez d00dz rompa su software por diversión y reputación.

Una cosa a tener en cuenta es que no existe una licencia verdaderamente a prueba de crack; una vez que alguien tiene su código de bytes en su hardware, ha regalado la capacidad de controlar completamente lo que hacen con él.

Lo que hace un buen sistema de licencias es elevar el listón lo suficientemente alto como para que la compra de su software sea una mejor opción, especialmente con el aumento del software pirateado infectado por malware. Le recomendamos que tome una serie de medidas para asegurar su aplicación:

  • obtener un buen sistema de licencia de terceros
  • Pimienta su código con verificaciones contenidas en el alcance (p. ej., ninguna variable global como fIsLicensed, no verifica el estado de una característica cerca del código que implementa la característica)
  • emplean una ofuscación seria en el caso del código .NET o Java

He utilizado una cantidad de productos diferentes que hacen la generación de licencias y he creado mi propia solución, pero todo se reduce a lo que le dará más flexibilidad ahora y en el futuro.

Los temas en los que debe concentrarse para generar sus propias claves de licencia son ...

Formateo HEX, criptografía de curva elíptica y cualquiera de los algoritmos de encriptación como AES / Rijndael, DES, Blowfish, etc. Son excelentes para crear claves de licencia.

Por supuesto, no es suficiente tener una clave, también debe asociarla a un producto y programar la aplicación para que se bloquee en función de un sistema clave que haya creado.

Me he equivocado con la creación de mi propia solución, pero al final, cuando se trataba de ganar dinero con el software, tuve que abandonar y obtener una solución comercial que me ahorraría tiempo generando claves y gestionando mi línea de productos ...

Mi favorito hasta ahora ha sido License Vault de SpearmanTech pero también he probado FlexNet (costoso), XHEO (demasiada programación requerida) y SeriousBit Ellipter.

Elegí el producto License Vault al final porque lo obtendría por mucho más barato que los demás y simplemente tenía más para ofrecerme ya que hacemos la mayor parte de nuestro trabajo en .NET 3.5.