Exemplo n.º 1
0
Arquivo: obj.py Projeto: mmgen/mmgen
	def __new__(cls,seed=None,sid=None,on_fail='die'):
		if type(sid) == cls: return sid
		cls.arg_chk(on_fail)
		try:
			if seed:
				from mmgen.seed import Seed,SubSeed
				assert type(seed) in (Seed,SubSeed),'not a Seed or SubSeed instance'
				from mmgen.util import make_chksum_8
				return str.__new__(cls,make_chksum_8(seed.data))
			elif sid:
				assert set(sid) <= set(hexdigits.upper()),'not uppercase hex digits'
				assert len(sid) == cls.width,'not {} characters wide'.format(cls.width)
				return str.__new__(cls,sid)
			raise ValueError('no arguments provided')
		except Exception as e:
			return cls.init_fail(e,seed or sid)
Exemplo n.º 2
0
	def __new__(cls,seed=None,sid=None,on_fail='die'):
		if type(sid) == cls: return sid
		cls.arg_chk(on_fail)
		try:
			if seed:
				from .seed import SeedBase
				assert isinstance(seed,SeedBase),'not a subclass of SeedBase'
				from .util import make_chksum_8
				return str.__new__(cls,make_chksum_8(seed.data))
			elif sid:
				assert set(sid) <= set(hexdigits.upper()),'not uppercase hex digits'
				assert len(sid) == cls.width,'not {} characters wide'.format(cls.width)
				return str.__new__(cls,sid)
			raise ValueError('no arguments provided')
		except Exception as e:
			return cls.init_fail(e,seed or sid)
Exemplo n.º 3
0
	def __new__(cls,seed=None,sid=None,on_fail='die'):
		if type(sid) == cls: return sid
		cls.arg_chk(cls,on_fail)
		try:
			if seed:
				from mmgen.seed import Seed
				assert type(seed) == Seed,'not a Seed instance'
				from mmgen.util import make_chksum_8
				return str.__new__(cls,make_chksum_8(seed.get_data()))
			elif sid:
				assert set(sid) <= set(hexdigits.upper()),'not uppercase hex digits'
				assert len(sid) == cls.width,'not {} characters wide'.format(cls.width)
				return str.__new__(cls,sid)
			raise ValueError,'no arguments provided'
		except Exception as e:
			m = "{!r}: value cannot be converted to SeedID ({})"
			return cls.init_fail(m.format(seed or sid,e[0]),on_fail)
Exemplo n.º 4
0
 def build_character_set(self):
     '''Assemble the list of acceptable characters for password generation.
     '''
     if self.hexadecimal:
         # If hexadecimal output enabled, return early.
         # Use *only* hex in character set.
         # Do some manipulations here to remove lowercase `a-f`
         if self.upper:
             hexcase = hexdigits.upper()
         else:
             hexcase = hexdigits.lower()
         self.char_set += ''.join(list(set(hexcase)))
         return
     if self.alpha:
         self.char_set += ascii_lowercase
     if self.upper:
         self.char_set += ascii_uppercase
     if self.numerals:
         self.char_set += digits
     if self.special:
         self.char_set += punctuation
Exemplo n.º 5
0
Arquivo: util.py Projeto: mmgen/mmgen
def is_hex_str_uc(s): return set(list(s))         <= set(list(hexdigits.upper()))
def is_b58_str(s):    return set(list(s))         <= set(baseconv.digits['b58'])
Exemplo n.º 6
0
def is_hex_str_uc(s):
    return set(list(s)) <= set(list(hexdigits.upper()))
Exemplo n.º 7
0
def is_hex_str_uc(s): return set(list(s))         <= set(list(hexdigits.upper()))
def is_b58_str(s):    return set(list(s))         <= set(baseconv.digits['b58'])
Exemplo n.º 8
0
def is_hexstring_uc(s):
	return _is_whatstring(s,hexdigits.upper())
Exemplo n.º 9
0
# цифры числа. Например, пользователь ввёл A2 и C4F. Сохранить их как [‘A’, ‘2’]
# и [‘C’, ‘4’, ‘F’] соответственно. Сумма чисел из примера: [‘C’, ‘F’, ‘1’],
# произведение - [‘7’, ‘C’, ‘9’, ‘F’, ‘E’].

from collections import deque
from string import hexdigits
from string import digits
# import cProfile


def hex_digit_to_int(char: str = '0') -> int:
    assert char in hexdigits, f'{char} not a hex digit'
    return int(char) if char in digits else ord(char.upper()) - ord('A') + 10


