_______________________________________________________________________ ___ __ _ -------- Como desencriptar a senha de Proteção de Tela do Windows ----- --- -- - ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯ ¯¯ ¯ Autor: --{[CRK]}-- E+mAil: thereverser@bol.com.br webpage: http://www.unlockcrew.rg3.net/ Acredito que você não vai encontrar esta informação em nenhum tutorial aqui no *Brasil*, sendo assim estou me dando ao "luxo" de dizer que o primeiro 'brasileiro' a quebrar o esquema de encriptação de senhas de proteção de tela do Windows! É realmete bem fácil, andei perguntando então me disseram que a encriptação estava relacionada com XOR. Falando nisso este tutorial requer conhecimento em programação se você não é de nível intermediário ou superior em qualquer linguagem melhor esquecer ! Antes de tudo vamos preparar as ferramentas: Calculadora do windows (Em modo científico), O editor de Registro aberto (RegEdit),... e não se esqueça de colocar uma senha na proteção de tela, se você não tiver uma, do contrário não vai aprender nada ! O primeiro passo é saber onde o Windows armazena esta senha. E fica no registro (User.dat) Não tive que descobrir muita coisa porque, passeando pelo registro em cracks anteriores esbarrei nessa chave! O caminho mais curto que encontrei para ela foi esse: A propósito abra seu RegEdit.exe e siga o caminho: 'HKEY_USERS\.DEFAULT\Control Panel\Desktop' Os valores que você pode ver nesta ramificação são relativos ao Screen Saver: Pattern, ScreenSaveActive(Se o sua prot. de tela for ativa esse valor marca 1), ScreenSave_Data(é esse !). No meu caso usei como senha a palavra 'CRK', então olhando para o valor ScreenSave_Data vejo isso: '30 42 42 43 33 44 00'. Dê um duplo clique no valor e abra uma janela contendo estes valores: [0000 30 42 42 43 33 44 00 0BBC3D] Se você usa editores hexadecimais vai notar alguma semelhança. A 1º coluna é o offset, a 2º são os valores referentes aos códigos da 3º coluna que é a que nos interessa: A 3º coluna tem valores hexadecimais que representam nossa senha codificada: '0BBC3D'. A senha original é 'CRK' então siga o raciocínio abaixo: 0BBC3D=CRK => 0B BC 3D = C R K <- Pega em pares (representação hex!) Portanto: 0B = C (43h) => 0=4 , B=3 BC = R (52h) => B=5 , C=2 3D = K (4Bh) => 3=4 , D=B Interessante, não ? Então para desencriptar a senha usaremos o operador lógico XOR: Sintaxe: Senha_Encriptada XOR Código = Senha. Vejamos isto em modo binário: 0 = 00000000b x = ????????b ------------- 4 = 00000100b .·. 00000000 (0) 00000100 (XOR) -------- 00000100 (4) .·. x=00000100b = 4 ! 00001011 (B=11) 00001000 (XOR) -------- 00000011 (3) .·. x=00000100b = 8 ! Fazendo o raciocínio inverso com os dados que obtemos até agora temos: 0 XOR 4 = 4 B XOR 8 = 3 juntando 4 e 3 temos 43h que é o código ASCII do "C" em hex! Ou seja, fazendo o inverso do processo obtivemos aquilos que sabíamos que esperávamos, conseguimos a primeira letra e com isso descobrimos o esquema de encriptação ! Agora só falta fazer isso com os outros caracteres e construir a tabela! Desencriptação da senha de proteção de tela do Windows: (Se a senha fosse "123") 79DC45 => 123 H D C A 79h (121) = 1 (31h) DCh (220) = 2 (32h) 45h (49) = 3 (33h) *NOTA: H=Hex D=Decimal C=Caractere A=ASCII Code 79=31 { 00000111=7 XOR 00000100=x x=4 (outra vez como esperávamos !) ---------- 00000011=3 000001001=9 XOR 000001000=y y=8 ----------- 000000001=1 } DC=32 { 00001101=D XOR 00001110=x x=14 ----------- 00000011=3 00001100=C XOR 00001110=y y=14 ----------- 00000010=2 } 45=33 { 00000100=4 XOR 00000111=x x=7 ----------- 00000011=3 00000101=5 XOR 00000110=y y=6 ----------- 00000011=3 } -------------------------------- Encontramos novamente os valores 4 e 8 isso significa que os valores da tabela para qualquer encriptação de senha são constantes. Seguindo isto vou te presentear com uma tabela de 28 valores ! Tabela: 00000100 = 04 00001000 = 08 00001110 = 14 00001110 = 14 00000111 = 07 00000110 = 06 00000001 = 01 00001101 = 13 00000110 = 06 00000111 = 07 00000110 = 06 00001001 = 09 00001010 = 10 00000001 = 01 00000001 = 01 00001011 = 11 00000111 = 07 00001010 = 10 00001000 = 08 00001100 = 12 00000100 = 04 00000111 = 07 00001111 = 15 00001000 = 08 00000101 = 05 00000100 = 04 00001001 = 09 00000101 = 05 Isso significa que você pode desencriptar qualquer senha que tenho no máximo 14 caracteres , mas nunca passa disso. Se quiser uma tabela realmente grande (60 entradas, por exemplo) é lógico que você não vai fazer manualmente, você cria um programa. Vou te mostrar o raciocínio: [0 XOR 3 = 3] e [3 XOR 0 = 3] .·. 0 XOR n = n. Podemos perceber duas propriedades matemáticas aqui: Uma é que qualquer número Xor com zero dá o próprio número, e que a ordem dos fatores na operação XOR não altera o resultado final. Acho que mesmo assim você não entendeu onde quero chegar, certo ? O que quero dizer é que se for criada uma senha com 60 caracteres null (valor ASCII=0) a senha encriptada é igual a tabela de encriptação e o próprio Windows nos dá a tabela ! infelizmente nÃo da pra fazer isso (da mas é foda). Então vamos usar a segunda propriedade. Se criarmos uma senha assim: "000000000..." e encriptarmos, depois pegamos ela e fazemos com o valor ASCII do zero (30h) temos quantos valores forem possíveis na tabela ! Ok, não vou mostrar como programar isso por enquanto mas a idéia está clara. Futuramente se precisarem realmente eu publico o código oficialmente de como obter a tabela e o desencriptador você mesmo codifica ;-). O algoritmo pode ser feito em bem menos de dez linhas dependendo da linguagem. Um detalhe que esqueci de falar da primeira vez é que a senha de proteção de tela do Windows é 'case non sensitive', isso significa que o sistema não se importa com o modo como se digita a senhas, assim : 'CRK', 'crk' ou 'Crk' são aceitos da mesma forma ;-) Isso porquE os dados são todos transformados em letras maiúsculas antes de serem codificados. Agradeciementos: Eric Spada, (pelo lembrete das MAIÚSCULAS e correção hex) Espir@l, pelo help na NuKaDo [zER0], para de puxar po ... hehe ============================= http://www.unlockcrew.rg3.net =============================