Aporte: Protección de Aplicaciones con USB PenDrive

Postby mmercado » Sat Feb 23, 2008 9:41 pm

Hola Carlos:

Déjame decirte que desde que posteaste tu contribución me pareció de lo más importante, y si no he comentado nada es que no me he podido dar un tiempo para probarla, seguramente muchos participantes del foro están en las mismas circunstancias, de hecho por razones de trabajo, no siempre podemos darnos el lujo de detener nuestros desarrollos para probar algo nuevo por bueno que parezca.

En lo personal tengo ya planeado probarlo en la próxima instalación de alguna de mis aplicaciones que será muy probablemente la próxima semana.

Ojalá que hubiera más contribuciones de este tipo para que la participación en estos foros siga teniendo este invaluable valor agregado (valga la rebuznancia).

Un abrazo

Manuel Mercado
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Postby cuatecatl82 » Sat Feb 23, 2008 10:38 pm

Estimado Carlos:

Ahora trabajo en la segunda Actualización de tu aporte, si en efecto seria una excelente herramienta si la hacemos más versatil y con las funciones que tienes pensadas, yo tampoco se nada de clases, así que vamos a tener que trabajar juntos para poder hacerla productiva y beneficiosa para la comunidad.

Por el momento he dejado mi proyecto de trabajo a un lado, ya que ésta es la parte que necesito implantar y probar y que más que con tu ayuda y gracias a tu contribución.

Ahora que se lo que deceas que haga el candado trabajare en lo más que pueda para tenerla trabajando y pruebarla lo antes posible...


Recibe un Cordial Saludo...

Victor Daniel
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby Cgallegoa » Sat Feb 23, 2008 10:42 pm

Maestro Manuel, que gusto.

Viniendo de tí esas palabras, son un estímulo. Gracias. Si tu le metes la mano, garantizamos el éxito.

Un abrazo,

Carlos Gallego
Cgallegoa
 
Posts: 487
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Silvio » Mon Feb 25, 2008 8:00 am

someone can say how I can create a system to protect an application with a number license type ( NUMBER AND CHARACTERS) XXXXX-XXX-XXXXXXX-XXXXX :
I want insert these information :
Name od customer
Number of people
Date
number license

Have you an sample ?
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby cuatecatl82 » Mon Mar 03, 2008 3:43 pm

Estimados Colegas de foro:

Les pongo a su disposición unas cuantas correcciones y mejoras estéticas a la idea y contribución de mi estimado colega Carlos Gallego, las cuales les explico como funcionan para que tengan una idea mas clara y preciza de lo que se trata este proyecto..

http://hyperupload.com/download/02b854a ... s.zip.html

Hay algunas pasos que es necesario establecer dentro del KeyGen para generar la proteccion las cuales detallo a continuación...

Establecer la contraseña: Aqui se especificará una contraseña que puede ser de 1 a 15 caracteres y que servira para poder encriptar el nombre de la aplicación a proteger, el numero de terminales a usar y la clave de instalación de nuestra aplicación.

Aplicación a Proteger: Este campo contendra el flag que estara guardado dentro de nuestra aplicación y que el candado verificara que sea corecta al iniciarse para poder ejecutarse.

Terminales: Aqui se establecera el numero de terminales autorizadas a usarse.

Una vez establecidos estos parametros y precionar el boton Generar Protección, nuestro candado genera una clave de 25 letras alfanumericas que será despues nuestra clave de instalación que sera reconocida por nuestro instalador de la aplicación.

Es posible tambien generar e imprimir nuestra Licencia de Uso la cual contendra tambien impresa la clave de Instalación unica e irrepetible para cada Pen Drive, esto todavía lo estoy diseñando..

Aún estoy diseñando nuevas formas y parámetros de configuración, para hacer más fuerte y segura nuestra protección...

Seguramente a alguien más se le ocurrirán mas ideas.. si gustan las pueden aportar para que las podamos hechar a volar..



