Pergunta

Eu estou tentando descobrir o formato de um arquivo de senha que é usada por um DLL LOGIN que a fonte não pode ser encontrado. A ferramenta de administração foi escrito em AFX, então eu espero que ele talvez dá uma pista sobre o algoritmo usado para codificar as senhas.

Usando a ferramenta de administração, temos duas senhas que são codificados. O primeiro é "dinosaur123456789" e do hex da criptografia está aqui:

Os valores hexadecimais resultantes para a senha dinossauro são

00h: 4A 6E 3C 34 29 32 59 2E 51 6B 2B 4E 4F 20 47 75; Jo <4) 2.YQk + NO Gu 10h: 6A 33 09; J3. 20h: 64 69 6E 6F 61 75 72 73 31 32 33 34 35 36 37 38; dinosaur12345678 30h: 39 30; 90

Outra "gertcha" password é codificado como e8h: 4D 4C 35 46 53 5C 7E; GROUT M5LFS \ ~

Eu tentei olhar para um XOR comum, mas não conseguiu encontrar nada. As senhas são do mesmo comprimento no arquivo de senhas assim que eu supor que estes são uma codificação reversível (que era de outra era!). Eu estou querendo saber se as classes AFX pode ter tido um meio que seriam utilizados para este tipo de coisa?

Se alguém pode trabalhar a codificação, então isso seria ótimo!

Obrigado, Matthew

[editar:] Ok, em primeiro lugar, eu estou seguindo em frente e vai sair de trás passado na nova solução. Teria sido bom para usar os dados antigos ainda. Na verdade, se alguém quer resolvê-lo como um quebra-cabeça, então eu ainda gostaria de ser capaz de usá-lo.

Para aqueles que querem ter uma chance, eu tenho duas senhas feito.

Todos 'a' - uma senha com 19 de um: 47 7D 47 38 58 57 7C 73 59 2D 50; G} G8XW | SY-P 79 68 29 3E 44 52 31 09 6B; yh)> DR1k.

All 'b' - uma senha com 16 b do. 48 7D 2C 71 78 67 46 49 48 4B 5F; H}, qxgKFIH_ 69 7D 39 79 09 5E; i} 9y ^.

Esta me convenceu de que não há uma solução simples envolvidos, e que há algum feedback.

Foi útil?

Solução

Bem, eu fiz uma criptoanálise rápida sobre ele, e até agora, posso dizer-lhe que cada senha aparece para começar com o seu valor ascii + 26. O próximo octeto parece ser a diferença entre o primeiro caractere da senha eo segundo, adicionado a ele de valor ascii. A carta 3d, eu ainda não descobri ainda. Eu acho que é seguro dizer que você está lidando com algum tipo de cifra feedback, e é por isso XOR aparece nada. Eu acho que cada valor octetos dependerá da anterior.

Eu posso continuar, mas este material tem um monte de tempo. Esperemos que isso pode dar-lhe um começo, ou talvez dar-lhe um par de ideias.

Outras dicas

Mas, desde a saída é igual em comprimento com a entrada Isto parece alguns cifra chave fixa. Pode ser um xor trivial.

Eu sugiro testar as seguintes senhas:

 * AAAAAAAA
 * aaaaaaaa
 * BBBBBBBB
 * ABABABAB
 * BABABABA
 * AAAABBBB
 * BBBBAAAA
 * AAAAAAAAAAAAAAAA
 * AAAAAAAABBBBBBBB
 * BBBBBBBBAAAAAAAA

Isso deve talvez nos permitem quebrar a cifra sem engenharia reversa do DLL.

Can a codificar dll senhas caráter único? Ou até mesmo uma senha-caractere zero?

Você vai querer começar com os casos de teste mais triviais.

Você pode estar olhando para este problema a partir do ângulo errado. Gostaria de pensar que a melhor por que descobrir como os hashes de senha são criados é a engenharia reversa do dll login.

Eu recomendaria IDA Pro para esta tarefa. pena de bem o preço para a ajuda é dá-lhe está a inverter código executável em assembler legível. Há outras disassemblers que estão livres se você não quer o dinheiro de pagamento, mas eu não encontrei nada tão poderoso como IDA Pro. A estática livre disassembler / depurador que eu recomendaria seria PEBrowse de SmidgeonSoft como é bom para picar rapidamente em torno de um sistema em execução ao vivo e tem um bom suporte PDB para carregar símbolos de depuração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top