Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eltomarley

Verificação de arquivo por MD5

Recommended Posts

Bom estou fazendo um projeto que no caso e um launcher para um jogo online.

esta quase todo terminado, só esta faltando uma verificação de arquivos por MD5, que estou querendo implementar.

mais no caso e para verificar um único arquivo, main.exe.

 

A ideia que eu tenho e a seguinte: Deixar este arquivo main.exe na hospedagem em uma pasta qualquer, e tiro o MD5 deste arquivo main.exe e coloco em um arquivo.txt onde o launcher ira comparar o MD5 original do main.exe que estará no cliente dos plays, caso seja diferente o launcher automaticamente baixa o main.exe que esta na hospedagem para o cliente do play substituindo assim o main.exe que ali antes estava.

 

 

Se alguem poder me ajudar eu agradeço muito.

 

Só para informação eu uso para fazer download o IDFTP.GET, e uso a linguagem Pascal e a IDE DELPHI XE8.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o codigo para checar md5 do arquivo:

 

Code:

uses:  IdHashMessageDigest,System.Classes,System.SysUtils
function TForm1.MD5Check(const Filename: string): string;
 var
  MD5: TIdHashMessageDigest5;
  Arquivo: TFileStream;
 begin
  MD5 := TIdHashMessageDigest5.Create;
  Arquivo := TFileStream.Create(Filename, fmOpenRead OR fmShareDenyWrite);
  try
    Result := MD5.HashStreamAsHex(Arquivo);
  finally
    Arquivo.Free;
    MD5.Free;
  end;
end;

Para fazer a verificação do arquivo:

 var
  md5code: string;
 begin
  md5code:= 'Coloque o codigo md5 aqui.';
    if (md5code=MD5Check(ExtractFilePath(ParamStr(0)) + 'main.exe')) then
     begin
      MessageBox(Application.Handle,'Liberado para jogatina.','Sucesso',mb_ok+mb_iconinformation);
     end
     else
      begin
       MessageBox(Application.Handle,'Bloqueado para jogatina.Por favor contate um administrador.','Erro',mb_ok+mb_iconerror);
      end;
end;

Para pegar o código do arquivo:

Label1.Caption:= (Md5Check(ExtractFilePath(ParamStr(0)) + 'main.exe');

Obs:Não coloque o md5 do arquivo em um txt,a menos que ele possa ser criado com atributos (como invisivel,ou reter modificação), pois sera de facil modificação e ira comprometer o sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o codigo para checar md5 do arquivo:

 

Code:

uses:  IdHashMessageDigest,System.Classes,System.SysUtils
function TForm1.MD5Check(const Filename: string): string;
 var
  MD5: TIdHashMessageDigest5;
  Arquivo: TFileStream;
 begin
  MD5 := TIdHashMessageDigest5.Create;
  Arquivo := TFileStream.Create(Filename, fmOpenRead OR fmShareDenyWrite);
  try
    Result := MD5.HashStreamAsHex(Arquivo);
  finally
    Arquivo.Free;
    MD5.Free;
  end;
end;

Para fazer a verificação do arquivo:

 var
  md5code: string;
 begin
  md5code:= 'Coloque o codigo md5 aqui.';
    if (md5code=MD5Check(ExtractFilePath(ParamStr(0)) + 'main.exe')) then
     begin
      MessageBox(Application.Handle,'Liberado para jogatina.','Sucesso',mb_ok+mb_iconinformation);
     end
     else
      begin
       MessageBox(Application.Handle,'Bloqueado para jogatina.Por favor contate um administrador.','Erro',mb_ok+mb_iconerror);
      end;
end;

Para pegar o código do arquivo:

Label1.Caption:= (Md5Check(ExtractFilePath(ParamStr(0)) + 'main.exe');

Obs:Não coloque o md5 do arquivo em um txt,a menos que ele possa ser criado com atributos (como invisivel,ou reter modificação), pois sera de facil modificação e ira comprometer o sistema.

Primeiramente muito obrigado pela Atenção!!!

 

Bom quando eu falei que colocaria o md5 em um arquivo.txt, este arquivo.txt ficara na hospedagem. ai o launcher vai ler o código md5 na hospedagem e comparar com o md5 direto do main.exe, que esta no cliente do play, caso seja diferente o launcher vai baixar o main.exe que estara disponivel na hospedagem.

Não terá arquivo.txt com md5 no cliente que ficara na casa do play. A comparação do MD5 será do arquivo.txt que estará na hospedagem direto com o MD5 do main.exe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.