
Gerador de palpites de senhas baseado em Gramática Livre de Contexto Probabilística (PCFG)
PCFG = Gramática Livre de Contexto Probabilística
PCFG = Guessador Difuso Muito Legal
Resumindo: Uma coleção de ferramentas para realizar pesquisas sobre como os humanos geram senhas. Elas podem ser usadas para quebrar hashes de senhas, mas também para criar senhas sintéticas (honeywords) ou ajudar a desenvolver melhores algoritmos de força de senha.
Trainer: 4.4
Guesser: 4.6
PRINCE_LING: 4.3
Password_Scorer: 4.4
Sphinx é usado para criar dinamicamente um Guia do Desenvolvedor baseado em docstrings no código. Para compilar o Guia do Desenvolvedor, consulte as instruções em /doc/INSTRUCTIONS.rst
Um PDF do Guia do Desenvolvedor pré-compilado também pode ser encontrado em /doc/build/latex/pcfgdevelopersguide.pdf. Nota: não vou reconstruir este guia entre versões principais para manter o histórico do git mais limpo. Ou seja, cometer PDFs fica muito bagunçado rapidamente. Isso significa que o guia pré-compilado pode estar um pouco desatualizado; portanto, se você estiver usando-o para ajudar a escrever/modificar código, é recomendável compilar o guia você mesmo em vez de usar o pré-compilado.
Este projeto usa aprendizado de máquina para identificar hábitos de criação de senhas dos usuários. Um modelo PCFG é gerado treinando em uma lista de senhas em texto simples/reveladas. No contexto deste projeto, o modelo é chamado de ruleset e contém muitas partes diferentes das senhas identificadas durante o treinamento, juntamente com suas probabilidades associadas. Essa derivação pode ser útil para outras ferramentas de cracking, como PRINCE, e/ou partes do ruleset podem ser diretamente incorporadas em ataques de dicionário mais tradicionais. Este projeto também inclui um gerador de guesses PCFG que utiliza este ruleset para gerar palpites de senha em ordem de probabilidade. Isso é muito mais poderoso do que ataques de dicionário padrão e, em testes, provou ser capaz de quebrar senhas com significativamente menos palpites do que outros métodos publicamente disponíveis. A desvantagem é que gerar palpites em ordem de probabilidade é lento, criando em média 50-100k palpites por segundo, enquanto algoritmos baseados em GPU podem criar milhões a bilhões (e mais) de palpites por segundo contra algoritmos de hash rápidos. Portanto, o guesser PCFG é melhor usado contra grandes números de hashes com salt, ou outros algoritmos de hash lentos, onde o custo de desempenho do algoritmo é compensado pela precisão dos palpites.
pip3 install chardetO ruleset padrão incluído neste repositório foi criado treinando em um subconjunto de 1 milhão de senhas do conjunto de dados RockYou. Melhor desempenho pode ser alcançado treinando no conjunto completo de 32 milhões de senhas do RockYou, mas isso foi excluído para manter o tamanho do download pequeno. Você pode usar o ruleset padrão para começar a gerar senhas sem precisar treinar em uma nova lista, mas é recomendado treinar em um conjunto alvo de senhas que possa estar mais próximo do que você está tentando atacar. Se você criar seu próprio ruleset, aqui está um guia rápido:
python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESETpython3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET -c 0.6
b. --save_sensitive: Se especificado, dados sensíveis como endereços de e-mail e sites completos descobertos durante o treinamento serão salvos no ruleset. Embora o gerador de guesses PCFG atualmente não utilize esses dados, eles são muito valiosos durante um ataque real de cracking de senhas. Isso está desligado por padrão para facilitar o uso desta ferramenta em um ambiente acadêmico. Observe que, mesmo quando desligado, quase certamente ainda haverá dados de PII salvos dentro de um ruleset, então proteja os rulesets gerados adequadamente. Exemplo: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET --save_sensitive
c. --comments: Adiciona um comentário ao arquivo de configuração do ruleset. Isso é útil para saber por que e como você gerou seu ruleset ao revisá-lo posteriormente. Inclua o comentário que deseja adicionar entre aspas.Isso gera palpites para stdout usando um ruleset PCFG previamente treinado. Esses palpites podem então ser canalizados para qualquer programa que você queira usar. Se nenhum ruleset for especificado, o ruleset padrão DEFAULT será usado. Para os fins deste guia, assumiremos que o ruleset usado é NEW_RULESET.