solucion para seguridad o activaciones


([N3] ereitmann) #1

Hola, alguno ha desarrollado o programado alguna solución, estrategia, o dll que permita por ejemplo detectar el numero de serie del disco rígido en velneo?
Es que estoy viendo como implementar alguna seguridad para distribuir soluciones monousuarios, por internet, validando las instalaciones y evitar que el ejecutable de distribución sea reinstalado en otra máquinas.
Alguno puede darme alguna idea? o si tiene desarrollado algo?
he visto algunas dll que se pueden comprar por internet pero no todas son utilizables por velneo.
AGRADECERE CUALQUIER INFORMACIÓN


([N3] GSI) #2

Nosotros tenemos un servidor propio, donde hay una aplicación que recibe una llamada por internet, mediante proceso remoto en la que se pasan unos parámetros como pueden ser cliente, id hd, nº serie Windows, etc. y nuestro servidor devuelve si o no, según puede funcionar total o parcialmente (demo).

Lógicamente en este servidor hay una aplicación interna con los datos de los clientes, aplicaciones autorizadas, etc


([N3] ereitmann) #3

Gsi gracias por tu respuesta, pero como obtienes el numero de id del hd o los otros datos de tu cliente? con que aplicación la haces?
Muchas gracias


([N4] bitcodesoft) #4

Yo tengo una DLL que identifica el PC donde se instala, (HD, micro, memoria, etc), creando una cadena única por PC (hardwareID), pero puedes utilizar la función sysInfo() de la clase VApp:

http://velneo.es/info_v7_714_es/velneo_vdevelop_v7/scripts/clases/vapp/#sysInfo


([N3] ereitmann) #5

Hola Bitcodesoft gracias por tu respuesta, mira estuve buscando por internet algunas soluciones de pago, encontre una que ya se nombraba en el foro de v6 del fabricante azsdk llamada hardwareID.dll (pareceria la misma que la que me nombras) que te hace creo lo mismo que tu me cuentas es esa a la que te refieres?. la que encontré es la versión 5.0, serviría para velneo 7? ya que de ser así la compraría pero primero que mucho de esto no entiendo (solo soy nivel 3 por que me permitió aprender recurriendo al soporte) y segundo no quisiera comprar algo que no pueda utilizar,
Gracias por cualquier aporte
Saludos


([N4] bitcodesoft) #6

No la DLL que te digo está programada por mí, www.bitcodesoft.com, pero si no quieres complicarte la vida con la clase de JavaScript Velneo que te mencioné en el anterior post puedes generar una cadena de identificación para el PC en el que se ejecuta, crea un archivo JavaScript (HardwareID.js) y copias esto:

//— copiar desde aquí—

var Base64 = {

  _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

  encode: function (input) {
      var output = "";
      var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
      var i = 0;

      while (i < input.length) {

          chr1 = input.charCodeAt(i++);
          chr2 = input.charCodeAt(i++);
          chr3 = input.charCodeAt(i++);

          enc1 = chr1 >> 2;
          enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
          enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
          enc4 = chr3 & 63;

          if (isNaN(chr2)) {
              enc3 = enc4 = 64;
          } else if (isNaN(chr3)) {
              enc4 = 64;
          }

          output = output +
              this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
              this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

      }

      return output;
  }

}

var hardwareId;
var si = theApp.sysInfo()

if (si) {
hardwareId = si.getOsString() + si.getOs() + si.getPlatform() + si.getByteOrder() + si.getTotalMemory() + si.getTotalMemoryMB()

  si.loadNetworkInterfaces();
  var ni = si.getNumNetworkInterfaces();
  for (var i = 0; i < ni; i++) {
      hardwareId += si.getNetworkInterfaceMac(i);
  }
  hardwareId = Base64.encode(hardwareId)

}
theRoot.setVar(“HARDWAREID”, hardwareId);

//— hasta aquí —

