Aqu铆 les paso unas pruebas que estoy haciendo para proteger nuestras aplicaciones contra la pirater铆a.
http://mastersoft3000.com/publico/protect.zip
Parto de algunos premisas:
1.- La aplicaci贸n debe controlar constantemente la existencia de la llave USB correcta.
Se me ocurren dos formas: Usando un Timer (demasiado pesado), 贸 controlando en puntos cr铆ticos de la aplicaci贸n. Prefiero esta segunda forma.
En el ejemplo, al inicio de cada funci贸n invocada en el men煤 principal del progama se pone la rutina que controla la existencia de la llave y su correcta identificaci贸n.
Con esto evitamos que inicien la apliaci贸n en un PC, desconecten la llave, la pasen a otro PC y nos piratien
2.- Las rutinas de control no deben ralentizar de ninguna manera a la aplicaci贸n. Por esto creo que la la informaci贸n correspondiente a la WMI se debe obtener una sola vez y al inicio, y guardar sus respuestas en variables a ser utilzadas posteriormente sin necesidad de volver a efectuar llamadas a la WMI. Esto incluye la indentificaci贸n de la unidad que tiene el control, ya que en un equipo puede estar conectado m谩s de un USB a la vez, entonces, el control debe identificar cu谩l es la unidad a la que est谩 conectado nuestra USB de seguridad.
Para guardar en variables utilic茅 la clase TPublic de Daniel Andrade (Alguien sabe qu茅 es de 茅l ?). Cada cual utilice el m茅todo que mejor le parezca.
3.- El control deber铆a dar respuesta negativa en tres casos:
a.- NO hay USB conectado al equipo
b.- Hay USB conectado pero no est谩 serializado (protegido)
c.- Hay USB y est谩 serializado, pero el password no corresponde
Si se les ocurren m谩s casos, por favor, aportenlos......
Falta encontrar la forma de controlar aplicacione en red: Por ejemplo, si un cliente adquire una apliacion para uso en un servidor y tres terminales, el programa deber铆a ejecutarse en 4 equipos simult谩neamente, c贸mo controlar que no haya un quinto equipo en ejecuci贸n ?
As铆 que amigos, aporto lo que tengo hasta ahora. Si les parece 煤til, por favor ay煤denme a completarla, de forma que fortalezcamos a煤n m谩s a FIVEWIN y protejamos nuestras apliaciones sin encarecerlas con los altos costos que tienen las Llaves SENTINEL o HASP o cualquier otra (por hardware o software), y lo m谩s importante, tenemos el c贸digo y el control a nuestra conveniencia.
Para probar adecuadamente el ejemplo que adjunto, primero por el men煤 "Set" seteen su llave. El password que elijan por favor escr铆banlo al inicio de la Function Main() en Protect.prg:
oWMI:cElPassw := SuPassword
Recuerden que oWMI:cElPassw es generada con la clase TPublic. Pueden utilizar otro m茅todo. Sin embargo, para facilitar las pruebas, adjunto tambi茅n la clase para quienes no la tengan. Tambi茅n adjunto el codigo con funciones de Marson de Paula a las que he hecho algunas modificaciones.
El ejemplo es un modelo b谩sico. A partir de ah铆, se puede sofisticar al gusto y necesidades de cada uno, tal como: Nombre de la aplicaci贸n, del cliente, prestaciones habilitadas o deshabilitadas, n煤mero m谩ximo de terminales, fechas de vencimiento de Demos, etc. Todos estos datos se incorporan encriptados en el archivo "info.bin" (del ejemplo de Antonio). Sugiero que cada uno le ponga un nombre menos obvio a "info.bin". Creo que con imaginaci贸n las posibilidades son extensas. He hecho diferentes pruebas incluyendo fechas de vencimiento para Demos, y todo va OK. S贸lo me falta lo del control de RED. Las pruebas las he realizado sobre Windows XP y Windows Vista y funcionan perfecto. Para Windows'98, creo que hay que instalar un parche de Microsoft que habilite el servicio WMI. No le he probado pues no tengo Windows'98 ni tampoco mis clientes.
El proceso de protecci贸n podr铆a estar embebido en la aplicaci贸n a proteger, o mejor a煤n, en una DLL que se invoca desde el programa protegido.
La idea es que entre todos, si les parece, lo hagamos, y por supuesto, GRATIS Y CON CODIGO FUENTE INCLUIDO como aporte a todos los FIVEWINEROS (y por lo universal del c贸digo para todo el mundo), sin
ego铆smos.
Ojal谩 regres谩ramos a aquellas maravillosas 茅pocas del maestro Manuel Mercado, de Daniel Andrade, Ricardo Ram铆rez, Arturo Tamayo Daza, Hernan Ceccarelli, The Full, Ram贸n Avenda帽o, ufffff, la lista es laaaarga, quienes con una calidad humana extraordinaria y verdadero sentido de
compa帽erismo donaron su formidable c贸digo a la comunidad.
Espero sus comentarios, aunque sea para decirme que esto no sirve para nada. Todos son bienvenidos.
Un abrazo,
Carlos Gallego
Saludos,
Carlos Gallego
*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***