Página 1 de 1

Diferenças na decriptaçao de senhas como resolver?

Enviado: 28 Out 2015 10:29
por Nascimento
Amigos estou portando um sistema antes em clipper porteio para harbour console e agora estou portando para minigui

me deparei com uma coisa intrigante na decriptaçao de senha ate simples segue as imagens para os amigos entenderem e se é possivel a correção

ja que meu proposito é atualizar o sistema então manter a mesma senha é mais comodo do que trocar as senhas de todos operador entre matriz e filias

coloquei uma senha simples "102030"
printei o resultado compilado com so com a gtwvt (em console)  e abaixo compilada com a minigui
printei o resultado compilado com so com a gtwvt (em console) e abaixo compilada com a minigui
agora vamos aos codigos

com gtwvt

Código: Selecionar todos

Function main()

local n


use senha new shared 

dcript:= Space(0)
  for n:= 1 to 8
     if (SubStr(senha, n, 1) != " ")
        dcript:= dcript + Chr(Asc(Upper(SubStr(senha, n, 1))) - 100 - n)
     else
        dcript:= dcript + " "
     endif
   next

alert("A SENHA E "+ dcript)



com minigui

Código: Selecionar todos

#include "minigui.ch"

FUNCTION Main()
local n


use senha new shared 

dcript:= Space(0)
  for n:= 1 to 8
     if (SubStr(senha, n, 1) != " ")
        dcript:= dcript + Chr(Asc(Upper(SubStr(senha, n, 1))) - 100 - n)
     else
        dcript:= dcript + " "
     endif
   next

   DEFINE WINDOW Form_1             ;
      AT 90,90                      ;
      WIDTH 400                     ;
      HEIGHT 150                    ;
      TITLE "Apresenta senha"  ;
      MAIN
   END WINDOW

   @ 30, 75 LABEL senha ;
      PARENT Form_1       ;
      font "verdana"      ;
      bold size 12        ;
      autosize            ;
      VALUE "A SENHA É " +dcript ;
      

   Form_1.Activate

   RETURN NIL
senha.rar
e finalmente o dbf usado nos 2 para o respectivo teste
(138 Bytes) Baixado 64 vezes
Att: Nascimento

Diferenças na decriptaçao de senhas como resolver?

Enviado: 28 Out 2015 11:27
por Mario Mesquita
Bom dia.

Boa pergunta! Eu também estou portando um sistema Clipper para MiniGui e a decriptação de senha na HMG não é igual ao resultado no Clipper.

O que consegui é comparar o texto criptografado com a senha arquivada. Ou seja, o usuário digita a senha, o programa criptografa e compara com a senha arquivada e criptografada. Isso funciona.

Mas a decriptação não consegui. Se os colegas souberem algo...

Sds,
Mario.

Diferenças na decriptaçao de senhas como resolver?

Enviado: 28 Out 2015 11:33
por Nascimento
pois é amigo mario tentei como voce ta dizendo mais a criptografia boba como ta ai tambem nao ficou digamos igual
o incoveniente que causa disso é que como estamos portando e pretendemos atualizar geralmente remoto as senhas nao iram bater
o que complica rsrs :-O

Diferenças na decriptaçao de senhas como resolver?

Enviado: 28 Out 2015 12:05
por Toledo
Nascimento, se você verificar no Clipper o UPPER do campo SENHA, vai notar que não muda nada, apenas a letra L que tem um correspondente em MAIÚSCULO, mas pelo jeito o último caracter do campo senha (letra L) não faz parte da senha. Já na MiniGui, o UPPER do campo SENHA, alguns caracteres tem seu correspondente em MAIÚSCULO, diferente do que ocorre no Clipper.

Então, se a letra L (último caracter do campo SENHA) não faz parte da senha, então retire a função UPPER que está na sua função de encriptação.

Código: Selecionar todos

dcript:= dcript + Chr(Asc(SubStr(senha, n, 1)) - 100 - n)
Obs.: no calculo da sua rotina de encriptação, a letra L (minúsculo), que está no final do campo senha (posição 8), vai retornar um valor NEGATIVO (-32), então não sei qual será o retorno de CHR(-32). Calculo: (L = 76) - 100 - 8 = -32

Abraços,

Diferenças na decriptaçao de senhas como resolver?

Enviado: 28 Out 2015 13:35
por Nascimento
toledo funcionou , mais nao funcionou rsrs explicando modifiquei o codigo para ver se batia as criptos e o resultado nao foi la muito bom

1º decriptei o que tem no campo senha retornando a 102030 ok

2º criei uma variavel de nome c_crip para simular a digitaçao da mesma "102030"

3º imprimi na tela o valor decriptado do dbf o retorno da c_crip e o que esta no banco

4º observe que fica diferente a cripto que esta no banco com a cripto que foi gerada :%
erro.jpg
segue o codigo abaixo

Código: Selecionar todos

#include "minigui.ch"

FUNCTION Main()
local n


use senha new shared 

c_crip:="102030"  // aqui é como fosse uma digitaçao da senha 

dcript:= Space(0)
  for n:= 1 to 8
     if (SubStr(senha, n, 1) != " ")
        dcript:= dcript + Chr(Asc(SubStr(senha, n, 1)) - 100 - n)
     else
        dcript:= dcript + " "
     endif
   next

   cript:= Space(0)
  for n:= 1 to 8
     if (SubStr(c_crip, n, 1) != " ")
        cript:= cript + Chr(Asc(SubStr(c_crip, n, 1)) + 100 + n)
     else
        cript:= cript + " "
     endif
   next
   
   
   DEFINE WINDOW Form_1             ;
      AT 90,90                      ;
      WIDTH 460                     ;
      HEIGHT 250                    ;
      TITLE "Apresenta senha"  ;
      MAIN
   END WINDOW

   @ 30, 75 LABEL senha ;
      PARENT Form_1       ;
      font "verdana"      ;
      bold size 12        ;
      autosize            ;
      VALUE "A SENHA DECRIPTADA É " +dcript  // aqui decripta a senha do banco ok
		 
  @ 60, 75 LABEL senha2 ;
      PARENT Form_1       ;
      font "verdana"      ;
      bold size 12        ;
      autosize            ;
      VALUE "SIMULANDO A CRIPTO " +Win_OemToAnsi(cript) // aqui eu gerei a cripto para simular uma comparaçao
		
	  @ 90, 75 LABEL senha3 ;
      PARENT Form_1       ;
      font "verdana"      ;
      bold size 12        ;
      autosize            ;
      VALUE "CONTEUDO DO CAMPO SENHA " +Win_OemToAnsi(senha) // e aqui é a cripto que tem no banco	 

   Form_1.Activate

   RETURN NIL

Diferenças na decriptaçao de senhas como resolver?

Enviado: 28 Out 2015 14:05
por Toledo
Mude esta variável, coloque um espaço em branco no início:

Código: Selecionar todos

c_crip:=" 102030"  // aqui é como fosse uma digitaçao da senha
Observe no campo SENHA do seu arquivo DBF que existe um espaço em branco no início do campo.

Abraços,

Diferenças na decriptaçao de senhas como resolver?

Enviado: 29 Out 2015 14:14
por Nascimento
Resolvido agradeço a todos!