GeraCodigo
ola pessoal... eu gostaria de fazer o seguinte:
num form tm um edit e um botao
qdo o cara clikar no botao ... gerar um codigo aleatorio,,
digamos o sistema pega a palavra ( bixopreguiça ) e com essa palavra ele gera um codigo ex:
AH390Ik4T2VA3
e depois tm outro form q vai pedir esse codigo,,,, no evento clike do botao desses outro form,,,, ele decifra esse codigo,,,, c na decifra ele axar a palavra ( bixopreguica ) eele libera o programa senaum da erro??
alguem sabe fazer issu?
num form tm um edit e um botao
qdo o cara clikar no botao ... gerar um codigo aleatorio,,
digamos o sistema pega a palavra ( bixopreguiça ) e com essa palavra ele gera um codigo ex:
AH390Ik4T2VA3
e depois tm outro form q vai pedir esse codigo,,,, no evento clike do botao desses outro form,,,, ele decifra esse codigo,,,, c na decifra ele axar a palavra ( bixopreguica ) eele libera o programa senaum da erro??
alguem sabe fazer issu?
Output
Curtidas 0
Respostas
Dpinho
16/09/2006
ola pessoal... eu gostaria de fazer o seguinte:
num form tm um edit e um botao
qdo o cara clikar no botao ... gerar um codigo aleatorio,,
digamos o sistema pega a palavra ( bixopreguiça ) e com essa palavra ele gera um codigo ex:
AH390Ik4T2VA3
e depois tm outro form q vai pedir esse codigo,,,, no evento clike do botao desses outro form,,,, ele decifra esse codigo,,,, c na decifra ele axar a palavra ( bixopreguica ) eele libera o programa senaum da erro??
alguem sabe fazer issu?
Melhor seria utilizar uma rotina de criptografica:
[color=red:4dabf69033]function Crypt(Action, Src: String): String;
Label Fim;
var KeyLen : Integer;
KeyPos : Integer;
OffSet : Integer;
Dest, Key : String;
SrcPos : Integer;
SrcAsc : Integer;
TmpSrcAsc : Integer;
Range : Integer;
begin
if (Src = ´´) Then
begin
Result:= ´´;
Goto Fim;
end;
Key :=
´YUQL23KL23DF90WI5E1JAS467NMCXXL6JAOAUWWMCL0AOMM4A4VZYW9KHJUI2347EJHJKDF3424SKL K3LAKDJSL9RTIKJ´;
Dest := ´´;
KeyLen := Length(Key);
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range := 256;
if (Action = UpperCase(´C´)) then
begin
Randomize;
OffSet := Random(Range);
Dest := Format(´¬1.2x´,[OffSet]);
for SrcPos := 1 to Length(Src) do
begin
Application.ProcessMessages;
SrcAsc := (Ord(Src[SrcPos]) + OffSet) Mod 255;
if KeyPos < KeyLen then KeyPos := KeyPos + 1 else KeyPos := 1;
SrcAsc := SrcAsc Xor Ord(Key[KeyPos]);
Dest := Dest + Format(´¬1.2x´,[SrcAsc]);
OffSet := SrcAsc;
end;
end
Else if (Action = UpperCase(´D´)) then
begin
OffSet := StrToInt(´$´+ copy(Src,1,2));
SrcPos := 3;
repeat
SrcAsc := StrToInt(´$´+ copy(Src,SrcPos,2));
if (KeyPos < KeyLen) Then KeyPos := KeyPos + 1 else KeyPos := 1;
TmpSrcAsc := SrcAsc Xor Ord(Key[KeyPos]);
if TmpSrcAsc <= OffSet then TmpSrcAsc := 255 + TmpSrcAsc - OffSet
else TmpSrcAsc := TmpSrcAsc - OffSet;
Dest := Dest + Chr(TmpSrcAsc);
OffSet := SrcAsc;
SrcPos := SrcPos + 2;
until (SrcPos >= Length(Src));
end;
Result:= Dest;
Fim:
end;
Usa-se C para Criptografar e D para Descriptografar
Ex de Criptografia:
Edit2.text:= Crypt(´C´,Edit1.text);
Ex: de Descriptografia
Edit3.text:= Crypt(´D´,Edit2.text); [/color:4dabf69033]
Veja bem entrei com [color=red:4dabf69033]bixopreguiça[/color:4dabf69033] e saiu [color=blue:4dabf69033]00030E2530C55E92EB72886490[/color:4dabf69033]
Espero que ajude...
GOSTEI 0
Output
16/09/2006
kra,,, desculpe,,, mah axo q naum expliquei direito:
seguinte:
tipow o programa q eu to fazendo, a licenca dele vence todo dia 30 digamos...
entao qdo vence ,,, o programa tinha q travar e gerar um codigo aleatorio....
onde o cliente me passava esse codigo e eu atraves desse codigo gerava outro codigo q liberava o sistema ....
entende,,,
seria tipow o sistema usava o ´BIXOPREGUICA´ como um padrão pra gerar esse codigo aleatorio, e depois eu usava esse codigo gerado atraves do BIXOPREGUIÇA pra gerar outro codigo q libera o sistema...
voce pode me ajudar ?? sera q teria outra forma mais pratica??
seguinte:
tipow o programa q eu to fazendo, a licenca dele vence todo dia 30 digamos...
entao qdo vence ,,, o programa tinha q travar e gerar um codigo aleatorio....
onde o cliente me passava esse codigo e eu atraves desse codigo gerava outro codigo q liberava o sistema ....
entende,,,
seria tipow o sistema usava o ´BIXOPREGUICA´ como um padrão pra gerar esse codigo aleatorio, e depois eu usava esse codigo gerado atraves do BIXOPREGUIÇA pra gerar outro codigo q libera o sistema...
voce pode me ajudar ?? sera q teria outra forma mais pratica??
GOSTEI 0
Dpinho
16/09/2006
se voce pesquisar no forum sobre este assunto veras muitos topicos referente a segurança de sistemas e sistemas demo, tem um topico meu mesmo onde estou tentando alterar um componente open source para esta finalidade. com este componente tu pode travar e gera codigo de trava por mês, dia, periodo.
So estou enfrentando problema para buscar o serial do HD e da placa mãe para evitar que meu cliente instale o programa em outro micro. poderia dar uma olhada nos topicos e se estiver afim de me ajudar a desenvolver este componente seria legal.
So estou enfrentando problema para buscar o serial do HD e da placa mãe para evitar que meu cliente instale o programa em outro micro. poderia dar uma olhada nos topicos e se estiver afim de me ajudar a desenvolver este componente seria legal.
GOSTEI 0
Raserafim
16/09/2006
DPinho, dá uma olhada neste tópico:
http://forum.clubedelphi.net/viewtopic.php?t=80777
http://forum.clubedelphi.net/viewtopic.php?t=80777
GOSTEI 0
Dpinho
16/09/2006
DPinho, dá uma olhada neste tópico:
http://forum.clubedelphi.net/viewtopic.php?t=80777
Amigo é justamente o que não quero, somente o numero serial da partição. Conseguir nos topicos um codigo postato pelo Vinicius2k que retornar o serial de fabrica.
Estava vendo o componente TmxProtector e ele ler o serial da partição, quero alterar a linha que retorna este serial para que ele possa ler o serial de fabrica e algum dando da placa mãe
Veja esta função do componente retornar o serial da partição:
[color=red:b358662c84]Function TmxProtector.GetHardwareID: String;
Var
TempStr: String;
Begin
TempStr := InternalGetHardwareID;
If TempStr <> ´´ Then
Result := Format( ´¬s-¬s-¬s-¬s´, [ Copy( TempStr, 1, 4 ), Copy( TempStr, 5, 4 ), Copy( TempStr, 9, 4 ), Copy( TempStr, 13, 4 ) ] ) Else
Result := ´´;
End;[/color:b358662c84]
Preciso mudar para retornar o serial de fabrica do hd e alguma informação da bios. Assim se o hd for formatado o cliente de meu sistema pode continuar a utilizar o mesmo serial anterior, mas caso ele troque de hd ou bios tera que entrar em contato comigo para adquirir outro serial.
GOSTEI 0
Marco Salles
16/09/2006
desculpe Dpinho... Não entendi nada do que postaste
[b:a392821acd]raserafim escreveu[/b:a392821acd]
voce sisse que não quer :
[b:a392821acd]Dpinho Escreveu[/b:a392821acd]
e logo a seguir voce diz:
[b:a392821acd]Dpinho Escreveu[/b:a392821acd]
Afinal . O Codigo do Vinicius retorna ou não retorna o Seria da fabrica ???
Ate o momento , <este topico ja tem bastante tempo que fora postado >, acredito que dependendo do tipo de Hd , esta função seria a mesma , formatando ou não o Hd...
Mas voce disse que lhe serve e depois disse que não lhe serve ????
Fiquei sem entender.
[b:a392821acd]raserafim escreveu[/b:a392821acd]
DPinho, dá uma olhada neste tópico:
http://forum.clubedelphi.net/viewtopic.php?t=80777
voce sisse que não quer :
[b:a392821acd]Dpinho Escreveu[/b:a392821acd]
Amigo é justamente o que não quero
e logo a seguir voce diz:
[b:a392821acd]Dpinho Escreveu[/b:a392821acd]
Conseguir nos topicos um codigo postato pelo Vinicius2k que retornar o serial de fabrica.
Afinal . O Codigo do Vinicius retorna ou não retorna o Seria da fabrica ???
Ate o momento , <este topico ja tem bastante tempo que fora postado >, acredito que dependendo do tipo de Hd , esta função seria a mesma , formatando ou não o Hd...
Mas voce disse que lhe serve e depois disse que não lhe serve ????
Fiquei sem entender.
GOSTEI 0
Dpinho
16/09/2006
viu a rotina que postei?
o que preciso e alterar ela para retornar o numero de fabrica do hd, como na rotina que o Vinicius postou, so não estou sabendo como alterar o componente
Ele retorna o numero da partição, quero alterar para retornar o serial de fabrica
o que preciso e alterar ela para retornar o numero de fabrica do hd, como na rotina que o Vinicius postou, so não estou sabendo como alterar o componente
Ele retorna o numero da partição, quero alterar para retornar o serial de fabrica
GOSTEI 0
Marco Salles
16/09/2006
e porque voce não usa a função do vinicius ???
não funciona por acaso ????
não funciona por acaso ????
GOSTEI 0
Dpinho
16/09/2006
ja tentei alterar utilizando ela, mas não deu certo
GOSTEI 0
Mahdak
16/09/2006
gerando o código....
recebendo o código:
Obs: No form que vai receber o codigo coloque um edit ´edit_Ativa.Text´
e um botao, onde vai estar o código acima.
voce vai gerar o codigo no form que gera o mesmo com o primeiro codigo descrito e colar o codigo gerado no ´edit_ativa´ para a verificação.
OBS: esse procedimento tem alguns problemas, só fiz ele para voce se basear e implementar algo melhor para a sua necessidade
abraços!
procedure TGera.Btn_GeraClick(Sender: TObject); var i:integer; const str=´1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ´; max=6; begin // string de geração Edit_str.Text := ´BIXOPREGUICA´; // random Edit_Gera.Text := ´´; for i:=1 to max do Edit_Gera.Text := Edit_gera.Text+str[random(length(str))+1]; // Resultado Edit_R.text := ´´; For i:=1 to length(Edit_str.Text) do begin Edit_R.text:=Edit_R.text+copy(Edit_str.text,i,1); Edit_R.text:=Edit_R.text+copy(Edit_Gera.text,i,1); End; end;
recebendo o código:
procedure TVerifica.Btn_verificaClick(Sender: TObject); var i:integer; const str=´1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ´; max=6; begin // string de verificação Edit_str.Text := ´BIXOPREGUICA´; // random Edit_Gera.Text := ´´; for i:=1 to max do Edit_Gera.Text := Edit_gera.Text+str[random(length(str))+1]; // Resultado Edit_R.text := ´´; For i:=1 to length(Edit_str.Text) do begin Edit_R.text:=Edit_R.text+copy(Edit_str.text,i,1); Edit_R.text:=Edit_R.text+copy(Edit_Gera.text,i,1); End; if edit_Ativa.Text = Edit_R.text then ShowMessage(´Código certo.´) else ShowMessage(´Código Errado.´); end;
Obs: No form que vai receber o codigo coloque um edit ´edit_Ativa.Text´
e um botao, onde vai estar o código acima.
voce vai gerar o codigo no form que gera o mesmo com o primeiro codigo descrito e colar o codigo gerado no ´edit_ativa´ para a verificação.
OBS: esse procedimento tem alguns problemas, só fiz ele para voce se basear e implementar algo melhor para a sua necessidade
abraços!
GOSTEI 0
Raserafim
16/09/2006
[quote:356da30602]raserafim escreveu:
DPinho, dá uma olhada neste tópico:
http://forum.clubedelphi.net/viewtopic.php?t=80777
Amigo é justamente o que não quero, somente o numero serial da partição. Conseguir nos topicos um codigo postato pelo Vinicius2k que retornar o serial de fabrica.
Estava vendo o componente TmxProtector e ele ler o serial da partição, quero alterar a linha que retorna este serial para que ele possa ler o serial de fabrica e algum dando da placa mãe
[/quote:356da30602]
justamente o número de fábrica.
no link que postei tem um outro link para vc baixar o código.
GOSTEI 0
Output
16/09/2006
Valeu mahdak,,, era issu msm q eu qria....
mto obrigado pela força
mto obrigado pela força
GOSTEI 0
Output
16/09/2006
Valeu mahdak,,, era issu msm q eu qria....
mto obrigado pela força
mto obrigado pela força
GOSTEI 0
Output
16/09/2006
Vlw mahdak,,, era issu msm q eu qria ...
obrigado pela dica
obrigado pela dica
GOSTEI 0