FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Seguridad antipirateria
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Seguridad antipirateria
Posted: Wed Mar 19, 2008 12:32 PM

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

Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
Re: Seguridad antipirateria
Posted: Wed Mar 19, 2008 01:41 PM
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
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Seguridad antipirateria
Posted: Wed Mar 19, 2008 01:45 PM

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

FWH 10.6 + xHarbour + Borland 582
Posts: 94
Joined: Thu May 11, 2006 10:00 PM
Seguridad antipirateria
Posted: Wed Mar 19, 2008 02:00 PM

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,

GUSTAVO PREDIGER
Posts: 94
Joined: Thu May 11, 2006 10:00 PM
Seguridad antipirateria
Posted: Wed Mar 19, 2008 02:06 PM

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,

GUSTAVO PREDIGER
Posts: 330
Joined: Fri May 25, 2007 09:06 PM
Seguridad antipirateria
Posted: Wed Mar 19, 2008 06:18 PM

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.

Continue the discussion