func TestPermutationsOfLeetSubstitutions(t *testing.T) { password := "******" //[passw0rd, password, p4ssword] possibleSubs := relevantL33tSubtable(password) permutations := getAllPermutationsOfLeetSubstitutions(password, possibleSubs) assert.Len(t, permutations, 3, "There should be 3 permutations for "+password) password = "******" //[pa$sw0rd, passw0rd, password, pa$sword, p4ssw0rd, p4ssword, p4$sword] possibleSubs = relevantL33tSubtable(password) permutations = getAllPermutationsOfLeetSubstitutions(password, possibleSubs) assert.Len(t, permutations, 7, "There should be 7 (? check my math) permutations for "+password) password = "******" //[pa$sw0rd, passw0rd, password, pa$sword, p4ssw0rd, p4ssword, p4$sword] possibleSubs = relevantL33tSubtable(password) permutations = getAllPermutationsOfLeetSubstitutions(password, possibleSubs) assert.Len(t, permutations, 15, "Check my math 2*2*2*2 - 1 "+password) password = "******" possibleSubs = relevantL33tSubtable(password) permutations = getAllPermutationsOfLeetSubstitutions(password, possibleSubs) assert.Len(t, permutations, 35, "check my math 3*2*2*3 -1 ") }
func TestSpatialMatchQwerty(t *testing.T) { matches := SpatialMatch("qwerty") assert.Len(t, matches, 1, "Lenght should be 1") assert.NotZero(t, matches[0].Entropy, "Entropy should be set") matches = SpatialMatch("asdf") assert.Len(t, matches, 1, "Lenght should be 1") assert.NotZero(t, matches[0].Entropy, "Entropy should be set") }
func TestSequenceMatch(t *testing.T) { //abcdjibjacLMNOPjibjac1234 => abcd LMNOP 1234 matches := SequenceMatch("abcdjibjacLMNOPjibjac1234") assert.Len(t, matches, 3, "Lenght should be 2") for _, match := range matches { if match.DictionaryName == "lower" { assert.Equal(t, 0, match.I) assert.Equal(t, 3, match.J) assert.Equal(t, "abcd", match.Token) assert.NotZero(t, match.Entropy, "Entropy should be set") } else if match.DictionaryName == "upper" { assert.Equal(t, 10, match.I) assert.Equal(t, 14, match.J) assert.Equal(t, "LMNOP", match.Token) assert.NotZero(t, match.Entropy, "Entropy should be set") } else if match.DictionaryName == "digits" { assert.Equal(t, 21, match.I) assert.Equal(t, 24, match.J) assert.Equal(t, "1234", match.Token) assert.NotZero(t, match.Entropy, "Entropy should be set") } else { assert.True(t, false, "Unknow dictionary") } } }
//l33t func TestLeetSubTable(t *testing.T) { subs := relevantL33tSubtable("password") assert.Len(t, subs, 0, "password should produce no leet subs") subs = relevantL33tSubtable("p4ssw0rd") assert.Len(t, subs, 2, "p4ssw0rd should produce 2 subs") subs = relevantL33tSubtable("1eet") assert.Len(t, subs, 2, "1eet should produce 2 subs") assert.Equal(t, subs["i"][0], "1") assert.Equal(t, subs["l"][0], "1") subs = relevantL33tSubtable("4pple@pple") assert.Len(t, subs, 1, "4pple@pple should produce 1 subs") assert.Len(t, subs["a"], 2) }
func TestDictionaryMatch(t *testing.T) { var matches []match.Match for _, dicMatcher := range DICTIONARY_MATCHERS { matchesTemp := dicMatcher("first") matches = append(matches, matchesTemp...) } assert.Len(t, matches, 4, "Lenght should be 4") for _, match := range matches { assert.NotZero(t, match.Entropy, "Entropy should be set") } }
func TestRepeatMatch(t *testing.T) { //aaaBbBb matches := RepeatMatch("aaabBbB") assert.Len(t, matches, 2, "Lenght should be 2") for _, match := range matches { if strings.ToLower(match.DictionaryName) == "b" { assert.Equal(t, 3, match.I) assert.Equal(t, 6, match.J) assert.Equal(t, "bBbB", match.Token) assert.NotZero(t, match.Entropy, "Entropy should be set") } else { assert.Equal(t, 0, match.I) assert.Equal(t, 2, match.J) assert.Equal(t, "aaa", match.Token) assert.NotZero(t, match.Entropy, "Entropy should be set") } } }
func TestDateSepMatch(t *testing.T) { matches := DateSepMatch("1991-09-11jibjab11.9.1991") assert.Len(t, matches, 2, "Length should be 2") for _, match := range matches { if match.Separator == "." { assert.Equal(t, 16, match.I) assert.Equal(t, 25, match.J) assert.Equal(t, int64(9), match.Day) assert.Equal(t, int64(11), match.Month) assert.Equal(t, int64(1991), match.Year) } else { assert.Equal(t, 0, match.I) assert.Equal(t, 10, match.J) assert.Equal(t, int64(9), match.Day) assert.Equal(t, int64(11), match.Month) assert.Equal(t, int64(1991), match.Year) } } }
func TestSpatialMatchDvorak(t *testing.T) { matches := SpatialMatch("aoeuidhtns") assert.Len(t, matches, 1, "Lenght should be 1") assert.NotZero(t, matches[0].Entropy, "Entropy should be set") }
func TestDateWithoutSepMatch(t *testing.T) { matches := dateWithoutSepMatch("11091991") assert.Len(t, matches, 1, "Lenght should be 1") }