Mi estimado Carlos: No he sabido nada de ti, no se si tengas alguna otra actualización disponible, ojala y revises lo poco que he modificado para conocer tu opinión..

Espero todas sus criticas y aportaciones..

Un Abrazo a todos desde México...


I.S.C. Víctor Daniel cuatécatl León
Soluciones y Diseño de Software Empresarial
www.soldisoft.unlugar.com
www.sisa.unlugar.com
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby Cgallegoa » Mon Mar 03, 2008 7:00 pm

Hola victor:

Revisé tu ejemplo, y está perfecto, estamos en la misma onda.

Por mi parte, continué trabajando en dos sentidos. Pasar todo a Clases y encontrar la forma de controlar la llave en redes.

Generé tres clase:
- TProtect : Se encargará de verificar la llave y su protección. Es la principal a utilizar en la aplicación que se está protegiendo
- TProtec2 : Maneja la interfase de parametrización de la llave
- TChkSock: Controla, mediante SOCKETS la red.

Con esta última, me voy a extender un poco:
Con esta Clase se lleva el control de cuántas terminales están conectadas para controlar que no se exceda el límite de las autorizadas. Verifica cada cierto tiempo, a través de un timer, que las terminales que han ingresado a usar la aplicación protegida sigan activas y no hayan tenido salidas intempestivas por corte de energía o algo así, En caso de que alguna o algunas terminales se hayan caído, la Clase las da de baja y actualiza el número de licencias en uso. Si las terminales que acceden salen adecuadamente, igual, el control de licencias se actualiza automáticamente.

ME FUNCIONA PERFECTO, QUE EMOCIÓN, peeeeeero.......................

Imagínate el siguiente ambiente de Red P2P: En la máquina "A" instalas la aplicación a proteger (Será el SERVIDOR). En esta máquina conectas la USB PenDrive que controla tu aplicación. Las máquinas "B", "C", "NNN" serán las Terminales (CLIENTES) que acceden mediante red a tu aplicación en el SERVIDOR. Cada vez que entra una terminal, automáticamente comienza y mantiene el control de licencias, para lo cual, cada terminal debe leer en el servidor la USB, verificar que todo está correcto y continuar o nó trabajando. Pero, para verificar que todo esté correcto debe COMEZAR POR LEER EL SERIAL DE LA LLAVE. Hasta aquí llegué..................

