Criptografia Numaboa
A fraude do Camouflage
Dom 20 Mar 2005 16:18 |
- Detalhes
- Categoria: Papers
- Atualização: Terça, 10 Março 2009 17:25
- Autor: vovó Vicki
- Acessos: 16293
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