Ir para conteúdo
  • Cadastre-se

dev botao

Gerar Hash Do Pin Para Alterar .ini Via Aplicação


  • Este tópico foi criado há 3411 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde,

 

Estou desenvolvendo uma aplicação multi-empresa que inicia instâncias do ACBrNFe monitor dinamicamente, e que altera o arquivo .ini conforme o usuário altera os dados na aplicação. Umas das informações que preciso manipular é PIN do certificado. Percebi que o mesmo fica criptografado no .ini.

 

Tentei usar o comando que está no manual:

 

NFe.SetCertificado(cCertificado,cSenha) // Versão OpenSSL

NFe.SetCertificado(cNumCertificado) // Versão CAPICOM

 

O primeiro comando acima alterou apenas o número do certificado creio que porque uso CAPICOM. Alguém sabe o método de criptografia usado ou em onde posso encontrar esse algoritmo para traduzir para a linguagem que uso(C#).

 

Obrigado

Editado por murilosantos_global
Link para o comentário
Compartilhar em outros sites

  • Moderadores

O ACBrNFeMonitor é um projeto OpenSource, baixe os fontes do aplicativo via SVN e analise a função LeINICrypt.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Analisando onde o código tem referência à LeINICrypt, encontrei utilização da função StrCrypt, que tentei traduzir a mesma. Não consegui fazer funcionar para o texto do corpo do e-mail. Se algum quiser colaborar agradeço, mas não preciso dessa informação por hora. Segue fonte C#, o original, e alguns testes de mesa.

 

Pin original: 10203040

Pin no arquivo .ini: 4569591A06677444

Pin retornado na função: 4569591A06677444

 

senha de email:Glob@l123456_#global!

senha do email no arquivo .ini: 33350448753B71466A5F1F03086313350448543B61

senha retornada pela função: 33350448753B71466A5F1F03086313350448543B61

        /// <summary>
        /// Recebe conteúdo que será encriptografado para ser salvo no arquivo ACBrMonitorNFE.ini
        /// </summary>
        /// <param name="strConteudoCriptografar">Informação a ser criptografada, como senha do e-mail ou do pin do certificado etc</param>
        /// <returns>Retorna "string" que representa a informação encriptografada</returns>
        public string CriptografarStringParaACBrMonitor(string strConteudoCriptografar)
        {
            string strChave = "tYk*5W@"; // chave encontrada nos fontes do ACBrMonitor: ACBrMonitor1.pas, linha 54
            int intTamanhoTexto = strConteudoCriptografar.Length; ;
            int intPos = 0;
            int intPosLetra = 0;
            int intTamanhoChave = strChave.Length;
            string strTextoEncriptografado = "";

            for (int i = 0; i < intTamanhoTexto; i++)
            {
                intPos = (i + 1) % intTamanhoChave;
                if (intPos == 0)
                    intPos = intTamanhoChave;

                intPosLetra = (int)strConteudoCriptografar[i] ^ (int)strChave[intPos - 1];
                strTextoEncriptografado += string.Format("{0:X2}", intPosLetra);

            }
            return strTextoEncriptografado;
        }
function StrCrypt(const AString, StrChave: AnsiString): AnsiString;
        var
          i, TamanhoString, pos, PosLetra, TamanhoChave: Integer;
          C : AnsiString ;
        begin
          Result        := AString;
          TamanhoString := Length(AString);
          TamanhoChave  := Length(StrChave);

          for i := 1 to TamanhoString do
          begin
             pos := (i mod TamanhoChave);
             if pos = 0 then
                pos := TamanhoChave;

             posLetra := ord(Result[i]) xor ord(StrChave[pos]);
             if posLetra = 0 then
                posLetra := ord(Result[i]);

             C := AnsiChar( chr(posLetra) );
             Result[i] := C[1] ;
          end;
        end ;
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3411 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.