executar um programa so para um HD
como excutar um programa somente para um HD. se o cliente tentar instalar em outro computador dar uma mensagen de erro!
grato,
Adriano.
grato,
Adriano.
Xadriano
Curtidas 0
Respostas
Paullsoftware
18/04/2006
vc pode usar essa unit para pegar o serial do HD e depois aplicar os critérios necessários para o bloqueio...
pesquisa aqui no forum que existe várias dicas sobre como usar essa unit e como proteger o seu software :wink:
unit IdeSN;
interface
function SerialNum(FDrive:String) :String;
function GetIdeSN : String;
function GetIdeDiskSerialNumber( ControllerNumber, DriveNumber : Integer ) : String;
//=============================================================
implementation
uses
Windows,
SysUtils; // only for Win32Platform, SysErrorMessage and class Exception
{$IFDEF VER150}
{$DEFINE VER140}
{$ENDIF}
{$IFNDEF VER140}
procedure RaiseLastOSError;
begin
RaiseLastWin32Error;
end;
{$ENDIF}
//Funçãobásica para detectar o serial lógico do HD, usando em windows 9x
Function SerialNum(FDrive:String) :String;
Var
Serial:DWord;
DirLen,Flags: DWord;
DLabel : Array[0..11] of Char;
begin
Try GetVolumeInformation(PChar(FDrive+´:\´),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
Except Result :=´´;
end;
end;
//-------------------------------------------------------------
// Tries to extract the serial number from specified IDE disk.
//
// Parameters:
// ControllerNumber - SCSI port number of the controller.
// DriveNumber - SCSI port number of the controller.
// Notes:
// 1. The parameter ControllerNumber is ignored on Windows 9x/ME platforms and should be 0.
// 2. This function CAN NOT extract SCSI disk serial number.
//
function GetIdeDiskSerialNumber( ControllerNumber, DriveNumber : Integer ) : String;
type
TSrbIoControl = packed record
HeaderLength : ULONG;
Signature : Array[0..7] of Char;
Timeout : ULONG;
ControlCode : ULONG;
ReturnCode : ULONG;
Length : ULONG;
end;
SRB_IO_CONTROL = TSrbIoControl;
PSrbIoControl = ^TSrbIoControl;
TIDERegs = packed record
bFeaturesReg : Byte; // Used for specifying SMART "commands".
bSectorCountReg : Byte; // IDE sector count register
bSectorNumberReg : Byte; // IDE sector number register
bCylLowReg : Byte; // IDE low order cylinder value
bCylHighReg : Byte; // IDE high order cylinder value
bDriveHeadReg : Byte; // IDE drive/head register
bCommandReg : Byte; // Actual IDE command.
bReserved : Byte; // reserved for future use. Must be zero.
end;
IDEREGS = TIDERegs;
PIDERegs = ^TIDERegs;
TSendCmdInParams = packed record
cBufferSize : DWORD; // Buffer size in bytes
irDriveRegs : TIDERegs; // Structure with drive register values.
bDriveNumber : Byte; // Physical drive number to send command to (0,1,2,3).
bReserved : Array[0..2] of Byte; // Reserved for future expansion.
dwReserved : Array[0..3] of DWORD; // For future use.
bBuffer : Array[0..0] of Byte; // Input buffer.
end;
SENDCMDINPARAMS = TSendCmdInParams;
PSendCmdInParams = ^TSendCmdInParams;
TIdSector = packed record
wGenConfig : Word;
wNumCyls : Word;
wReserved : Word;
wNumHeads : Word;
wBytesPerTrack : Word;
wBytesPerSector : Word;
wSectorsPerTrack : Word;
wVendorUnique : Array[0..2] of Word;
sSerialNumber : Array[0..19] of Char;
wBufferType : Word;
wBufferSize : Word;
wECCSize : Word;
sFirmwareRev : Array[0..7] of Char;
sModelNumber : Array[0..39] of Char;
wMoreVendorUnique : Word;
wDoubleWordIO : Word;
wCapabilities : Word;
wReserved1 : Word;
wPIOTiming : Word;
wDMATiming : Word;
wBS : Word;
wNumCurrentCyls : Word;
wNumCurrentHeads : Word;
wNumCurrentSectorsPerTrack : Word;
ulCurrentSectorCapacity : ULONG;
wMultSectorStuff : Word;
ulTotalAddressableSectors : ULONG;
wSingleWordDMA : Word;
wMultiWordDMA : Word;
bReserved : Array[0..127] of Byte;
end;
PIdSector = ^TIdSector;
const
IDE_ID_FUNCTION = $EC;
IDENTIFY_BUFFER_SIZE = 512;
DFP_RECEIVE_DRIVE_DATA = $0007c088;
IOCTL_SCSI_MINIPORT = $0004d008;
IOCTL_SCSI_MINIPORT_IDENTIFY = $001b0501;
DataSize = sizeof(TSendCmdInParams)-1+IDENTIFY_BUFFER_SIZE;
BufferSize = SizeOf(SRB_IO_CONTROL)+DataSize;
W9xBufferSize = IDENTIFY_BUFFER_SIZE+16;
var
hDevice : THandle;
cbBytesReturned : DWORD;
s : String;
pInData : PSendCmdInParams;
pOutData : Pointer; // PSendCmdInParams;
Buffer : Array[0..BufferSize-1] of Byte;
srbControl : TSrbIoControl absolute Buffer;
procedure ChangeByteOrder( var Data; Size : Integer );
var ptr : PChar;
i : Integer;
c : Char;
begin
ptr := @Data;
for i := 0 to (Size shr 1)-1 do
begin
c := ptr^;
ptr^ := (ptr+1)^;
(ptr+1)^ := c;
Inc(ptr,2);
end;
end;
begin
Result := ´´;
FillChar(Buffer,BufferSize,#0);
if Win32Platform=VER_PLATFORM_WIN32_NT then
begin // Windows NT, Windows 2000
Str(ControllerNumber,s);
// Get SCSI port handle
hDevice := CreateFile(
PChar(´\\.\Scsi´+s+´:´),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 );
if hDevice=INVALID_HANDLE_VALUE then RaiseLastOSError;
try
srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);
System.Move(´SCSIDISK´,srbControl.Signature,8);
srbControl.Timeout := 2;
srbControl.Length := DataSize;
srbControl.ControlCode := IOCTL_SCSI_MINIPORT_IDENTIFY;
pInData := PSendCmdInParams(PChar(@Buffer)+SizeOf(SRB_IO_CONTROL));
pOutData := pInData;
with pInData^ do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := DriveNumber;
with irDriveRegs do
begin
bFeaturesReg := 0;
bSectorCountReg := 1;
bSectorNumberReg := 1;
bCylLowReg := 0;
bCylHighReg := 0;
bDriveHeadReg := $A0 or ((DriveNumber and 1) shl 4);
bCommandReg := IDE_ID_FUNCTION;
end;
end;
if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT, @Buffer, BufferSize, @Buffer, BufferSize, cbBytesReturned, nil ) then RaiseLastOSError;
finally
CloseHandle(hDevice);
end;
end
else
begin // Windows 95 OSR2, Windows 98
hDevice := CreateFile( ´\\.\SMARTVSD´, 0, 0, nil, CREATE_NEW, 0, 0 );
if hDevice=INVALID_HANDLE_VALUE then RaiseLastOSError;
try
pInData := PSendCmdInParams(@Buffer);
pOutData := PChar(@pInData^.bBuffer);
with pInData^ do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := DriveNumber;
with irDriveRegs do
begin
bFeaturesReg := 0;
bSectorCountReg := 1;
bSectorNumberReg := 1;
bCylLowReg := 0;
bCylHighReg := 0;
bDriveHeadReg := $A0 or ((DriveNumber and 1) shl 4);
bCommandReg := IDE_ID_FUNCTION;
end;
end;
if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA, pInData, SizeOf(TSendCmdInParams)-1, pOutData, W9xBufferSize, cbBytesReturned, nil ) then RaiseLastOSError;
finally
CloseHandle(hDevice);
end;
end;
with PIdSector(PChar(pOutData)+16)^ do
begin
ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber));
SetString(Result,sSerialNumber,SizeOf(sSerialNumber));
end;
Result := Trim(Result);
end;
//-------------------------------------------------------------
function GetIdeSN : String;
var
iController, iDrive, maxController : Integer;
begin
Result := ´´;
maxController := 15;
if Win32Platform<>VER_PLATFORM_WIN32_NT then maxController := 0;
for iController := 0 to maxController do
begin
for iDrive := 0 to 4 do
begin
try
Result := GetIdeDiskSerialNumber(iController,iDrive);
if Result<>´´ then Exit;
except
// ignore exceptions
end;
end;
end;
end;
end.pesquisa aqui no forum que existe várias dicas sobre como usar essa unit e como proteger o seu software :wink:
GOSTEI 0
Xadriano
18/04/2006
eu tendo o serial e ip, como faço para bloquear?
GOSTEI 0
Paullsoftware
18/04/2006
Você armazena essas informações em algum lugar, registro ou arquivo, de preferência criptografadas e toda vez que seu sistema abrir vc compara as informações gravadas com as atuais do computador. :wink:
GOSTEI 0
Xadriano
18/04/2006
eu usei um programa que descobri o serial e o ip da maquina, eu queria era um codigo que so execute o programa só se se essas informações baterem com a maquina.
adriano
adriano
GOSTEI 0
Xadriano
18/04/2006
eu tenho um programa que descobrir o serial e o ip da maquina, qual codigo uso para o programa so abri nesta maquina?
adriano.
adriano.
GOSTEI 0
M@gnun
18/04/2006
blz paullsoftware, eu uso o idesn tmb... mas tem um porem ...
Guardo as informaçoes no registro e em alguns arquivos, certo? mas e se o usuario formatar a maquina ? Lá se vão o registro e os arquivos...
Eu coloco as rotinas para, na primeira execução, ele criar esses arquivos, e nas outras ele só os verifica. O critério que uso é a existencia ou não desses arquvos. Mas sempre que ele formatar a maquina são criados novos arquivos, ou se ele instalar em outra maquina tambem serao criados ... :x :x
Tem alguma dica a me dar nesse caso?
Valeu ...
Guardo as informaçoes no registro e em alguns arquivos, certo? mas e se o usuario formatar a maquina ? Lá se vão o registro e os arquivos...
Eu coloco as rotinas para, na primeira execução, ele criar esses arquivos, e nas outras ele só os verifica. O critério que uso é a existencia ou não desses arquvos. Mas sempre que ele formatar a maquina são criados novos arquivos, ou se ele instalar em outra maquina tambem serao criados ... :x :x
Tem alguma dica a me dar nesse caso?
Valeu ...
GOSTEI 0
Paullsoftware
18/04/2006
eu preparei um exemplo básico de como vc deve proceder, porém melhore ele para uma melhor segurança do seu sistema...
http://us.f13.yahoofs.com/bc/4452a716_9649/bc/Delphi/Exemplo+(Serial+do+HD).zip?bf4uKWEBCKUveUom
espero ter ajudado... qq coisa estamos ai :wink:
http://us.f13.yahoofs.com/bc/4452a716_9649/bc/Delphi/Exemplo+(Serial+do+HD).zip?bf4uKWEBCKUveUom
espero ter ajudado... qq coisa estamos ai :wink:
GOSTEI 0
Paullsoftware
18/04/2006
[quote:f97f18a9d7=´m@gnun´]
Eu sempre guardo os arquivos criptografados em arquivos na mesma pasta do sistema, então se ele formatar deve fazer um backup do sistema antes, senão vai tudo pro espaço... outra coisa, é que quando um cliente meu vai formatar a máquina eu sempre peço para ele me avisar antes, pois, não me resposabilizo por perda dos dados do meu sistema...
Quando as informações que vc grava no registro, eu parei de fazer isso justamente devido a esse problema, porém, estou fazendo agora de outra forma...
sempre que meu sistema inicia verifico a existência das chaves de registro, caso elas não existam eu crio-as com informações contidas nos arquivos criptografados... o segredo é sempre comparar os dados dos arquivos/chaves do registro com o serial do HD, hoje eu faço mais ou menos assim:
Pego o serial e converto em usando componentes de criptografia SHA1 da [b:f97f18a9d7]TurboPower[/b:f97f18a9d7] que me proporciona uma maior segurança, então como estava dizendo. Pego o serial o HD converto ele com esse componente fica mais ou menos assim:
Serial Original: 0891J1JXB44796
Criptografado: 0859A1B8D84043EC76DD253E401E62 (divido em pelo menos 4 partes em arquivos diferentes)
e guardo tb ela completa em um outro lugar vamos supor que seja no registro, só que de forma invertida para dificultar uma possível quebra da segurança...
então quando meu sistema abre eu tenho um atualizador que enquanto verificar a versão do exe uma thread se encarrega de ler o registro do sistema, ou seja, os arquivos com as informações necessárias...
espeto ter ajudado :wink:
blz paullsoftware, eu uso o idesn tmb... mas tem um porem ...
Guardo as informaçoes no registro e em alguns arquivos, certo? mas e se o usuario formatar a maquina ? Lá se vão o registro e os arquivos...
Eu coloco as rotinas para, na primeira execução, ele criar esses arquivos, e nas outras ele só os verifica. O critério que uso é a existencia ou não desses arquvos. Mas sempre que ele formatar a maquina são criados novos arquivos, ou se ele instalar em outra maquina tambem serao criados ...
Tem alguma dica a me dar nesse caso?
Valeu ...
[/quote:f97f18a9d7]Eu sempre guardo os arquivos criptografados em arquivos na mesma pasta do sistema, então se ele formatar deve fazer um backup do sistema antes, senão vai tudo pro espaço... outra coisa, é que quando um cliente meu vai formatar a máquina eu sempre peço para ele me avisar antes, pois, não me resposabilizo por perda dos dados do meu sistema...
Quando as informações que vc grava no registro, eu parei de fazer isso justamente devido a esse problema, porém, estou fazendo agora de outra forma...
sempre que meu sistema inicia verifico a existência das chaves de registro, caso elas não existam eu crio-as com informações contidas nos arquivos criptografados... o segredo é sempre comparar os dados dos arquivos/chaves do registro com o serial do HD, hoje eu faço mais ou menos assim:
Pego o serial e converto em usando componentes de criptografia SHA1 da [b:f97f18a9d7]TurboPower[/b:f97f18a9d7] que me proporciona uma maior segurança, então como estava dizendo. Pego o serial o HD converto ele com esse componente fica mais ou menos assim:
Serial Original: 0891J1JXB44796
Criptografado: 0859A1B8D84043EC76DD253E401E62 (divido em pelo menos 4 partes em arquivos diferentes)
e guardo tb ela completa em um outro lugar vamos supor que seja no registro, só que de forma invertida para dificultar uma possível quebra da segurança...
então quando meu sistema abre eu tenho um atualizador que enquanto verificar a versão do exe uma thread se encarrega de ler o registro do sistema, ou seja, os arquivos com as informações necessárias...
espeto ter ajudado :wink:
GOSTEI 0
M@gnun
18/04/2006
valeu, ajudou bastante ... só falta uma duvida...
´quando´ vc pega o serial do hd?
o que eu nao estou conseguindo sacar é como vc disse:
´´´
sempre que meu sistema inicia verifico a existência das chaves de registro, caso elas não existam eu crio-as com informações contidas nos arquivos criptografados...
´´´
pelo que entendi vc pega o serial antes, isso? como email? viagei?
´quando´ vc pega o serial do hd?
o que eu nao estou conseguindo sacar é como vc disse:
´´´
sempre que meu sistema inicia verifico a existência das chaves de registro, caso elas não existam eu crio-as com informações contidas nos arquivos criptografados...
´´´
pelo que entendi vc pega o serial antes, isso? como email? viagei?
GOSTEI 0
Xadriano
18/04/2006
cara esse link nao funciona, se vc puder mandar para meu email, ficaria muito grato,
adrifonpereira@bol.com.br
Adriano.
adrifonpereira@bol.com.br
Adriano.
GOSTEI 0
Leitorbinario
18/04/2006
Procura no google, tem DLLs que pegam o serial do HD pra vc.
GOSTEI 0
Paullsoftware
18/04/2006
[quote:88d3570215=´m@gnun´]
Quando o meu sistema abre pela primeira vez ele fica pedindo um espécie de registro (isso também ocorre quando o cliente tenta copiar o sistema para um outro micro), então esse registro é solicitado pq eu já fiz uma verificação da exitência das informações necessárias para inicialização do sistema (Comparação do Serial do Arquivo com o Serial do HD) então faço uma comparação básica
Se Serial_Registro = Serial_HD Então
//Continua abertura do programa
senão
//Mostrar tela pedindo Registro
:arrow: [b:88d3570215]Espero que tenha endentido[/b:88d3570215] :wink:
op´s...
foi mal galera, eu havia colocado no meu Porta-Arquivos... estou hospedando no site aqui da empresa, mais não sei por quanto tempo posso deixá-lo lá...
:arrow: [size=18:88d3570215][color=blue:88d3570215]http://safpe.com.br/externo/Exemplo+(Serial+do+HD).zip[/color:88d3570215][/size:88d3570215] :wink:
Image de aviso no caso da não existência dos dados de registro:
Tela para registro do sistema:
[b:88d3570215][size=18:88d3570215][color=red:88d3570215]Executável do Sistema, é onde eu pego qual programa está sendo registrado no caso de existir mais de um sistema instalado na mesma máquina[/color:88d3570215][/size:88d3570215][/b:88d3570215]
valeu, ajudou bastante ... só falta uma duvida...
´quando´ vc pega o serial do hd?
o que eu nao estou conseguindo sacar é como vc disse:
´´´
sempre que meu sistema inicia verifico a existência das chaves de registro, caso elas não existam eu crio-as com informações contidas nos arquivos criptografados...
´´´
pelo que entendi vc pega o serial antes, isso? como email? viagei?
[/quote:88d3570215]Quando o meu sistema abre pela primeira vez ele fica pedindo um espécie de registro (isso também ocorre quando o cliente tenta copiar o sistema para um outro micro), então esse registro é solicitado pq eu já fiz uma verificação da exitência das informações necessárias para inicialização do sistema (Comparação do Serial do Arquivo com o Serial do HD) então faço uma comparação básica
Se Serial_Registro = Serial_HD Então
//Continua abertura do programa
senão
//Mostrar tela pedindo Registro
:arrow: [b:88d3570215]Espero que tenha endentido[/b:88d3570215] :wink:
op´s...
foi mal galera, eu havia colocado no meu Porta-Arquivos... estou hospedando no site aqui da empresa, mais não sei por quanto tempo posso deixá-lo lá...
:arrow: [size=18:88d3570215][color=blue:88d3570215]http://safpe.com.br/externo/Exemplo+(Serial+do+HD).zip[/color:88d3570215][/size:88d3570215] :wink:
Image de aviso no caso da não existência dos dados de registro:
Tela para registro do sistema:
[b:88d3570215][size=18:88d3570215][color=red:88d3570215]Executável do Sistema, é onde eu pego qual programa está sendo registrado no caso de existir mais de um sistema instalado na mesma máquina[/color:88d3570215][/size:88d3570215][/b:88d3570215]
GOSTEI 0
Paullsoftware
18/04/2006
[quote:3590a0185c=´m@gnun´]
Quando o meu sistema abre pela primeira vez ele fica pedindo um espécie de registro (isso também ocorre quando o cliente tenta copiar o sistema para um outro micro), então esse registro é solicitado pq eu já fiz uma verificação da exitência das informações necessárias para inicialização do sistema (Comparação do Serial do Arquivo com o Serial do HD) então faço uma comparação básica
Se Serial_Registro = Serial_HD Então
//Continua abertura do programa
senão
//Mostrar tela pedindo Registro
:arrow: [b:3590a0185c]Espero que tenha endentido[/b:3590a0185c] :wink:
op´s...
foi mal galera, eu havia colocado no meu Porta-Arquivos... estou hospedando no site aqui da empresa, mais não sei por quanto tempo posso deixá-lo lá...
:arrow: [size=18:3590a0185c][color=blue:3590a0185c]http://safpe.com.br/externo/Exemplo+(Serial+do+HD).zip[/color:3590a0185c][/size:3590a0185c] :wink:
Image de aviso no caso da não existência dos dados de registro:
Tela para registro do sistema:
[b:3590a0185c][size=18:3590a0185c][color=red:3590a0185c]Executável do Sistema, é onde eu pego qual programa está sendo registrado no caso de existir mais de um sistema instalado na mesma máquina[/color:3590a0185c][/size:3590a0185c][/b:3590a0185c]
valeu, ajudou bastante ... só falta uma duvida...
´quando´ vc pega o serial do hd?
o que eu nao estou conseguindo sacar é como vc disse:
´´´
sempre que meu sistema inicia verifico a existência das chaves de registro, caso elas não existam eu crio-as com informações contidas nos arquivos criptografados...
´´´
pelo que entendi vc pega o serial antes, isso? como email? viagei?
[/quote:3590a0185c]Quando o meu sistema abre pela primeira vez ele fica pedindo um espécie de registro (isso também ocorre quando o cliente tenta copiar o sistema para um outro micro), então esse registro é solicitado pq eu já fiz uma verificação da exitência das informações necessárias para inicialização do sistema (Comparação do Serial do Arquivo com o Serial do HD) então faço uma comparação básica
Se Serial_Registro = Serial_HD Então
//Continua abertura do programa
senão
//Mostrar tela pedindo Registro
:arrow: [b:3590a0185c]Espero que tenha endentido[/b:3590a0185c] :wink:
op´s...
foi mal galera, eu havia colocado no meu Porta-Arquivos... estou hospedando no site aqui da empresa, mais não sei por quanto tempo posso deixá-lo lá...
:arrow: [size=18:3590a0185c][color=blue:3590a0185c]http://safpe.com.br/externo/Exemplo+(Serial+do+HD).zip[/color:3590a0185c][/size:3590a0185c] :wink:
Image de aviso no caso da não existência dos dados de registro:
Tela para registro do sistema:
[b:3590a0185c][size=18:3590a0185c][color=red:3590a0185c]Executável do Sistema, é onde eu pego qual programa está sendo registrado no caso de existir mais de um sistema instalado na mesma máquina[/color:3590a0185c][/size:3590a0185c][/b:3590a0185c]
GOSTEI 0
M@gnun
18/04/2006
eh aqui que eu me perco:
´ Se Serial_Registro = Serial_HD Então ´
o Serial_HD vc pega com GetIdeSN, mas o Serial_Registro vc jah tem correto?
a questao é com o que vc compara o serial do hd vc envia algo por email?
olha aqui eu fiz +- assim veja se entende :
eu mando um pequeno exe para o usuario, quando ele abre o prog, o mesmo pega alguns dados do pc pra enrolar , e pega tambem o serial.
eu do um ´migué´ nos dados pra nao ficar na cara né ... se o serial fosse
123456789 eu coloco [b:9ed6611f2e]1[/b:9ed6611f2e]kj[b:9ed6611f2e]2[/b:9ed6611f2e]098[b:9ed6611f2e]3[/]lksd ...
ai o usuario tem q me mandar esse arquivo
depois eu mando o sistema pra ele e mando o mesmo arquivo, ´criptografado´ dinovo ai ele compara o numero q ele me mandou com o serial atual com getidesn
é por aí ??? valeu pela atenção
ps: desculpa por me apossar do topico xadriano ok ...[/b:9ed6611f2e]
´ Se Serial_Registro = Serial_HD Então ´
o Serial_HD vc pega com GetIdeSN, mas o Serial_Registro vc jah tem correto?
a questao é com o que vc compara o serial do hd vc envia algo por email?
olha aqui eu fiz +- assim veja se entende :
eu mando um pequeno exe para o usuario, quando ele abre o prog, o mesmo pega alguns dados do pc pra enrolar , e pega tambem o serial.
eu do um ´migué´ nos dados pra nao ficar na cara né ... se o serial fosse
123456789 eu coloco [b:9ed6611f2e]1[/b:9ed6611f2e]kj[b:9ed6611f2e]2[/b:9ed6611f2e]098[b:9ed6611f2e]3[/]lksd ...
ai o usuario tem q me mandar esse arquivo
depois eu mando o sistema pra ele e mando o mesmo arquivo, ´criptografado´ dinovo ai ele compara o numero q ele me mandou com o serial atual com getidesn
é por aí ??? valeu pela atenção
ps: desculpa por me apossar do topico xadriano ok ...[/b:9ed6611f2e]
GOSTEI 0
Paullsoftware
18/04/2006
[quote:b358ade814=´m@gnun´]eh aqui que eu me perco:
´ Se Serial_Registro = Serial_HD Então ´
o Serial_HD vc pega com GetIdeSN, mas o Serial_Registro vc jah tem correto?
a questao é com o que vc compara o serial do hd vc envia algo por email?
olha aqui eu fiz +- assim veja se entende :
eu mando um pequeno exe para o usuario, quando ele abre o prog, o mesmo pega alguns dados do pc pra enrolar , e pega tambem o serial.
eu do um ´migué´ nos dados pra nao ficar na cara né ... se o serial fosse
123456789 eu coloco [b:b358ade814]1[/b:b358ade814]kj[b:b358ade814]2[/b:b358ade814]098[b:b358ade814]3[/]lksd ...
ai o usuario tem q me mandar esse arquivo
depois eu mando o sistema pra ele e mando o mesmo arquivo, ´criptografado´ dinovo ai ele compara o numero q ele me mandou com o serial atual com getidesn
é por aí ??? valeu pela atenção
ps: desculpa por me apossar do topico xadriano ok ...[/b:b358ade814][/quote:b358ade814]
da forma que passo não preciso que me seja enviado nada por email, apenas por telefone....
como eu disse quando o sistema é aberto se não existir registro ainda ele cria automaticamente um e fica esperando por uma chave de ativação (como muitos softwares fazem hoje), porém, essa ativação somente é feita quando o cliente entra em contato comigo ou quando acesso o micro dele remotamente (com o VNC por exemplo) então após ele me passar esse código que é justamente o serial do HD eu mando um outro pra ele que vai criptografado e quando ele for inserir eu vou comparar com o atual, para evitar que seja burlado com facilidade, ajo da seguinte maneira:
Serial Mostrado ao cliente:
[b:b358ade814]8453B32E[/b:b358ade814] (Esse seria o serial do HD)
então eu passo esse pra ele:
[b:b358ade814]2900-A6BC-31-BF61-045B[/b:b358ade814]
Observe que o código que eu paço possui separação faço isso pois não vai na ordem correta quando meu sistema receve esse código ele quebra a string em partes e vai juntando tudo tipo assim:
[b:b358ade814]31BF612900A6BC045B[/b:b358ade814]
depois de feito isso, eu descriptografo e comparo o resultado com o serial do hd, ou seja, o resultado tem que dá igual ao serial do HD... dessa forma fica quase, eu disse quase impossível burlar a segurança do meu sistema :wink:
´ Se Serial_Registro = Serial_HD Então ´
o Serial_HD vc pega com GetIdeSN, mas o Serial_Registro vc jah tem correto?
a questao é com o que vc compara o serial do hd vc envia algo por email?
olha aqui eu fiz +- assim veja se entende :
eu mando um pequeno exe para o usuario, quando ele abre o prog, o mesmo pega alguns dados do pc pra enrolar , e pega tambem o serial.
eu do um ´migué´ nos dados pra nao ficar na cara né ... se o serial fosse
123456789 eu coloco [b:b358ade814]1[/b:b358ade814]kj[b:b358ade814]2[/b:b358ade814]098[b:b358ade814]3[/]lksd ...
ai o usuario tem q me mandar esse arquivo
depois eu mando o sistema pra ele e mando o mesmo arquivo, ´criptografado´ dinovo ai ele compara o numero q ele me mandou com o serial atual com getidesn
é por aí ??? valeu pela atenção
ps: desculpa por me apossar do topico xadriano ok ...[/b:b358ade814][/quote:b358ade814]
da forma que passo não preciso que me seja enviado nada por email, apenas por telefone....
como eu disse quando o sistema é aberto se não existir registro ainda ele cria automaticamente um e fica esperando por uma chave de ativação (como muitos softwares fazem hoje), porém, essa ativação somente é feita quando o cliente entra em contato comigo ou quando acesso o micro dele remotamente (com o VNC por exemplo) então após ele me passar esse código que é justamente o serial do HD eu mando um outro pra ele que vai criptografado e quando ele for inserir eu vou comparar com o atual, para evitar que seja burlado com facilidade, ajo da seguinte maneira:
Serial Mostrado ao cliente:
[b:b358ade814]8453B32E[/b:b358ade814] (Esse seria o serial do HD)
então eu passo esse pra ele:
[b:b358ade814]2900-A6BC-31-BF61-045B[/b:b358ade814]
Observe que o código que eu paço possui separação faço isso pois não vai na ordem correta quando meu sistema receve esse código ele quebra a string em partes e vai juntando tudo tipo assim:
[b:b358ade814]31BF612900A6BC045B[/b:b358ade814]
depois de feito isso, eu descriptografo e comparo o resultado com o serial do hd, ou seja, o resultado tem que dá igual ao serial do HD... dessa forma fica quase, eu disse quase impossível burlar a segurança do meu sistema :wink:
GOSTEI 0
M@gnun
18/04/2006
aff saquei ... demoro mais saquei ... hehehe valeu cara ... acho que a unica diferença eh a forma q estou entrando em contato com o cliente ...
valeu pela atenção paullsoftware ...
valeu pela atenção paullsoftware ...
GOSTEI 0
Paullsoftware
18/04/2006
[quote:e6c299ae50=´m@gnun´]aff saquei ... demoro mais saquei ... hehehe valeu cara ... acho que a unica diferença eh a forma q estou entrando em contato com o cliente ...
valeu pela atenção paullsoftware ...[/quote:e6c299ae50]
Ok :wink:
qualquer coisa estamos ai... :lol: 8)
valeu pela atenção paullsoftware ...[/quote:e6c299ae50]
Ok :wink:
qualquer coisa estamos ai... :lol: 8)
GOSTEI 0