public HashMap<Character, Character[]> relevantL33tSubTable(String password) { return relevantL33tSubTable(password, L33T_TABLE); }
@Override public List<Match> execute(String password) { List<Match> matches = new ArrayList<>(); HashMap<Character, Character[]> subTable = relevantL33tSubTable(password); L33tSubsEnumerator l33tSubs = new L33tSubsEnumerator(subTable); List<Map<Character, Character>> subs = l33tSubs.enumerate(); for (Map<Character, Character> sub: subs) { if (sub.isEmpty()) break; String subbedPassword = translate(password, sub); for (Match match: new DictionaryMatcher(rankedDictionaries).execute(subbedPassword)) { String token = password.substring(match.i, match.j + 1); return this.sorted(lst);
@Test public void testL33tMatching() throws Exception { String msg = "reduces l33t table to only the substitutions that a password might be employing"; assertEquals(msg, expected.size(), new L33tMatcher().relevantL33tSubTable(password, testTable).size()); }
@Override public List<Match> execute(String password) { List<Match> matches = new ArrayList<>(); List<Matcher> matchers = new ArrayList<>(); matchers.add(new DictionaryMatcher(dictionaries)); matchers.add(new ReverseDictionaryMatcher(dictionaries)); matchers.add(new L33tMatcher(dictionaries)); matchers.add(new SpatialMatcher()); matchers.add(new RepeatMatcher()); matchers.add(new SequenceMatcher()); matchers.add(new RegexMatcher()); matchers.add(new DateMatcher()); for (Matcher matcher: matchers) matches.addAll(matcher.execute(password)); return this.sorted(matches); } }
@Override public List<Match> execute(String password) { List<Match> matches = new ArrayList<>(); HashMap<Character, Character[]> subTable = relevantL33tSubTable(password); L33tSubsEnumerator l33tSubs = new L33tSubsEnumerator(subTable); List<Map<Character, Character>> subs = l33tSubs.enumerate(); for (Map<Character, Character> sub: subs) { if (sub.isEmpty()) break; String subbedPassword = translate(password, sub); for (Match match: new DictionaryMatcher(rankedDictionaries).execute(subbedPassword)) { String token = password.substring(match.i, match.j + 1); return this.sorted(lst);
@Override public List<Match> execute(String password) { List<Match> matches = new ArrayList<>(); List<Matcher> matchers = new ArrayList<>(); matchers.add(new DictionaryMatcher(dictionaries)); matchers.add(new ReverseDictionaryMatcher(dictionaries)); matchers.add(new L33tMatcher(dictionaries)); matchers.add(new SpatialMatcher()); matchers.add(new RepeatMatcher()); matchers.add(new SequenceMatcher()); matchers.add(new RegexMatcher()); matchers.add(new DateMatcher()); for (Matcher matcher: matchers) matches.addAll(matcher.execute(password)); return this.sorted(matches); } }
public HashMap<Character, Character[]> relevantL33tSubTable(String password) { return relevantL33tSubTable(password, L33T_TABLE); }