Example #1
0
def get_wordlists(lang=None):
    # Try to access local lists, otherwise download text lists
    # if any((listtype, lang)):
    from bitcoin.bci import make_request
    global WORDS
    if 'electrum' in str(lang.lower()):
        WORDS['electrum1'] = make_request(
            "http://tinyurl.com/electrum1words").strip().split()
        return [(k, v.pop(k, "")) for k, v in WORDS]
    bips_url = "https://github.com/bitcoin/bips/raw/master/bip-0039/%s.txt"
    WORDS['electrum1'],        WORDS['english'], WORDS['japanese'], WORDS['spanish'], \
    WORDS['chinese_simplified'], WORDS['chinese_traditional'], WORDS['french'] = map(
        lambda u: make_request(u).strip().split(),
        ("http://tinyurl.com/electrum1words",
         bips_url % 'english',
         bips_url % 'japanese',
         bips_url % 'spanish',
         bips_url % 'chinese_simplified',
         bips_url % 'chinese_traditional',
         bips_url % 'french'))
    assert map(lambda d: isinstance(d, list) and len(d),
               WORDS.values()).count(2048) == len(WORDS.keys()) - 1
    if lang is not None:
        return WORDS[lang.lower()]
    return WORDS
Example #2
0
def bip39_detect_lang(mnem_str):
    # TODO: add Electrum1?, Chinese detect not possible?
    if isinstance(mnem_str, list):
        mnem_str = u' '.join(mnem_str)
    mnem_arr = mnem_str.split()
    sme = set(mnem_arr)
    # French & English share 100 words
    #if sme < (frozenset(set(WORDS["english"]) & set(WORDS["french"]))):
    #    print Warning("Could be English OR French!\nUsing English as default")
    #    return "english"
    languages = set(WORDS.keys())
    languages.remove('electrum1')
    poss_langs = []
    for lang in list(languages):
        if sme < set(WORDS[lang]):
            poss_langs.append(lang)
    if len(poss_langs) == 1:
        return poss_langs[0]
    elif len(poss_langs) == 2:		# 2 possible langauges
        if poss_langs[0][:7] and poss_langs[1][:7] == 'chinese':
            sys.stderr.write("Cannot determine which Chinese wordlist to use!\nChinese traditional returned")
            return 'chinese_traditional'
        if poss_langs[0][:7] and poss_langs[1][:7] in ('french', 'english'):
            sys.stderr.write("Cannot determine if English or French.\nEnglish returned")
            return 'english '
    else:
        sys.stderr.write("Unable to determine language.\nReturning English")
        return 'english'
Example #3
0
def bip39_detect_lang(mnem_str):
    if isinstance(mnem_str, list):
        mnem_str = u' '.join(mnem_str)
    mnem_arr = mnem_str.split()
    sme = set(mnem_arr)  # French & English share 100 words
    languages = set(WORDS.keys())
    languages.remove('electrum1')
    poss_langs = []
    for lang in list(languages):
        if sme < set(WORDS[lang]):
            poss_langs.append(lang)
    if len(poss_langs) == 1:
        return poss_langs[0]
    elif len(poss_langs) == 2:  # 2 possible langauges
        if poss_langs[0][:7] and poss_langs[1][:7] == 'chinese':
            sys.stderr.write(
                "Cannot determine which Chinese wordlist to use!\nChinese traditional returned"
            )
            return 'chinese_traditional'
        if poss_langs[0][:7] and poss_langs[1][:7] in ('french', 'english'):
            sys.stderr.write(
                "Cannot determine if English or French.\nEnglish returned")
            return 'english '
    else:
        sys.stderr.write("Unable to determine language.\nReturning English")
        return 'english'
Example #4
0
def get_wordlists(lang=None):
    # Try to access local lists, otherwise download text lists
    # if any((listtype, lang)):
    from bitcoin.bci import make_request
    global WORDS
    if 'electrum' in str(lang.lower()): 
        WORDS['electrum1'] = make_request("http://tinyurl.com/electrum1words").strip().split()
        return [(k, v.pop(k, "")) for k,v in WORDS]
    bips_url = "https://github.com/bitcoin/bips/raw/master/bip-0039/%s.txt"
    WORDS['electrum1'],        WORDS['english'], WORDS['japanese'], WORDS['spanish'], \
    WORDS['chinese_simplified'], WORDS['chinese_traditional'], WORDS['french'] = map(
        lambda u: make_request(u).strip().split(),
        ("http://tinyurl.com/electrum1words",
         bips_url % 'english',
         bips_url % 'japanese',
         bips_url % 'spanish',
         bips_url % 'chinese_simplified',
         bips_url % 'chinese_traditional',
         bips_url % 'french'))
    assert map(lambda d: isinstance(d, list) and len(d), WORDS.values()).count(2048) == len(WORDS.keys()) - 1
    if lang is not None:
        return WORDS[lang.lower()]
    return WORDS