Primeiramente desculpe se a postagem esta no lugar errado, espero que aqui seja o lugar certo.
Meu nome é Jefferson, sou engenheiro eletricista e atuo na área de suporte a informatica. Não atuo em programação,
meus conhecimentos nessa área são limitados.
Estou com uma situação que acredito os senhores podem ajudar.
Um novo cliente, possui/possuÃa um sistema de gerenciamento feito em clipper, que rodava em uma cpu com DOS puro.
Depois de uns 15 anos funcionando bem, temos que o disco rÃgido apresentou problema.
Consegui restaurar 95% de tudo mas faltou alguns arquivos.
Basicamente tenho o executável e a base de dados, os arquivos .dbf todos ok. (código fonte também possuo)
O sistema usava um arquivo (siasca.snh) que ficava na raiz do C: para validar a senha do usuário. Esse arquivo não existe
mais nem temos copia de backup. Sem esse arquivo, o sistema apresentava erro, indicando a falta desse arquivo e encerrava.
Criei uma base de dados vazia e coloquei no lugar, o sistema apresentou erro indicando agora o campo que buscava (CODSENHA)
Coloquei dentro do novo arquivo o campo CODSENHA e o valor a senha (XXXX).
Temos agora o sistema ate reconhece, mas sempre acusa a senha errada.
Analisando o código fonte, vejo que o programador criou uma "criptografia" na senha digitada que será comparada com o valor do arquivo.
Penso se conseguir interpretar essa codificação, e saber qual o valor resultante de uma senha 1234, por exemplo, e salvar esse valor no
arquivo de senha, conseguirei recuperar o sistema desse cliente.
Se alguém puder ajudar, ou dar alguma sugestão agradeço.
abaixo a parte do código referente a senha.
Grato
FUNCTION SENHA
MENSAGEM("Digite o nome do operador")
JANELA(7,16,17,62,"Acesso ao sistema")
COR("MENU")
@10,22 CLEAR TO 14,56
@11,24 SAY "Operador :"
@13,24 SAY "Senha : [úúúúúúúúú]"
M->SENHA=""
M->OPERADOR=SPACE(20)
M->TEC=0
@11,35 GET M->OPERADOR PICT "@!" VALID .NOT. EMPTY(M->OPERADOR)
SET CURSOR ON
READ
SET CURSOR OFF
MENSAGEM("Digite a senha para acesso ao sistema")
SETCOLOR(CONTECOR[3])
@13,35 SAY "[úúúúúúúúú]"
FOR M->P_SENHA=36 TO 44
M->TEC=INKEY(0)
IF M->TEC=8
IF M->P_SENHA>36
M->P_SENHA=M->P_SENHA-1
@13,M->P_SENHA SAY "ú"
M->SENHA=SUBS(M->SENHA,1,LEN(M->SENHA)-1)
ENDIF
M->P_SENHA=M->P_SENHA-1
ELSE
M->SENHA=M->SENHA+CHR(M->TEC)
IF M->TEC=13 .OR. M->TEC=27
EXIT
ENDIF
@13,M->P_SENHA SAY "þ"
ENDIF
NEXT
M->SENHA=UPPER(M->SENHA)
COD_FICA(@SENHA)
M->NOM_ARQ="SIASCA.SNH"
IF .NOT. FILE(M->NOM_ARQ)
SET CURSOR OFF
BEEP()
MENSAGEM("Arquivo de senhas n„o se encontra dispon¡vel",3)
SET COLOR TO W
SET CURSOR ON
CLEAR
QUIT
ENDIF
USE &NOM_ARQ
GOTO TOP
M->NIVEL=" "
DO WHILE .NOT. EOF()
IF CODSENHA==M->SENHA
M->NIVEL=ACESSO
EXIT
ENDIF
SKIP
ENDDO
USE
SET CURSOR ON
RETURN M->NIVEL