Pegar IP - Evitar dois modulos rodando na empresa
Prezados amigos...
Vejam se podem me ajudar....
Tenho um sistema que possui dois modulos.. o da filial e o das empresas clientes de nossa matriz (que ficam na regiao da filial)
Os serviços são prestados e cobrados das empresas atraves da matriz de forma que os pagamentos devem ser feitos diretos a matriz...
O que esta ocorrendo é que algumas filiais estão adquirindo o modulo da empresa (cliente) instalando na filial e prestando/cobrando serviços as empresas... que devem solicita-los a matriz...
Então precisamos de uma validação para testar se caso uma aplicação estiver rodando em cima de determinado IP... (filial) quando for executar o modulo empresa (o espertao poderá coloca-lo em outro micro), seja testado se já existe o modulo da filial rodando ali.
Neste caso consigiriamos barrar a execucao dos dois modulos dentro da filial.. ali somente rodaria a aplicacao filial que é autorizada.
de forma que a aplicacao das empresas ficariam somente nas empresas..
trabalhamos com o NO-IP que promove um host (endereco) fixo para superar o problema de ips variaveis...
enfim... alguem teria uma ideia ou solucao para que consigamos evitar que as filiais nos burlem instalando o aplicativo da empresa ali para simular que é uma empresa e atraves dele prestar serviços as empresas clientes de nossa matriz?
um grande abraço
Vejam se podem me ajudar....
Tenho um sistema que possui dois modulos.. o da filial e o das empresas clientes de nossa matriz (que ficam na regiao da filial)
Os serviços são prestados e cobrados das empresas atraves da matriz de forma que os pagamentos devem ser feitos diretos a matriz...
O que esta ocorrendo é que algumas filiais estão adquirindo o modulo da empresa (cliente) instalando na filial e prestando/cobrando serviços as empresas... que devem solicita-los a matriz...
Então precisamos de uma validação para testar se caso uma aplicação estiver rodando em cima de determinado IP... (filial) quando for executar o modulo empresa (o espertao poderá coloca-lo em outro micro), seja testado se já existe o modulo da filial rodando ali.
Neste caso consigiriamos barrar a execucao dos dois modulos dentro da filial.. ali somente rodaria a aplicacao filial que é autorizada.
de forma que a aplicacao das empresas ficariam somente nas empresas..
trabalhamos com o NO-IP que promove um host (endereco) fixo para superar o problema de ips variaveis...
enfim... alguem teria uma ideia ou solucao para que consigamos evitar que as filiais nos burlem instalando o aplicativo da empresa ali para simular que é uma empresa e atraves dele prestar serviços as empresas clientes de nossa matriz?
um grande abraço
Pablo_lima
Curtidas 0
Respostas
Daykas
09/11/2007
acredito que o seu sistema faça a validação de usuários.
crie um flag na sua tabela de usuários indicando qual usuário é filiam e qual é matriz.
crie um flag na sua tabela de usuários indicando qual usuário é filiam e qual é matriz.
GOSTEI 0
Pablo_lima
09/11/2007
acredito que o seu sistema faça a validação de usuários.
crie um flag na sua tabela de usuários indicando qual usuário é filiam e qual é matriz.
Ok Amigo... Agradeço a dica...
Mas neste caso cada modulo possui seu banco de dados... com sistema de usuarios individual...
O cara da filial poderia instalar o sistema (filial) em uma maquina na estrutura da filial...
E instalar o modulo (da empresa) em outra maquina... como são BD´s diferentes.... então caracteriza que está tudo ok...
Talvez o que eu precisaria é de algo que quando o sistema rodar.. em qualquer modulo.. vá até nosso servidor ftp.. e marque o ip atual (externo) que a aplicação está rodando...
E quando o outro modulo for executado e fizer a verificação no ftp... se o IP 1234 está ativo... então é sinal que estão rodando dentro da mesma rede...
O que acha.. estive pensando nisso.. mas não sei se seria a melhor forma que controlar esse problema...
Um abraço
GOSTEI 0
Alves_sp
09/11/2007
Não seria mas facil vc instalar um HARD LOCK pois assim´o sistema só roda se tiver o HARD LOCK
GOSTEI 0
Werlon Goulart
09/11/2007
Que tal vc fixar o sistema para somente poder se executado em uma máquina específica ?
Vc pegaria na Instalação do Sistema o Serial do Win + MAC da Placa de Rede + Serial do HD e geraria um arquivo Criptografado, e testaria toda vez que o sistema fosse inicializado se as informações do Arquivo de Segurança são idênticas as coletadas na hora...
Partindo dai vc pode fazer uma espécie de Ativação do Sistema, onde seria gerada uma senha na máquina cliente(Filial) e somente vc na Matriz teria como gerar a Contra Senha que permitiria a instalação.
Assim vc controlaria a instalação do sistema e não permitiria que este sistema fosse copiado para uma outra máquina.
Pelo IP acho meio difícil pois o cara pode mudar o IP da Máquina e registrar no seu FTP (Na ideia q vc tinha) como OUTRA maquina...
A não ser que vc trabalhe remotamente por uma VPN por exemplo...
Na minha idéia ia funcionar assim:
1 - Filial Instala o sistema e na primeira execução, o sistema gera uma senha e aguarda a contra senha pra continuar a executar;
2 - Matriz envia a contra senha gerada a partir da senha enviada pela Filial;
3 - Filial entra com a Contra Senha gerada pela Matriz e na continuação da execução do sistema são coletados os dados da Máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) e gera um arquivo Criptografado com estas informações;
4 - Na próxima execução do sistema na filial, o sistema irá checar se existe o arquivo de Segurança e se os dados nele são IGUAIS aos coletados NA HORA, e se forem, não pedirá mais a contra senha e continuará executando normalmente, qualquer coisa diferente a filial gera a senha novamente e requisita a contra senha (vc pode adiciona na senha tb o motivo do erro, assim vc controla se os caras estão fazendo tentativas de burlar o sistema (copiando o arquivo de segurança pra outra máquina, etc...)
Na geração da Senha pela filial, seria interessante vc juntar as informações coletadadas da máquina assim vc teria um registro sem que o usuário saiba, dos dados da máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) podendo tabelar isto e controlar qntas máquinas tem o sistema instalado na filial.
A desvantagem (Tudo tem 2 lados...) é que seria necessário um email ou Ligação para a Matriz passando a senha e requisitando a Contra Senha, e que em toda instalação seria necessário a interação da Matriz.
Outra desvantagem é que toda vez q atualizasse o Windows ou Trocasse Placa de Rede ou HD seria necessário gerar novamente a contra senha.
Já tenho prontas as rotinas pra isto em Delphi 7, se necessitar te passo elas sem problema algum, afinal sou adepto a ideologia de ´Vem fácil vai fácil´, tb tive ajuda pra pegar o MAC da Placa de rede... Assim como me passaram a função pronta e funcionando te passo ela tb.]
Uma mão lava a outra e todo mundo bate palmas... he he he...
Qquer coisa entre em contato, vou acompanhar este tópico diariamente.
Um abraço
Werlon Goulart
Vc pegaria na Instalação do Sistema o Serial do Win + MAC da Placa de Rede + Serial do HD e geraria um arquivo Criptografado, e testaria toda vez que o sistema fosse inicializado se as informações do Arquivo de Segurança são idênticas as coletadas na hora...
Partindo dai vc pode fazer uma espécie de Ativação do Sistema, onde seria gerada uma senha na máquina cliente(Filial) e somente vc na Matriz teria como gerar a Contra Senha que permitiria a instalação.
Assim vc controlaria a instalação do sistema e não permitiria que este sistema fosse copiado para uma outra máquina.
Pelo IP acho meio difícil pois o cara pode mudar o IP da Máquina e registrar no seu FTP (Na ideia q vc tinha) como OUTRA maquina...
A não ser que vc trabalhe remotamente por uma VPN por exemplo...
Na minha idéia ia funcionar assim:
1 - Filial Instala o sistema e na primeira execução, o sistema gera uma senha e aguarda a contra senha pra continuar a executar;
2 - Matriz envia a contra senha gerada a partir da senha enviada pela Filial;
3 - Filial entra com a Contra Senha gerada pela Matriz e na continuação da execução do sistema são coletados os dados da Máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) e gera um arquivo Criptografado com estas informações;
4 - Na próxima execução do sistema na filial, o sistema irá checar se existe o arquivo de Segurança e se os dados nele são IGUAIS aos coletados NA HORA, e se forem, não pedirá mais a contra senha e continuará executando normalmente, qualquer coisa diferente a filial gera a senha novamente e requisita a contra senha (vc pode adiciona na senha tb o motivo do erro, assim vc controla se os caras estão fazendo tentativas de burlar o sistema (copiando o arquivo de segurança pra outra máquina, etc...)
Na geração da Senha pela filial, seria interessante vc juntar as informações coletadadas da máquina assim vc teria um registro sem que o usuário saiba, dos dados da máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) podendo tabelar isto e controlar qntas máquinas tem o sistema instalado na filial.
A desvantagem (Tudo tem 2 lados...) é que seria necessário um email ou Ligação para a Matriz passando a senha e requisitando a Contra Senha, e que em toda instalação seria necessário a interação da Matriz.
Outra desvantagem é que toda vez q atualizasse o Windows ou Trocasse Placa de Rede ou HD seria necessário gerar novamente a contra senha.
Já tenho prontas as rotinas pra isto em Delphi 7, se necessitar te passo elas sem problema algum, afinal sou adepto a ideologia de ´Vem fácil vai fácil´, tb tive ajuda pra pegar o MAC da Placa de rede... Assim como me passaram a função pronta e funcionando te passo ela tb.]
Uma mão lava a outra e todo mundo bate palmas... he he he...
Qquer coisa entre em contato, vou acompanhar este tópico diariamente.
Um abraço
Werlon Goulart
GOSTEI 0
Pablo_lima
09/11/2007
Não seria mas facil vc instalar um HARD LOCK pois assim´o sistema só roda se tiver o HARD LOCK
Ok Alves...
Agradeço a dica...
No meu caso já uso a chave hardlock... e de fato o sistema só roda na maquina do cara com a chave na porta USB da mesma...
Mas a questão aí é que o danado da filial.. adquire o modulo que é instalado na empresa (cliente da matriz).. e instala esse modulo em outra maquina na filial... então ele possui os serviços que as empresas utilizam... aí o que ele faz... começa a fornecer esses serviços as empresas... cobrando pelos mesmos... ao inves de indicar a aquisição do modulo à mesma....
Enfim... então o que ocorre é que é feita uma aquisição do modulo de acesso ao sistema.. com funcionalidades que só o modulo da empresa (cliente) possui... e o cara da filial.. então tem seu problema resolvido pque o modulo da filial tem processos restritos... ele praticamente só alimenta o sistema.. para que o modulo das empresas o utilize...
Conto com mais idéias..
Um abraço...
GOSTEI 0
Pablo_lima
09/11/2007
[quote:33a52e8906=´Werlon Goulart´]Que tal vc fixar o sistema para somente poder se executado em uma máquina específica ?
Vc pegaria na Instalação do Sistema o Serial do Win + MAC da Placa de Rede + Serial do HD e geraria um arquivo Criptografado, e testaria toda vez que o sistema fosse inicializado se as informações do Arquivo de Segurança são idênticas as coletadas na hora...
Partindo dai vc pode fazer uma espécie de Ativação do Sistema, onde seria gerada uma senha na máquina cliente(Filial) e somente vc na Matriz teria como gerar a Contra Senha que permitiria a instalação.
Assim vc controlaria a instalação do sistema e não permitiria que este sistema fosse copiado para uma outra máquina.
Pelo IP acho meio difícil pois o cara pode mudar o IP da Máquina e registrar no seu FTP (Na ideia q vc tinha) como OUTRA maquina...
A não ser que vc trabalhe remotamente por uma VPN por exemplo...
Na minha idéia ia funcionar assim:
1 - Filial Instala o sistema e na primeira execução, o sistema gera uma senha e aguarda a contra senha pra continuar a executar;
2 - Matriz envia a contra senha gerada a partir da senha enviada pela Filial;
3 - Filial entra com a Contra Senha gerada pela Matriz e na continuação da execução do sistema são coletados os dados da Máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) e gera um arquivo Criptografado com estas informações;
4 - Na próxima execução do sistema na filial, o sistema irá checar se existe o arquivo de Segurança e se os dados nele são IGUAIS aos coletados NA HORA, e se forem, não pedirá mais a contra senha e continuará executando normalmente, qualquer coisa diferente a filial gera a senha novamente e requisita a contra senha (vc pode adiciona na senha tb o motivo do erro, assim vc controla se os caras estão fazendo tentativas de burlar o sistema (copiando o arquivo de segurança pra outra máquina, etc...)
Na geração da Senha pela filial, seria interessante vc juntar as informações coletadadas da máquina assim vc teria um registro sem que o usuário saiba, dos dados da máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) podendo tabelar isto e controlar qntas máquinas tem o sistema instalado na filial.
A desvantagem (Tudo tem 2 lados...) é que seria necessário um email ou Ligação para a Matriz passando a senha e requisitando a Contra Senha, e que em toda instalação seria necessário a interação da Matriz.
Outra desvantagem é que toda vez q atualizasse o Windows ou Trocasse Placa de Rede ou HD seria necessário gerar novamente a contra senha.
Já tenho prontas as rotinas pra isto em Delphi 7, se necessitar te passo elas sem problema algum, afinal sou adepto a ideologia de ´Vem fácil vai fácil´, tb tive ajuda pra pegar o MAC da Placa de rede... Assim como me passaram a função pronta e funcionando te passo ela tb.]
Uma mão lava a outra e todo mundo bate palmas... he he he...
Qquer coisa entre em contato, vou acompanhar este tópico diariamente.
Um abraço
Werlon Goulart[/quote:33a52e8906]
Werlon.. Agradeço as dicas velho...
Acredito que dentro de toda essa proposta que vc me passou...
Boa parte é agilizada pelo fato que uso a chave hardlock como sistema de segurança....
Então o que ocorre é que o danado da filial está adquirindo o modulo das empresas (clientes) e instalando em outra maquina da filial.. com hardlock e tudo mais... E então ao invés dele indicar às empresas para adquirem o modulo de acesso on line aos dados.. ele instala o modulo e presta serviços.. localmente as empresas a custos inferiores...
Então o que preciso de fato.. é barrar dois sistemas rodando numa mesma rede...
Sei lá.. isso tá complicado.. não sei até onde o propria chave hardlock pode me ser util neste caso...
Mas quanto a proteção da instalação.. o instalador do nosso sistema.. tanto modulo da empresa quanto da filial tem senha.. portanto somente nós.. instlaamos...
/
O duro é o cara da filial fazer a solicitação da instalação usando um cnpj de uma empresa laranja... então entraremos na filial (imaginando que seja numa empresa) e faremos a instalação do modulo da empresa... até pque irá parecer uma instalação convencional em mais uma empresa cliente.. como tantas outras...
Mas neste caso estaremos instalando o modulo de acesso on line das empresas... num micro da filial....
E este cara da filial .. prestará serviços atraves deste modulo ao inves de indicar a aquisição do mesmos as empresas... e ainda.. ele cobrará mais barato para fornecer os serviços.. ali na filial...
Um abraço... Conto com sua força;;
Pablo Rodrigues
Vc pegaria na Instalação do Sistema o Serial do Win + MAC da Placa de Rede + Serial do HD e geraria um arquivo Criptografado, e testaria toda vez que o sistema fosse inicializado se as informações do Arquivo de Segurança são idênticas as coletadas na hora...
Partindo dai vc pode fazer uma espécie de Ativação do Sistema, onde seria gerada uma senha na máquina cliente(Filial) e somente vc na Matriz teria como gerar a Contra Senha que permitiria a instalação.
Assim vc controlaria a instalação do sistema e não permitiria que este sistema fosse copiado para uma outra máquina.
Pelo IP acho meio difícil pois o cara pode mudar o IP da Máquina e registrar no seu FTP (Na ideia q vc tinha) como OUTRA maquina...
A não ser que vc trabalhe remotamente por uma VPN por exemplo...
Na minha idéia ia funcionar assim:
1 - Filial Instala o sistema e na primeira execução, o sistema gera uma senha e aguarda a contra senha pra continuar a executar;
2 - Matriz envia a contra senha gerada a partir da senha enviada pela Filial;
3 - Filial entra com a Contra Senha gerada pela Matriz e na continuação da execução do sistema são coletados os dados da Máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) e gera um arquivo Criptografado com estas informações;
4 - Na próxima execução do sistema na filial, o sistema irá checar se existe o arquivo de Segurança e se os dados nele são IGUAIS aos coletados NA HORA, e se forem, não pedirá mais a contra senha e continuará executando normalmente, qualquer coisa diferente a filial gera a senha novamente e requisita a contra senha (vc pode adiciona na senha tb o motivo do erro, assim vc controla se os caras estão fazendo tentativas de burlar o sistema (copiando o arquivo de segurança pra outra máquina, etc...)
Na geração da Senha pela filial, seria interessante vc juntar as informações coletadadas da máquina assim vc teria um registro sem que o usuário saiba, dos dados da máquina (Serial do HD + Serial do Windows + MAC da Placa de Rede) podendo tabelar isto e controlar qntas máquinas tem o sistema instalado na filial.
A desvantagem (Tudo tem 2 lados...) é que seria necessário um email ou Ligação para a Matriz passando a senha e requisitando a Contra Senha, e que em toda instalação seria necessário a interação da Matriz.
Outra desvantagem é que toda vez q atualizasse o Windows ou Trocasse Placa de Rede ou HD seria necessário gerar novamente a contra senha.
Já tenho prontas as rotinas pra isto em Delphi 7, se necessitar te passo elas sem problema algum, afinal sou adepto a ideologia de ´Vem fácil vai fácil´, tb tive ajuda pra pegar o MAC da Placa de rede... Assim como me passaram a função pronta e funcionando te passo ela tb.]
Uma mão lava a outra e todo mundo bate palmas... he he he...
Qquer coisa entre em contato, vou acompanhar este tópico diariamente.
Um abraço
Werlon Goulart[/quote:33a52e8906]
Werlon.. Agradeço as dicas velho...
Acredito que dentro de toda essa proposta que vc me passou...
Boa parte é agilizada pelo fato que uso a chave hardlock como sistema de segurança....
Então o que ocorre é que o danado da filial está adquirindo o modulo das empresas (clientes) e instalando em outra maquina da filial.. com hardlock e tudo mais... E então ao invés dele indicar às empresas para adquirem o modulo de acesso on line aos dados.. ele instala o modulo e presta serviços.. localmente as empresas a custos inferiores...
Então o que preciso de fato.. é barrar dois sistemas rodando numa mesma rede...
Sei lá.. isso tá complicado.. não sei até onde o propria chave hardlock pode me ser util neste caso...
Mas quanto a proteção da instalação.. o instalador do nosso sistema.. tanto modulo da empresa quanto da filial tem senha.. portanto somente nós.. instlaamos...
/
O duro é o cara da filial fazer a solicitação da instalação usando um cnpj de uma empresa laranja... então entraremos na filial (imaginando que seja numa empresa) e faremos a instalação do modulo da empresa... até pque irá parecer uma instalação convencional em mais uma empresa cliente.. como tantas outras...
Mas neste caso estaremos instalando o modulo de acesso on line das empresas... num micro da filial....
E este cara da filial .. prestará serviços atraves deste modulo ao inves de indicar a aquisição do mesmos as empresas... e ainda.. ele cobrará mais barato para fornecer os serviços.. ali na filial...
Um abraço... Conto com sua força;;
Pablo Rodrigues
GOSTEI 0
Werlon Goulart
09/11/2007
Estão me enviando msgs Privadas pra receberem as Rotinas, então decidi colocar aqui pra q qquer um possa utilizar.
Grande Abraço
Werlon Goulart.
//OBS.:Declare a Unit Registry no Uses.
Function Criptografa(Senha: String): String;
Var I: Integer;
Texto : String;
S: String[255];
C: Array[0..255] of Byte Absolute S;
begin
if Copy(Senha, 1, 1) = ´*´ then begin
Senha := Copy(Senha, 1, Length(Senha));
end;
S := Senha;
For I:=1 to Length(Senha) do begin
if Copy(Senha, 1, 1) = ´*´ then begin
Texto := Texto + Char(Ord(C[I]) Div 2);
end
else begin
Texto := Texto + Char(Ord(C[I]) * 2);
end;
if Copy(Senha, 1, 1) = ´*´ then begin
Result := Copy(Texto, 2, Length(Texto) - 1);
end
else begin
Result := ´*´ + Texto;
end;
end;
end;
Function Pega_Identificadores(): String;
//Pega o Número da Placa de Rede.
Function Pega_MacAddress(): String;
Var Lib: Cardinal;
Func: function(GUID: PGUID): Longint; Stdcall;
GUID1, GUID2: TGUID;
begin
Try
Result := ´´;
Lib := LoadLibrary(´RPCRT4.Dll´);
if Lib <> 0 then begin
@Func := GetProcAddress(Lib, ´UuidCreateSequential´);
if Assigned(Func) then begin
if (Func(@GUID1) = 0) and
(Func(@GUID2) = 0) and
(GUID1.D4[2] = GUID2.D4[2]) and
(GUID1.D4[3] = GUID2.D4[3]) and
(GUID1.D4[4] = GUID2.D4[4]) and
(GUID1.D4[5] = GUID2.D4[5]) and
(GUID1.D4[6] = GUID2.D4[6]) and
(GUID1.D4[7] = GUID2.D4[7]) then
begin
Result :=
IntToHex(GUID1.D4[2], 2) + ´-´ +
IntToHex(GUID1.D4[3], 2) + ´-´ +
IntToHex(GUID1.D4[4], 2) + ´-´ +
IntToHex(GUID1.D4[5], 2) + ´-´ +
IntToHex(GUID1.D4[6], 2) + ´-´ +
IntToHex(GUID1.D4[7], 2);
end;
end;
end;
Except
end;
end;
//Pega o Número de Série do HD (Drive C:).
Function Serial_HD(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 := PChar(´´);
end;
end;
//Pega o Numero de Série do Windows no Registro do Windows.
Function NumSerieWindows():String;
Var
Reg :TRegistry;
begin
Try
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion´,False);
//Retorna o Valor para o Chamador;
Result:=Reg.ReadString(´ProductId´);
Finally
Reg.free;
end;
end;
Var Texto :String;
begin
Try
Texto := Pega_MacAddress() + ´/´ +
Serial_HD(´C´) + ´/´ +
NumSerieWindows() ;
Result := Texto;
Except
end;
end;
//----Pra gerar a senha e contra senha basta juntar os dados q vc achar iinteressante e criptografar... Se achar interessante acrescentar um Digito verificador... Insira-o antes de criptografar......
Esta é a base o resto vc inventa ai conforme sua necessidade.
Grande Abraço
Werlon Goulart.
//OBS.:Declare a Unit Registry no Uses.
Function Criptografa(Senha: String): String;
Var I: Integer;
Texto : String;
S: String[255];
C: Array[0..255] of Byte Absolute S;
begin
if Copy(Senha, 1, 1) = ´*´ then begin
Senha := Copy(Senha, 1, Length(Senha));
end;
S := Senha;
For I:=1 to Length(Senha) do begin
if Copy(Senha, 1, 1) = ´*´ then begin
Texto := Texto + Char(Ord(C[I]) Div 2);
end
else begin
Texto := Texto + Char(Ord(C[I]) * 2);
end;
if Copy(Senha, 1, 1) = ´*´ then begin
Result := Copy(Texto, 2, Length(Texto) - 1);
end
else begin
Result := ´*´ + Texto;
end;
end;
end;
Function Pega_Identificadores(): String;
//Pega o Número da Placa de Rede.
Function Pega_MacAddress(): String;
Var Lib: Cardinal;
Func: function(GUID: PGUID): Longint; Stdcall;
GUID1, GUID2: TGUID;
begin
Try
Result := ´´;
Lib := LoadLibrary(´RPCRT4.Dll´);
if Lib <> 0 then begin
@Func := GetProcAddress(Lib, ´UuidCreateSequential´);
if Assigned(Func) then begin
if (Func(@GUID1) = 0) and
(Func(@GUID2) = 0) and
(GUID1.D4[2] = GUID2.D4[2]) and
(GUID1.D4[3] = GUID2.D4[3]) and
(GUID1.D4[4] = GUID2.D4[4]) and
(GUID1.D4[5] = GUID2.D4[5]) and
(GUID1.D4[6] = GUID2.D4[6]) and
(GUID1.D4[7] = GUID2.D4[7]) then
begin
Result :=
IntToHex(GUID1.D4[2], 2) + ´-´ +
IntToHex(GUID1.D4[3], 2) + ´-´ +
IntToHex(GUID1.D4[4], 2) + ´-´ +
IntToHex(GUID1.D4[5], 2) + ´-´ +
IntToHex(GUID1.D4[6], 2) + ´-´ +
IntToHex(GUID1.D4[7], 2);
end;
end;
end;
Except
end;
end;
//Pega o Número de Série do HD (Drive C:).
Function Serial_HD(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 := PChar(´´);
end;
end;
//Pega o Numero de Série do Windows no Registro do Windows.
Function NumSerieWindows():String;
Var
Reg :TRegistry;
begin
Try
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion´,False);
//Retorna o Valor para o Chamador;
Result:=Reg.ReadString(´ProductId´);
Finally
Reg.free;
end;
end;
Var Texto :String;
begin
Try
Texto := Pega_MacAddress() + ´/´ +
Serial_HD(´C´) + ´/´ +
NumSerieWindows() ;
Result := Texto;
Except
end;
end;
//----Pra gerar a senha e contra senha basta juntar os dados q vc achar iinteressante e criptografar... Se achar interessante acrescentar um Digito verificador... Insira-o antes de criptografar......
Esta é a base o resto vc inventa ai conforme sua necessidade.
GOSTEI 0