todas as senhas possiveis. No metodo time-memory, a tarefa de computar hashs e feita atraves do armazenamento dos resultados no que chamamos de "rainbow table". Depois disso, os hashes podem ser acessados a partir das rainbow tables sempre que necessario. O processo pre-computacional precisa de muito tempo para criar as chaves que serao posteriormente utilizadas. No entanto, uma vez que esse processo tenha terminado, a performance da rainbow tables pode ser de centenas a milhares de vezes maior do que o metodo de brute force. Vamos ver passo a passo como utilizar o software RainbowCrack. Esse software inclui tres ferramentas que devem ser usadas em sequencia para fazer a coisa funcionar: Passo 1: usar o rtgen para gerar as rainbow tables. Passo 2: usar o rtsort para organizar as rainbow tables geradas pelo rtgen. Passo 3: usar o rcrack para buscar o conteudo das rainbow tables organizadas pelo rtsort. O processo de buscar o conteudo no passo final, e equivalente ao processo de quebra de hash. E todas essas ferramentas sao utilizadas atraves da linha de comando.O programa rtgen precisa de diversos parametros para gerar uma rainbow table, e a sintaxe do comando e: rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index Explicacao dos parametros: hash_algorithmO algoritmo dos hashs (lm, ntlm, md5 e assim por diante) usado na rainbow table.charset A configuracao dos caracteres (charset) do texto plano na rainbow tables. Todos os charsets possiveis estao definidos no arquivo charset.txt.plaintext_len_min plaintext_len_max Estes dois parametros definem o tamanho possivel de todo o texto plano na rainbow tables. Se o charset e numerico, o plaintext_len_min e 1, e o plaintext_len_max e 5, entao a string "12345" sera incluida na tabela, mas "123456" nao.table_index chain_len chain_num part_index Estes quatro parametros sao mais dificeis de explicar em poucas palavras. Ler e compreender o artigo original de Philippe Oechslin (criador do RainbowCrack), pode ajudar a entender o significado exato. O table_index esta relacionado ao "reduce function" que e utilizado na rainbow table. O chain_len e o tamanho de cada "rainbow chain" na rainbow table. Uma "rainbow chain" configurada como 16 bytes e a menor unidade em uma rainbow table. Uma rainbow tables contem diversas rainbow chains. O chains_num e o numero de rainbow chains em uma rainbow table. O parametro part_index determina como o "start point" em cada rainbow chain e gerado. Deve ser um numero (ou comecar com um numero).Os valores corretos de todos os parametros dependem do que voces precisa, e selecionar bons parametros requer um bom entendimento do algoritmo de time-memory tradeoff. Uma configuracao que funciona esta logo abaixo, como um exemplo:hash_algorithm lm, ntlm or md5 charset alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] ou loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789] plaintext_len_min 1 plaintext_len_max 7 chain_len 3800 chain_num 33554432 key space 36^1 + 36^2 + 36^3 + 36^4 + 36^5 + 36^6 + 36^7 = 80603140212 Key space e o numero de possiveis strings em texto plano para o charset, plaintext_len_min e plaintext_len_max selecionados. table size 3 GB success rate 0.999 O algoritmo de time-memory tradeoff e um algoritmos probabilistico. Qualquer que seja os parametros selecionados, ha sempre probabilidade de