hex_numbers = list(hexdigits.upper())[:16]


def int_to_hex(number: int) -> str:
    return hex_numbers[number]


number1 = list(input("Введите первое hex: ").upper())
number2 = list(input("Введите второе hex: ").upper())
# number1 = list("a2".upper())
# number2 = list("c4f".upper())
print(number1, number2, sep='\n')


def hex_sum(num1: list, num2: list) -> list:
    n1 = num1.copy()
Exemplo n.º 10
0
def _variable_substitution(context: ParserCtx, *, var_name: str) -> Optional[str]:
    ctx = context.ctx
    row, _ = ctx.position
    c_lhs, c_rhs = context.info.comment_str
    path = PurePath(ctx.filename)

    if var_name == "TM_SELECTED_TEXT":
        return context.info.visual

    elif var_name == "TM_CURRENT_LINE":
        return ctx.line

    elif var_name == "TM_CURRENT_WORD":
        return ctx.words

    elif var_name == "TM_LINE_INDEX":
        return str(row)

    elif var_name == "TM_LINE_NUMBER":
        return str(row + 1)

    elif var_name == "TM_FILENAME":
        return path.name

    elif var_name == "TM_FILENAME_BASE":
        return path.stem

    elif var_name == "TM_DIRECTORY":
        return normcase(path.parent)

    elif var_name == "TM_FILEPATH":
        return normcase(path)

    elif var_name == "RELATIVE_FILEPATH":
        try:
            return normcase(path.relative_to(ctx.cwd))
        except ValueError:
            return None

    elif var_name == "CLIPBOARD":
        return context.info.clipboard

    elif var_name == "WORKSPACE_NAME":
        return ctx.cwd.name

    elif var_name == "WORKSPACE_FOLDER":
        return normcase(ctx.cwd)

    # Randomv value related
    elif var_name == "RANDOM":
        return "".join(choices(digits, k=6))

    elif var_name == "RANDOM_HEX":
        return "".join(choices(tuple({*hexdigits.upper()}), k=6))

    elif var_name == "UUID":
        return str(uuid4())

    # Date/time related
    elif var_name == "CURRENT_YEAR":
        return datetime.now().strftime("%Y")

    elif var_name == "CURRENT_YEAR_SHORT":
        return datetime.now().strftime("%y")

    elif var_name == "CURRENT_MONTH":
        return datetime.now().strftime("%m")

    elif var_name == "CURRENT_MONTH_NAME":
        return datetime.now().strftime("%B")

    elif var_name == "CURRENT_MONTH_NAME_SHORT":
        return datetime.now().strftime("%b")

    elif var_name == "CURRENT_DATE":
        return datetime.now().strftime("%d")

    elif var_name == "CURRENT_DAY_NAME":
        return datetime.now().strftime("%A")

    elif var_name == "CURRENT_DAY_NAME_SHORT":
        return datetime.now().strftime("%a")

    elif var_name == "CURRENT_HOUR":
        return datetime.now().strftime("%H")

    elif var_name == "CURRENT_MINUTE":
        return datetime.now().strftime("%M")

    elif var_name == "CURRENT_SECOND":
        return datetime.now().strftime("%S")

    elif var_name == "CURRENT_SECONDS_UNIX":
        return str(round(datetime.now().timestamp()))

    elif var_name == "BLOCK_COMMENT_START":
        return c_lhs if c_lhs and c_rhs else None

    elif var_name == "BLOCK_COMMENT_END":
        return c_rhs if c_lhs and c_rhs else None

    elif var_name == "LINE_COMMENT":
        return (c_lhs or None) if not c_rhs else None

    else:
        return None
Exemplo n.º 11
0
# def hex_str_to_list(string: str) -> list:
#     return list(string.upper())
#
# print(hex_str_to_list("a2"))
# print(hex_str_to_list("C4f"))


def hex_digit_to_int(char: str = 0) -> int:
    assert char in hexdigits
    return int(char) if char in digits else ord(char.upper()) - ord('A') + 10


hex_numbers = defaultdict(int)

for char in set(hexdigits.upper()):
    hex_numbers[char] = hex_digit_to_int(char)

# print(hex_numbers)


def int_to_hex(number: int) -> str:
    for hex_digit in hex_numbers:
        if hex_numbers[hex_digit] == number:
            return hex_digit


# print(int_to_hex(1))
# exit()

# print(tuple(map(lambda x: f"digit_{x}", set(hexdigits.upper()))))