Sim, isso é bastante comum, pois John
usa um Ataque ao dicionário ou Brute-force . Nenhum dos dois é terrivelmente rápido, especialmente contra muitos algoritmos hash modernos executados em um único thread (executar alguns hashes é caro, como @DavidSchwartz menciona).
John
sem argumentos também usa métodos bem lentos, da FAQ :
Q: How long should I expect John to run?
A: It primarily depends on the cracking mode(s) and on your password files (in particular, the type of hashes and the number of different salts, if applicable). Most importantly, you should note that the "incremental" mode, which a default John run (with no command line options) proceeds with after being done with the quicker checks, is not supposed to terminate in a reasonable time.
Uma opção para tentar extrair um melhor desempenho é ativar parallelization
com --fork=N
( N
é o número de processos) ou --node
. Consulte a lista de opções para obter detalhes sobre elas.
Teoricamente, se você tem dois threads executando de maneira semi-inteligente - seu tempo de execução deve ser cortado em metade. (Observe o qualificador "teoricamente", YMMV no mundo real)