Page 1 of 1

Seguridad antipirateria

PostPosted: Wed Mar 19, 2008 12:32 pm
by Loren
Compañeros:

Intento evitar las copias piratas de mi sistema mediante la lectura del nº de serie del PC. Lo he intentado con 2 metodos distintos:
a) nSerialHD( "C:" ) --> funcion de FWH
b) mediante oDisk := TDiskInfo():New( "C:" )
nserie:=oDisk:NumSerie() //Numero de Serie

En ambos casos, me devuelve un numero pero SIEMPRE es el mismo probandolo incluso en distintos PC.... Deberia ser distintos, no? ¿ Como es posible ???

Alguna solución ??

Mil gracias.
LORENZO

Re: Seguridad antipirateria

PostPosted: Wed Mar 19, 2008 1:41 pm
by ARCC
Buen día para todos...

Loren wrote:Compañeros:

Intento evitar las copias piratas de mi sistema mediante la lectura del nº de serie del PC. Lo he intentado con 2 metodos distintos:
a) nSerialHD( "C:" ) --> funcion de FWH
b) mediante oDisk := TDiskInfo():New( "C:" )
nserie:=oDisk:NumSerie() //Numero de Serie

En ambos casos, me devuelve un numero pero SIEMPRE es el mismo probandolo incluso en distintos PC.... Deberia ser distintos, no? ¿ Como es posible ???

Alguna solución ??

Mil gracias.
LORENZO


Que tal Lorenzo, puedes mostrar por favor el código que utilizas para crear y utilizar el objeto oDisk de TDiskInfo, ya que cuando creas y utilizas el objeto debes hacerlo de esta forma:

oDisk := TDiskInfo():New( "C:" ) // Lo creas

oDisk:NumSerie() //Numero de Serie de C:\

oDisk:Drive( "D:" ) // colocas la nueva unidad

oDisk:NumSerial() // muestras el serial de D:\ el cual acabas de asignar.

Si necesitas utilizar una unidad diferente a C:\ puedes crearlo en método new directo, ya que por defecto se utiliza la unidad C:\. Ejemplo

oDisk := TDiskInfo():New() // Toma la unidad C:\ por defecto
oDisk := TDiskInfo():New( "D:" ) // Así o
oDisk := TDiskInfo():New( "E:" ) // Así

Nota: Estoy trabajando en unas mejoras en la clase TDiskInfo y al final de esta semana la público para que todos la puedan utilizar

PostPosted: Wed Mar 19, 2008 1:45 pm
by Raymundo Islas M.
LOREN

Puedes usar la opcion de busqueda en este mismo foro, ahi obtendras todas las respuestas a tus dudas.

( prueba a usar diferentes palabras al tema que buscas y seguro lo encontraras )

Hay varios post de un metodo que anuncio Antonio hace poco en el cual se usa una memoria USB como dispositivo de proteccion e incluye codigo listo para usare.


En mi caso, llevo mucho tiempo usando unas llaves USB de la cia Aladdin con muy buenos resultados.


Saludos

PostPosted: Wed Mar 19, 2008 2:00 pm
by GUSPRE
El problema esta en que seguramente estas probando sobre Windows 98, en versiones posteriores a este sistem operativo, funciona bien, pero en W98 siempre te dará el mismo número incluso en distintas maquinas..

saludos,

PostPosted: Wed Mar 19, 2008 2:06 pm
by GUSPRE
c_se:=l2hex(nSerialHD("C:\"))

Esto funciona bien incluso en W98, mi recomendación es que además generes un PIN de activación y encryptes todo..

saludos,

PostPosted: Wed Mar 19, 2008 6:18 pm
by mantonio_08
Amigo:

Yo uso esto, nserie:=Str(nSerialHD()) y luego la encripto.

Este es mi codigo:

Saludos,
Antonio
Function Chequea()
Local Nserie,cEncriptado
nserie:=Str(nSerialHD())
if !Uso_red((Memvar->c_empre ),97,.f.,,,)
Tone(3000,1);Tone(4000,1);Tone(5000,1)
MsgInfo("Error ESTE SISTEMA ES UNA COPIA")
Return (.F.)
Endif
Go top
if eof().or.(Memvar->c_empre)->Fon_emp=spac(30)
MsgStop(" NO EXISTE DATOS DEFINIDOS, POSIBLE COPIA ")
close all
Return .f.
Endif
cEncriptado := Cript((nSerie),(Memvar->var_enc))
If cEncriptado#trim((Memvar->c_empre)->Fon_emp)
MsgStop(" ERROR: ESTE SISTEMA ES UNA COPIA ")
close all
Return .f.
endif
Dbclosearea()
Return .t.