Página 1 de 1

Algoritmo de criptografia

Enviado: 11 Jul 2008 21:35
por pca
Bem pessoal estou transferindo pra cá o assunto que começou no bate-papo seguindo o conselho dos pessoal que acessou o post lá, segue aqui o link do conversa anterior se voces quiserem dar uma lida pra entender o que está acontecendo, mas vou mesmo assim vou fazer um resumo aqui.

viewtopic.php?f=5&t=8328&p=46787#p46787

Acontece o siguint...

Estou precisando de ajuda para decifrar esse algoritmo e fazer esse programinha funcionar, é um programa antigo e o que ocorre é que ele ao ser instalado verifica o vol do HD e se o HD for diferente ou caso alguem tenha formatado este nao funcionará na maquina. abaixo listo codigo que acho é a chave pra desvendar o problema e atachado o EXE completo do modulo que (acho eu) faz a verificação do HD, se alguem quiser o programinha completo é só me avisar que mando por email, se houver muitas solicitações eu coloco na rapidshare ou outro lugar pra download, segue o codigo:

Código: Selecionar todos

procedure CRIACODC
   run c:
   run cd\tecnolar
   run vol > c:\tecnolar\arqt1.txt
   xbuf:= memoread("arqt1.txt")
   run DEL arqt1.*
   percfim()
   for xni:= 1 to 92
      aa[xni]:= Upper(SubStr(xbuf, xni, 1))
   next
   for cc:= 1 to 92
      if (aa[cc] = "F")
         aa[cc]:= "9"
      endif
      if (aa[cc] = "G")
         aa[cc]:= "8"
      endif
      if (aa[cc] = "H")
         aa[cc]:= "7"
      endif
      if (aa[cc] = "I")
         aa[cc]:= "6"
      endif
      if (aa[cc] = "J")
         aa[cc]:= "5"
      endif
      if (aa[cc] = "A")
         aa[cc]:= "19"
      endif
      if (aa[cc] = "B")
         aa[cc]:= "18"
      endif
      if (aa[cc] = "C")
         aa[cc]:= "17"
      endif
      if (aa[cc] = "D")
         aa[cc]:= "16"
      endif
      if (aa[cc] = "E")
         aa[cc]:= "15"
      endif
      if (aa[cc] = " ")
         aa[cc]:= "1"
      endif
      if (aa[cc] = "-")
         aa[cc]:= "9"
      endif
      if (aa[cc] = "_")
         aa[cc]:= "2"
      endif
   next
   chav:= 0
   for cc:= 1 to 92
      chav:= chav + Val(aa[cc])
   next
   wcod:= (chav + 321) * (123 + wmod)
   codcalcc:= strzero(wcod, 10, 0)
   return
E achei tambem este aqui, o CRIACODB

Código: Selecionar todos

procedure CRIACODB
   run "vol &B: > c:\tecnolar\arqt1.txt"
   run c:
   run cd\
   run cd\tecnolar
   xbuf:= memoread("arqt1.txt")
   run DEL arqt1.*
   for xni:= 1 to 92
      aa[xni]:= Upper(SubStr(xbuf, xni, 1))
   next
   for xni:= 1 to 83
      if (aa[xni] = Space(1) .AND. aa[xni + 1] >= "0" .AND. ;
            aa[xni + 1] <= "F" .AND. aa[xni + 2] >= "0" .AND. ;
            aa[xni + 2] <= "F" .AND. aa[xni + 3] >= "0" .AND. ;
            aa[xni + 3] <= "F" .AND. aa[xni + 4] >= "0" .AND. ;
            aa[xni + 4] <= "F" .AND. aa[xni + 5] = "-" .AND. ;
            aa[xni + 6] >= "0" .AND. aa[xni + 6] <= "F" .AND. ;
            aa[xni + 7] >= "0" .AND. aa[xni + 7] <= "F" .AND. ;
            aa[xni + 8] >= "0" .AND. aa[xni + 8] <= "F" .AND. ;
            aa[xni + 9] >= "0" .AND. aa[xni + 9] <= "F")
         bb[1]:= aa[xni + 1]
         bb[2]:= aa[xni + 2]
         bb[3]:= aa[xni + 3]
         bb[4]:= aa[xni + 4]
         bb[5]:= aa[xni + 6]
         bb[6]:= aa[xni + 7]
         bb[7]:= aa[xni + 8]
         bb[8]:= aa[xni + 9]
      endif
      if (aa[xni] = "_" .AND. aa[xni + 1] = " " .AND. aa[xni + 2] = ;
            "T" .AND. aa[xni + 3] = "E" .AND. aa[xni + 4] = "C" ;
            .AND. aa[xni + 5] = "N" .AND. aa[xni + 6] = "O" .AND. ;
            aa[xni + 7] = "L" .AND. aa[xni + 8] = "A" .AND. ;
            aa[xni + 9] = "R")
         wflagb:= 1
      endif
      if (aa[xni] = "-" .AND. aa[xni + 1] = " " .AND. aa[xni + 2] = ;
            "T" .AND. aa[xni + 3] = "E" .AND. aa[xni + 4] = "C" ;
            .AND. aa[xni + 5] = "N" .AND. aa[xni + 6] = "O" .AND. ;
            aa[xni + 7] = "L" .AND. aa[xni + 8] = "A" .AND. ;
            aa[xni + 9] = "R")
         wflagb:= 2
      endif
   next
   chav:= 0
   for xni:= 1 to 8
      if (bb[xni] = "A")
         chav:= chav + 3
      endif
      if (bb[xni] = "B")
         chav:= chav + 88
      endif
      if (bb[xni] = "C")
         chav:= chav + 29
      endif
      if (bb[xni] = "D")
         chav:= chav + 35
      endif
      if (bb[xni] = "E")
         chav:= chav * 37
      endif
      if (bb[xni] = "F")
         chav:= chav + 6
      endif
   next
   wcod:= (chav + 321) * (123 + wmod)
   codcalcb:= strzero(wcod, 10, 0)
   return