Por más que he intentado, probado e investigado, no logro que desde una terminal se obtenga el serial de la USB CONECTADA EN OTRO COMPUTADOR. Probé con todas las opcions del WMI y CMI de Microsoft y nada. Parece que no se puede. En cuyo caso, nuestro proyecto servirá solo para apliaciones Monousario :(

Por otro lado, este proyecto me ha demandado ya ocho días a full time, y como ya llegué a mi límite técnico y estoy corto de tiempo, decidí suspenderlo, pues para uso en monousuarios ya logré lo que necesitaba.

Estaba intentando caminar hacia lograr algo parecido al servicio que prestan las SENTINEL y otras en el mercado, que creo, sería el verdadero valor de este proyecto, y eso incluye, indispensablente, manejo de redes. POR EL OBSTACULO DE NO PODER OBTENER EL SERIAL DE LA LLAVE CONECTADA EN OTRO EQUIPO DISTINTO AL QUE SE ESTA EJECUTANDO LA APLICACION, quedé estancado. La única forma de seguir es con ayuda de los maestros y hermanos mayores del grupo. Yo ya llegué a mi límite técnico y de tiempo.

Si gustas y me das un par de días, te mando a tu correo lo que tengo avanzado. Si alguien más está interesado y puede ayudar a romper la barrera, por favor hágalo saber.

Saludos,

Carlos Gallego
Cgallegoa
 
Posts: 487
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby cuatecatl82 » Mon Mar 03, 2008 10:14 pm

Ok mi estimado Carlos....

Me quedo en espera de de que me envies a mi correo privado las ultimas modificaciones que hayas hecho, las reviso y de paso veo que y como podemos mejorarla para que ttabaje en red...

Se me ocurrio una idea, pero es necesario que primero revise lo ultimo que tenagas para no hacer una desviación y trabajar en dos proyectos cada uno por nuestra cuenta..

Saludos.. y en espera..
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby cuatecatl82 » Wed Mar 05, 2008 3:22 pm

Estimado Carlos:.

Estare en espera de tus cambios y de la clase que ya generaste via correo privado.. Se me ocurrurrieron algunas ideas para el control del candado desde terminales en red, pero es necesario que revise lo que ya avansazte para no tener 2 proyectos similares.


Abrazsos y en espera..
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby cuatecatl82 » Mon Mar 24, 2008 7:24 pm

Saludos a todos los colegas del foro:

Esta vez para informarles que se ha agredado a este proyecto ni mas ni menos que mi estimado amigo William Morales (wmormar)

Y que mas que para presentarles y ofrecerles a ustedes la idea de este proyecto pero ahora pasado 100% a Clase, (Gracias Willi, lo sigo diciendo ¡ ERES GRANDE MAESTRO !)

Aún estamos en la implementación de que trabaje en red con terminales de trabajo, si alguien más se quiere sumar al proyecto y si tiene alguna idea de como hacerlo sera bienvenido..

Saludos Carlos Gallego.. que es de ti amigo, ya no supe nada de ti.. por si lees este post. para que nos imformes si hay mas cambios o ideas para que nos pongamos al corriente..


http://rapidshare.com/files/102046732/USBLock.zip.html

Saludos y en espera de sus comentarios..

I.S.C. Víctor Daniel Cuatécatl León.
Soluciones y Diseño de Software Empresarial.
www.soldisoft.unlugar.com
www.sisa.unlugar.com
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby ARCC » Mon Mar 24, 2008 7:51 pm

Buen día para todos...

Primero que todo quisiera felicitarlos por la iniciativa de realizar este sistema de seguridad, ahora bien tengo unas preguntas y unas ideas las cuales les planteo!.

cuatecatl82 wrote:Aún estamos en la implementación de que trabaje en red con terminales de trabajo, si alguien más se quiere sumar al proyecto y si tiene alguna idea de como hacerlo sera bienvenido..


Que quieres o necesitas hacer para que trabaje en red, tengo varias ideas que te quisiera plantear a ver si funcionan. Ej

- Puedes crear una sola llave (ej en el servidor) y que todas las estaciones de trabajo verifique en ella la cantidad de licencias y si es una llave valida entre otras cosas, esto para no tener un cerro de llaves, y tener menos puntos huecos de seguridad.

- Acabo de colocar una actualización de la clase TDiskInfo en utilidades (te recomiendo que la mires), con ella puedes contar el número total de cluster, sectores y de bytes entre otras propiedades de la llave USB, esto por si la llegan a copiar (cosa que van a tratar de hacer) no puedan utilizarla porque el tamaño sea diferente, o sea que no solo se proteja con el serial del disco el cual tambien da la clase, sino que al copiarla en un pendrive diferente en tamaña no funcione. Bueno si te sirve una de estas ideas con gusto puedo colaborar si así lo creen conveniente
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

Postby cuatecatl82 » Wed Mar 26, 2008 1:20 am

Saludos ARCC:

Gracias por tu interes en este proyecto, revise clase TDiskInfo y se ve fabulosa, resultan interesantes muchas cosas que pueden ser de utilidad para esta herramienta de protección de software, nos será de mucha utilidad e implementaremos algunos datos de la misma.

Con lo que respecta a tus ideas estas en lo correcto, la idea es tener un solo disco USB que funcione como candado, actualmente funciona solo en terminales monousuario (1 sola mákina), el problema nace al intentar leer el disco USB desde las terminales de trabajo y validar el número de serie y las terminales que ya estan en uso.

Así mismo, una vez que podamoes obtener estos datos desde las terminales tambien faltaría como controlar si en las terminales en las que se usa el sistema, la aplicación fue cerrada de forma adecuada y no de forma imprevista por cortes de energia electrica o por colapsos de la PC.
ya que esto tambien afectaria el numero de terminales permitidas para el acceso del programa.

si por ahi tienes algo que nos pueda ayudar o dar alguna idea de como y por donde empezar te lo agradeceriamos bastante.

Saludos...
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby ARCC » Wed Mar 26, 2008 2:07 pm

Buen día para todos....

cuatecatl82 wrote:Saludos ARCC:

el problema nace al intentar leer el disco USB desde las terminales de trabajo y validar el número de serie y las terminales que ya estan en uso.


Me puedes dar por favor más detalles del problema en sí, porque con TDiskInfo puedes leer el serial de cualquier unidad inclusive de red.

cuatecatl82 wrote:Así mismo, una vez que podamoes obtener estos datos desde las terminales tambien faltaría como controlar si en las terminales en las que se usa el sistema, la aplicación fue cerrada de forma adecuada y no de forma imprevista por cortes de energia electrica o por colapsos de la PC.
ya que esto tambien afectaria el numero de terminales permitidas para el acceso del programa.


Se me ocurre una idea rápida y en frió, que tal si el sistema de protección manejase un registro de todas las conexiones (de cada estación o cliente) en la misma llave, en el cual lleve por supuesto la cantidad de licencias entre otros atributos de protección, entonces cuado se conecte una estación o cliente y según la lógica de programación se restaría o sumarian las licencias hasta completar las licencias disponibles, hasta aquí no les he dicho nada que no sepan.

Ahora vamos a tacar el problema, en el registro de control deberá llevar entre sus campos uno que identifique el serial del disco de cada estación de trabajo, como ese número es único nos va a servir para identificar la sesión activa. Ej Registro de control con 3 licencias disponibles.

Se conectan 3 estaciones y ya no hay más licencias disponibles, estas se validan con un contador cosa que ustedes saben hacer.

ESTACION1, serial del disco 2420-EF04
ESTACION2, serial del disco 5040-AF10
ESTACION3, serial del disco EF04-AA40

Supongamos que hubo un fallo de energía o simplemente se colgó el S.O., el registro de control va a tener almacenado todas las sesiones que estaban activa en el momento; ok aquí viene lo bueno, cuando intente acceder de nuevo la estación X, lo primero que va a realizar el sistema de protección es buscar el serial del disco en el registro, si la sesión quedó abierta la borro y creo una nueva, o simplemente y creo que es mejor no sumo o resto licencias y seguiría activa la sesión de esa estación; también se puede dar una advertencia de sesión abierta para que el usuario sepa que paso algo pero no lo creo conveniente, mientras menos intervención de los usuarios será más segura la llave.

Considero que ese registro de control debe ser independiente al de las licencia, ya que si hay algún problema inesperado con las licencias, se le el indicaría a los todos los usuario que salgan de la aplicación para eliminar el archivo de registro de la llave para que se genere de nuevo.

Quisiera si se puede tomar de base lo que han hecho hasta ahora para integrar mi idea a ver si funciona para que se pueda implementar si así lo creen conveniente
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

Postby cuatecatl82 » Wed Mar 26, 2008 4:40 pm

Buenos Días de nuevo a todos..

Saludos ARCC:

En respuesta a tu petición, por supuesto que si, considero que entre más intervengamos en el proyecto más grande y provechoso será, si gustas integrarte al equipo eres bienvenido, ahora estoy integrando la Clase TDiskInfo al candado, solo que tengo una duda..

Es posible leer y saber el numero de serie de un disco USB desde una terminal de trabajo pero sin que disco USB este compartido en el Servidor..?

La idea es que el usuario interactue lo menos posible con todo este show, es decir que el usuario final instale la aplicacion y lo use en X cantidad de equipos permitidos siempre y cuando este el USB conectado y que no tenga que meter mano a nada mas que eso, teniendonos que olvidar de decirle al usuario que comparta su disco USB para que las terminales puedan trabajar..

Estoy revisando tu idea y estoy tratando de plantearlo con todo esto para que quede lo más pronto posible..

Saludos..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby ARCC » Wed Mar 26, 2008 9:20 pm

Buen día para todos...

cuatecatl82 wrote:si gustas integrarte al equipo eres bienvenido, ahora estoy integrando la Clase TDiskInfo al candado, solo que tengo una duda..

Es posible leer y saber el numero de serie de un disco USB desde una terminal de trabajo pero sin que disco USB este compartido en el Servidor..?


Claro que quisiera integrame....! :lol:

Bueno el poder leer el USB en red es problema de recursos de red o sea, si el USB no está compratido solo hay una forma de llegarle y es a través del recurso administrativo del S.O, si el USB está en la unidad P por ejemplo y el servicio servidor del PC está activo, y eres un usuario administrador del PC, puedes llegarle colocando \\SERVIDOR\P$, ya que la letra del recurso + $ es el recurso administrativo oculto asignado por defecto para las unidades en los servidores MS, pero tendrías que colocar a los todos los usuarios como administradores del servidor, y eso no es correcto porque crearías muchos huecos de seguridad en tu red local.

cuatecatl82 wrote:La idea es que el usuario interactue lo menos posible con todo este show, es decir que el usuario final instale la aplicacion y lo use en X cantidad de equipos permitidos siempre y cuando este el USB conectado y que no tenga que meter mano a nada mas que eso, teniendonos que olvidar de decirle al usuario que comparta su disco USB para que las terminales puedan trabajar..


100% deacuerdo contigo, pero lamentablemente este va a ser un mal necesario para que funcione la llave o sea, creo que hay que colocar en el dialogo de creación de la llave un check que indique si va a usarse es modo local o en red, si es en red habilitar un get para colocar la ruta del Servidor y Recurso donde estará, para que el mismo sistema se encargue de verificar en esa ruta la existencia de la llave y valide los datos. Ej.

DIALOGO DE CREACION DE LLAVE

.....
....
Modo red si/no = SI
Ruta de la llave: \\SERVIDOR\RECURSO_COMPARTIDO

para verificar leemos el registro de control y extraemos la ruta entre otras cosas para verificar Ej. "\\SERVIDOR\RECURSO_COMPARTIDO" (pero hay que compartir en el servidor la llave a todos los usuarios, es OBLIGATORIO :cry:), cargamos el recurso de forma oculta (dentro del mismo sistema) y allí hacemos las operaciones que ya sabemos de validación. Ojo la idea es que el recurso no esté conectado al PC, así que para el usuario estará oculto y será transparente la conexión y verificación de la llave :lol: .

Voy a realizar pruebas con la clase para adaptarla a verificar directamente recursos de red sin asignanar una letra, para utlizarla para lo planteado anteriormente.

cuatecatl82 wrote:Estoy revisando tu idea y estoy tratando de plantearlo con todo esto para que quede lo más pronto posible..


Ok amigo ojalá lo logres pronto. Suerte y por favor informame como vas para ver en que puedo ayudar.
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

Postby ARCC » Wed Mar 26, 2008 10:38 pm

Buen día para todos...

Que tal amigo cuatecatl82, me complace informarle que ya quedó la modificación en la clase TDiskInfo con los recursos de red, ahora solo tienes que colocar en el método NEW o en el Drive el recurso de red y te dará todo lo relacionado a la unidad :lol:

Ahora podemos implementarlo como te mencioné anteriormente para leer la llave desde el servidor sin conectar ningún recurso :lol: :lol: :lol:

Nota: Voy saliendo para mi casa y en cuanto llegue coloco el link para que por favor pruebes lo comentado. Tambien realicé prueba con Vista y funciona Ok.
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 59 guests