コード例 #1
0
def calculateProbability(rules, word):
    """
    计算某个口令的概率
    @param: rules:规则集 word:口令字符串
    @return:该口令在该规则集中出现的概率
    """
    word_rules = [w for w in rules if w[0] == 'N1']
    seg_rules = [w for w in rules if w[0] != 'N1']
    after_seg_word = process(word)
    wordlist = [after_seg_word]
    rules = generateRules(wordlist)
    new_rules = []
    for rule in rules:
        if rule[0] == 'N1':
            if len([w for w in word_rules if w[2] == rule[2]]) != 0:
                probability = float(
                    [w[3] for w in word_rules if w[2] == rule[2]][0])
            else:
                probability = 0
            new_rules.append((rule[0], rule[1], rule[2], '%.4f' % probability))
        else:
            if len([w for w in seg_rules if w[0] == rule[0] and w[2] == rule[2]]) != 0:
                probability = float(
                    [w[3] for w in seg_rules if w[0] == rule[0] and w[2] == rule[2]][0])
            else:
                probability = 0
            new_rules.append((rule[0], rule[1], rule[2], '%.4f' % probability))
    final_probability = 1
    for rule in new_rules:
        final_probability = final_probability * float(rule[3])
    return final_probability
コード例 #2
0
def calculateProbability(rules, word):
    """
    计算某个口令的概率
    @param: rules:规则集 word:口令字符串
    @return:该口令在该规则集中出现的概率
    """
    word_rules = [w for w in rules if w[0] == 'N1']
    seg_rules = [w for w in rules if w[0] != 'N1']
    after_seg_word = process(word)
    wordlist = [after_seg_word]
    rules = generateRules(wordlist)
    new_rules = []
    for rule in rules:
        if rule[0] == 'N1':
            if len([w for w in word_rules if w[2] == rule[2]]) != 0:
                probability = float(
                    [w[3] for w in word_rules if w[2] == rule[2]][0])
            else:
                probability = 0
            new_rules.append((rule[0], rule[1], rule[2], '%.4f' % probability))
        else:
            if len([
                    w for w in seg_rules if w[0] == rule[0] and w[2] == rule[2]
            ]) != 0:
                probability = float([
                    w[3] for w in seg_rules
                    if w[0] == rule[0] and w[2] == rule[2]
                ][0])
            else:
                probability = 0
            new_rules.append((rule[0], rule[1], rule[2], '%.4f' % probability))
    final_probability = 1
    for rule in new_rules:
        final_probability = final_probability * float(rule[3])
    return final_probability
コード例 #3
0
    word_rules = [w for w in rules if w[0] == 'N1']
    seg_rules = [w for w in rules if w[0] != 'N1']
    probabilitiest_password_set = []
    for i in xrange(0, num):
        choose_word_rule = chooseBestRules(word_rules)
        syntactic_structure = choose_word_rule[2]
        temp_syntactic_structure = syntactic_structure.replace(']', ']|')
        base_structure = temp_syntactic_structure.split("|")[:-1]
        probabilitiest_password = []
        for w in base_structure:
            seg_set = [i for i in seg_rules if i[0] == w]
            choose_seg_rule = chooseBestRules(seg_set)
            probabilitiest_password.append(choose_seg_rule[2])
        probabilitiest_password_set.append(''.join(probabilitiest_password))
    return probabilitiest_password_set

if __name__ == '__main__':
    word = ['iloveyou2', 'ihatedthem3', 'football3']
    print '口令列表:'
    print word
    wordlist = [process(w) for w in word]
    rules = generateRules(wordlist)
    print '口令规则集:'
    pprint(rules)
    print '在规则集中最有可能的3个新口令:'
    print getProbabilitiestPassword(rules,3)
    probability = calculateProbability(rules,'youlovethem2')
    print ('%s 在规则集中的概率是:%f') %('youlovethem2',probability)


コード例 #4
0
    """
    word_rules = [w for w in rules if w[0] == 'N1']
    seg_rules = [w for w in rules if w[0] != 'N1']
    probabilitiest_password_set = []
    for i in xrange(0, num):
        choose_word_rule = chooseBestRules(word_rules)
        syntactic_structure = choose_word_rule[2]
        temp_syntactic_structure = syntactic_structure.replace(']', ']|')
        base_structure = temp_syntactic_structure.split("|")[:-1]
        probabilitiest_password = []
        for w in base_structure:
            seg_set = [i for i in seg_rules if i[0] == w]
            choose_seg_rule = chooseBestRules(seg_set)
            probabilitiest_password.append(choose_seg_rule[2])
        probabilitiest_password_set.append(''.join(probabilitiest_password))
    return probabilitiest_password_set


if __name__ == '__main__':
    word = ['iloveyou2', 'ihatedthem3', 'football3']
    print '口令列表:'
    print word
    wordlist = [process(w) for w in word]
    rules = generateRules(wordlist)
    print '口令规则集:'
    pprint(rules)
    print '在规则集中最有可能的3个新口令:'
    print getProbabilitiestPassword(rules, 3)
    probability = calculateProbability(rules, 'youlovethem2')
    print('%s 在规则集中的概率是:%f') % ('youlovethem2', probability)