Luego creas un proceso en Velneo, seleccionas lenguaje JavaScript, y el fichero script el que has creado antes, creas una variable local tipo string que se llame HARDWAREID, y listo, solo tienes que crear un objeto con el proceso, lo disparas en primer plano y obtienes el valor de la variable “HARDWAREID”, que será una cadena en formato Base64 que te servirá para identificar el PC en el que has instalado tu aplicación.


([N3] ereitmann) #7

Huyyyy…No entiendo ni lo que hace pero seguiré los pasos que me indicas y te cuento…

Enormemente agradecido… el tiempo que te ha llevado hacer esto y atender este pedido… no tiene precio… Espero alguna vez poder devolverte este esfuerzo, Nuevamente muchas gracias.
Tengo un sitio www.forodeentrenamiento.com si de alli te sirve algo para ti o algún familiar solicitarlo.


([N4] bitcodesoft) #8

Un pequeño apunte, sustituir las comillas de las cadenas de texto ya que al crear el post las comillas normales son sustituidas por otro tipo de comillas y al copiarlo tal cual en el editor de scripts de Velneo dará error y no funcionará el proceso.


([N3] ereitmann) #9

Gracias Nuevamente


([N4] bitcodesoft) #10

Otro pequeño apunte, la cadena que se obtiene es bastante larga, para acortar la firma se puede utilizar la función de Velneo, calcMD5, ejemplo:

Set(HARDWAREID,calcMD5(HARDWAREID))


([N3] ereitmann) #11

Hola Bitcodesoft, mira cree el archivo JavaScript con el nombre HardwareID.js, le corregí las comillas, (utilice el corrector de sintaxis por las dudas me quedara algo), luego cree el proceso tipo javascript con el archivo script creado antes,
Este Proceso
1 Es sin origen y sin destino ?? (asi lo hice)
2 en el proceso (en sus instrucciones)no puse nada, y agregue al mismo una variable local que la llame como dijiste HARDWAREID

Luego creee un formulario sin origen con una variable local igualmente llamada HARDWAREID

y con un boton que llama a ejecutar proceso en primer plano, pero hasta alli llegue y no sucede nada.
Seguramente algo me falta ya que no comprendo muy bien el mecanismo de todo esto


([N4] bitcodesoft) #12

Para obtener el valor de la variable tienes que crear un objeto con el proceso
dispararlo en primer plano, luego con Get variable local de objeto, obtienes el valor de HARDWAREID (tipo alfabético).



([N3] ereitmann) #13

Ok ahora esta, ya me sale la cadena superlarga que recortare como sugeriste
Una consulta mas en realidad dos, esta verificación se hace en el servidor o en el local? (en principio esta solución a proteger es monopuesto pero pregunto para saber)
y la ultima que cambios en el hardward de la maquina afectarían esta especie de licencia por ejemplo (como no se bien que controla) si le agrega memoria? el modem ? o solo afectraia al disco rigido (cambios que haga ) y placa Madre?

saludos y nuevamente Muchas Gracias


([N4] bitcodesoft) #14

Las funciones Nativas de Velneo que ofrecen información sobre el sistema son bastante limitadas, en este caso se obtiene el tipo de SO 32 o 64 bits, el sistema operativo( MAC, Windows Linux), el nombre del SO, la memoria instalada y la Mac de las tarjetas de red.

Lógicamente si aumentas la memoria, obtendrás un ID diferente, las tarjetas de red suelen ir integradas en la placa, no se suelen poner unas nuevas ya que si se estropea la tarjeta integrada es un mal síntoma y se suele cambiar la placa entera.

La función siempre la tienes que disparar en local (1er plano), no importa que esté funcionando en la nube, el ID siempre será el del PC cliente desde el que se dispara dicha función.

Por supuesto no es todo lo profesional que debiera ser, pero sirve y es totalmente nativo, si necesitas algo más complejo existen DLL en el mercado que te pueden servir, incluida la que yo comercializo, pero solo te serviría para Windows.


([N3] ereitmann) #15

me conecto contigo en privado.