openwall/john | ExplainGitHub