A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Criptografia Numaboa

A fraude do Camouflage

Dom

20

Mar

2005


16:18

(17 votos, média 4.71 de 5) 


O ENGODO DA SENHA

Se compararmos os valores hexadecimais do arquivo que esconde o texto SEM senha e do arquivo que esconde o texto COM senha, dá vontade de rir. Os textos cifrados (que ficam no primeiro bloco de dados) são IDÊNTICOS, ou seja, a senha não foi usada para nada :crazy: A única diferença entre as duas imagens está na segunda "ilha" de dados:

3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 20 20 20 20 20 20 20 20 20      Sem senha
3200   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 6C E0 17 43 6E C9 75 20 20      Com senha
3200   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

Comparando-se os dois trechos, observamos que foram adicionados 7 bytes, exatamente o tamanho da senha utilizada ("numaboa") - um sinal claro de que o método é fraco.

Conhecendo-se a localização da senha, é de se supor que o buffer que a segue deve servir apenas para armazenar senhas e que o tamanho máximo da senha seja de 255 bytes. Efetivamente, se ocultarmos um texto usando como senha a letra a repetida 255 vezes, o resultado será:

3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 63 F4 1B 43 6D C7 75 80 80
3200   AE DE 04 41 0E FF D2 F8 04 2B 32 9A 97 14 35 CC
3216   42 AC 1F FD 48 86 9D 83 98 2C B3 23 2F 67 A1 99
3232   FB 7D 03 59 15 45 61 34 BE 20 AA 60 C3 D6 92 EE
3248   EB BC CD 52 E2 01 48 92 19 45 5F 1B 8A B2 85 FC
3264   FC 22 F5 2B A6 24 0C 44 15 8A 6A F9 A8 1D 9D A9
3280   DB 53 0A 61 B2 A4 A3 F5 55 CE D1 84 F4 1C 4B E5
3296   C5 3E 84 0F 46 4B BA F7 1F 5F 29 58 27 AE 0E 10
3312   CB 5D 50 FB C8 FF EE E8 12 D2 58 AB 53 B4 91 50
3328   38 1D 63 4F E7 56 98 4A 1F 30 93 20 E0 6D B5 04
3344   74 96 11 B5 78 F9 41 DE 41 D9 34 06 AD E0 79 ED
3360   72 5D 02 5D F3 70 85 3A 7A 69 43 01 2D 2B A4 EB
3376   D2 A4 14 A2 F1 1B 93 D3 D7 A9 B1 59 EB A3 E7 91
3392   CD 88 AB 3D 2F 5F 68 48 19 48 F8 3B E5 B4 DB 3F
3408   B4 F3 1B 59 9B B1 01 8D 94 46 DB 8F D6 BF FE FA
3424   BF 04 B5 17 58 17 FD BB 09 EC C9 C1 C7 7F B8 BA
3440   6E 2C CA F3 AC 10 74 A4 54 10 22 97 20 20 20 20

Se a senha constituída por 255 letras a foi armazenada no buffer da senha com bytes uns diferentes dos outros, o que vem imediatamente à cabeça é que a senha deve ter sido modificada por uma string também de 255 caracteres. O modo mais simples (e ingênuo) de "casar" esta string com a senha é fazendo a operação lógica XOR entre os bytes da senha e os bytes da string "secreta".

Como a operação XOR é reversível, se repetirmos as operações XOR dos bytes do buffer com o byte 61 (valor hexadecimal do ASCII da letra a), o resultado será a... string secreta original :) Assim, os primeiros 16 bytes do buffer da senha XORados com 61 resultam em

          63 F4 1B 43 6D C7 75 80 80 AE DE 04 41 0E FF D2
  XOR     61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
         -------------------------------------------------
   =      02 95 7A 22 0C A6 14 E1 E1 CF BF 65 20 6F 9E B3

O conteúdo total do buffer XORado, ou seja, a string ou chave "secreta" revela-se a seguinte:

          02 95 7A 22 0C A6 14 E1 E1 CF BF 65 20 6F 9E B3
          99 65 4A 53 FB F6 75 54 AD 23 CD 7E 9C 29 E7 FC
          E2 F9 4D D2 42 4E 06 C0 F8 9A 1C 62 38 74 24 00
          55 DF 41 CB 01 A2 B7 F3 8F 8A DD AC 33 83 60 29
          F3 78 24 3E 7A EB D3 E4 9D 9D 43 94 4A C7 45 6D
          25 74 EB 0B 98 C9 7C FC C8 BA 32 6B 00 D3 C5 C2
          94 34 AF B0 E5 95 7D 2A 84 A4 5F E5 6E 27 2A DB
          96 7E 3E 48 39 46 CF 6F 71 AA 3C 31 9A A9 9E 8F
          89 73 B3 39 CA 32 D5 F0 31 59 7C 02 2E 86 37 F9
          2B 7E 51 F2 41 81 0C D4 65 15 F7 70 D4 19 98 20
          BF 20 B8 55 67 CC 81 18 8C 13 3C 63 3C 92 11 E4
          5B 1B 08 22 60 4C 4A C5 8A B3 C5 75 C3 90 7A F2
          B2 B6 C8 D0 38 8A C2 86 F0 AC E9 CA 5C 4E 3E 09
          29 78 29 99 5A 84 D5 BA 5E D5 92 7A 38 FA D0 60
          EC F5 27 BA EE B7 DE 9F 9B DE 65 D4 76 39 76 9C
          DA 68 8D A8 A0 A6 1E D9 DB 0F 4D AB 92 CD 71

Informações adicionais