Fico no aguardo.
[]´s
pca
MODULO2.txt
Este é o Modulo que "acho" ser responsavel pela chave que faz o programa funcionar.
(43.5 KiB) Baixado 92 vezes

Re: Algoritmo de criptografia

Enviado: 14 Jul 2008 10:30
por pca
Pessoal,

Nao deu tempo nem de conversar um pouco sobre o codigo
O Jair da Infosys (http://www.infosys.com.br)
memberlist.php?mode=viewprofile&u=101818
Resolveu a demanda em menos de uma hora, (!!!!!) :-O
e já me mandou a soluçao por email :))

Quem sabe, sabe. :{

Jair muito obrigado amigao. :-Y
Pessoas como voce que ajudam o proximo, fazem toda a diferençao no mundo.
Se vier a Belo Horizonte apareça pra comer um queijinho com "CEVADA"

[]´s
pca

Algoritmo de criptografia

Enviado: 14 Jul 2008 12:39
por Pablo César
PCA, eu ainda não tive tempo de compilar e analisar seu código, aliás ainda irei ver ao que se refere. Mas você disse que o colega Jair te ajudou e mandou a solução por email. No entanto não postou aqui para todos verem a questão resolvida, desta forma compartilhando conhecimento como todos fazemos. Lembre que não é aceito esse tipo de procedimento (postar no fórum e utilizar o email privando o resto de compartilhar a solução). Ficou meio estranho, não acha ?

Re: Algoritmo de criptografia

Enviado: 14 Jul 2008 14:56
por pca
Amigo moderador,

Se houve algum erro foi meu, eu explico:

O topico começou no Bate-papo...
viewtopic.php?f=5&t=8328,
...e depois foi transferido pra cá como sugerido pelos colegas do forum,

Mas como pode ver o Sr.jair nao participou dessa discursão.

Postei o mesmo tópico na comunidade do orkut ( http://www.orkut.com.br/CommMsgs.aspx?c ... 15&start=1)
pedindo que se alguem pudesse me ajudar entrasse em contato comigo,
foi quanto recebi alguns scraps e emails de pessoas que vieram em meu socorro, (agradeço a todos) uma delas o sr. Jair, que por sorte tinha um pouco de tempo livre e me cedeu sua atençao para analisar o codigo e encontrar a solução rapidamente.

Ja programei em Clipper e conheço um pouco da linguagem, me inscrevi aqui no forum clipper online pra tentar
resolver o problema, mas o Sr.jair nao participou dessa discursao aqui no Fórum, ele atendeu meu pedido
de ajuda atraves do orkut, portanto nao infrigindo as regras do forum.

Explicado essa situação, estou a disposição para enviar o programa completo com os DBF´s inclusive para analise de quem queira dar uma olhada e postar aqui os resultados, Se o Sr. Jair quiser postar a solução aqui, vai ser muito com certeza,

Fico a disposição.

[]´s
pca

Enviado: 14 Jul 2008 15:58
por Maligno
Apenas enfatizando: a não apresentação da solução não infringe qualquer norma do fórum. Ninguém é obrigado a publicar código fonte. Mas se quiser fazê-lo, prefira a seção "Código fonte", já que é lá que alguém iria procurar por algo do tipo. Muito embora a questão em si trata de uma solução muito particular ao seu caso. Não acredito que vá despertar o interesse de alguém.

PS: Se for postar o código fonte, por favor, poste apenas parte que diz respeito à criptografia, de forma isolada do resto do programa.

Algoritmo de criptografia

Enviado: 14 Jul 2008 23:03
por Pablo César
Caro PCA (coincidentemente esta é a mesma iniciais do meu nome completo, quê coincidência !), analisei o código fonte com respeito a validação do HD e habilitação no CONTROLE.DBF onde grava o número do HD codificado.

A Procedure CRIACODC, nada mais é que traduze o conteúdo quase por inteiro do resultado do comando VOL do SO. Digo quase por inteiro, pois conta o nome do LABEL (até 11 caracteres) e o traduze em valores diferentes para os quais seu valor ASCII é somado para obter um número diferenciado a que costumamos ver com outras funções que lêem o serial number da formatação. Este recurso permite que seja personalizado com algumas implementações poderia ser utilizado para dificultar instalações sem o consentimento do programador.

Eu desconheço os direitos autorais sobre esse sistema da Tecnolar de Brasilia, mas acredito que a solução dessa questão seja de uso e interesse exclusivo a esse sistema. E que propagar a solução oferecida não iria acrescentar muito ao conhecimento técnico e nem sendo ainda de interesse de todos.

O importante que você conseguiu resolver, mas ainda acho que é lamentável você não expor a solução para seu caso, nem sequer você não fazer um breve relato de como foi solucionado (não me refiro a quem resolveu). Também acho que não é de responsabilidade do Jair se manifestar ou postar a solução, ja que foi entregue a você e foi você mesmo que abriu um tópico para tratar de esse assunto.

Re: Algoritmo de criptografia

Enviado: 15 Jul 2008 12:06
por pca
Caro "Xará"

Nao entendi bem sua ultima mensagem, o que significa "traduze" vc usou duas vezes na sua mensagem.

Fico triste que voce esteja chateado mesmo depois de minhas explicações
onde deixo claro que estou a disposição para informar qualquer coisa aos membros do forum,
Talvez nao tenha lido direito minhas mensagens ou nao tenha entendido, mas tudo bem vamos lá;

Explico que o Jair(que atendeu minha solicitação pelo orkut) me enviou apenas um executavel
com o nome libera.exe e me explicou que era só rodar ele no diretorio que o sistema funcionaría,
isto pra mim foi o suficiente, eu desejava apenas a solução do problema que era fazer o programa
funcionar.

e como voce mesmo disse na sua mensagem anterior:
"...mas acredito que a solução dessa questão seja de uso e interesse exclusivo a esse sistema.
E que propagar a solução oferecida não iria acrescentar muito ao conhecimento técnico e nem
sendo ainda de interesse de todos." (Paulo Cesar)

e o Maligno tabem citou:
"Muito embora a questão em si trata de uma solução muito particular ao seu caso. Não acredito que vá despertar o interesse de alguém.
Apenas enfatizando: a não apresentação da solução não infringe qualquer norma do fórum.

Entao nao me preocupei com isso, segundo eu nao posto a solução por que nao sei como o jair resolveu, ele nao me disse,
mas é muito simples "COMO DISSE" o programinha completo está a disposição com a base de dados
se o arquivos que postei nao forem suficientes eu posso enviar o restante pra quem
quiser analisar e colocar a solução aqui pra todo mundo ver, voce poderia fazer isso.


[]´s
pca

Algoritmo de criptografia

Enviado: 15 Jul 2008 12:16
por Pablo César
Ahhh entendí agora. Você não tinha dito que o Jair tinha te mandado o LIBERA.EXE, que certamente esse aplicativo nada mais faz que gravar o seu novo código do seu atual HD.

Quando eu disse TRADUZE eu quis dizer em português: TRADUZ

Eu utilizei a idéia de TRADUZIR porque o conteúdo do VOL (ora direcionado em arquivo TXT) é convertido num número que não é o mesmo que o que estamos acostumados ver, que seria o serial number dos HDs.

E me desculpe se eu fiz mal juizo de você, pensei que você não queria compartilhar conosco a solução aplicada.

Re: Algoritmo de criptografia

Enviado: 15 Jul 2008 12:41
por pca
Sem problemas

Estou aguardando o jair me dizer o que ele descobriu no codigo, e assim que ele me passar posto aqui no forum
um grande abraço, mas o esquema parece que é esse mesmo que voce falou, ele carrega uma matriz com numeros
transformados a partir do volume do HD e depois faz umas contas (encripta) o numero.

[]´s
pca