コード例 #1
0
def get_header_not_lsb(image, chans, header_start, header_length, bits):
    img = imageio.imread(image)
    height, width, _ = img.shape

    chars = []
    count = 0
    for r in range(height):
        for c in range(width):
            if count < header_start + header_length:
                previous_length = len(chars)
                if 0 in chans:
                    chars.extend(
                        list(
                            str((int2ba((img[r, c, 0] & bits) >>
                                        (bits / 2)).item())).split('\'')[1]))
                if 1 in chans:
                    chars.extend(
                        list(
                            str((int2ba((img[r, c, 1] & bits) >>
                                        (bits / 2)).item())).split('\'')[1]))
                if 2 in chans:
                    chars.extend(
                        list(
                            str((int2ba((img[r, c, 2] & bits) >>
                                        (bits / 2)).item())).split('\'')[1]))
                if 3 in chans:
                    chars.extend(
                        list(
                            str((int2ba((img[r, c, 3] & bits) >>
                                        (bits / 2)).item())).split('\'')[1]))
                count += len(chars) - previous_length
    output = "".join(chars)[header_start:header_start + header_length]
    return ba2int(bitarray(output))
コード例 #2
0
def codebook_compression(image_shape, window_size, codes, codebook):
    height, width = image_shape

    res = bitarray()

    height_code = f"{int(height):032b}"
    width_code = f"{int(width):032b}"
    res += bitarray(height_code)
    res += bitarray(width_code)

    window_size_code = f"{int(window_size):032b}"
    res += bitarray(window_size_code)

    codebook_size = len(codebook)
    codebook_size_code = f"{int(codebook_size):032b}"
    res += bitarray(codebook_size_code)

    for codebook_code in codebook:
        for element in codebook_code:
            element_code = int2ba(int(element), length=9, signed=True)
            res += element_code

    bits_per_code = int(np.ceil(np.log2(codebook_size)))
    for vector_code in codes:
        vector_code_code = int2ba(int(vector_code),
                                  length=bits_per_code,
                                  signed=False)
        res += vector_code_code

    return res
コード例 #3
0
ファイル: problem64.py プロジェクト: roggenbrot42/problem64
 def count(self):
     a = btutil.int2ba(self.wstate)
     b = btutil.int2ba(self.bstate)
     c = Counter()
     c[Color.WHITE] = a.count(True)
     c[Color.BLACK] = b.count(True)
     return c
コード例 #4
0
def makeEp(data, streamIndex, isFrameEnd, frameType):
    assert (0 <= streamIndex < 2**64)
    assert (0 <= frameType < 2**64)
    assert (0 <= len(data) <= 2**13)
    if (len(data) == 0):
        return b"\x00"

    bits = bitarray(endian='big')

    #put as many zeros as the number of bits needed for the stream index, minus one
    streamIndexNbBits = streamIndex.bit_length()
    bits += bitarray((streamIndexNbBits - 1) * "0" + "1")
    #then put the index
    bits += int2ba(streamIndex, length=None,
                   endian='big')  #stream index associtated to the data

    bits.append(isFrameEnd)  #are those data the end of the current frame
    if (isFrameEnd):
        #put as many zeros as the number of bits needed for the frame type, minus one
        frameTypeNbBits = frameType.bit_length() + 1
        bits += bitarray((frameTypeNbBits - 1) * "0" + "1")
        #then put the frame type
        bits += int2ba(frameType, length=None, endian='big')

        bits.append(0)  #unknown
        bits.append(
            1
        )  #need to write a value of size nb_zero*2+28 bits afterwards, so just nullify nb_zero

        bits += bitarray("0" * 28)  #unknown

    #put data len minus one on 13 bits
    bits += int2ba(len(data) - 1, length=13, endian='big')

    return bits.tobytes() + data
コード例 #5
0
def read_n_bits(image, chans, bits, n):
    img = imageio.imread(image)
    height, width, _ = img.shape
    print("Height:", height, "Width:", width)

    chars = []
    count = 0
    for r in range(height):
        for c in range(width):
            if count < n:
                previous_length = len(chars)
                if 0 in chans:
                    chars.extend(
                        list(
                            str(int2ba(
                                (img[r, c, 0] & bits).item())).split('\'')[1]))
                if 1 in chans:
                    chars.extend(
                        list(
                            str(int2ba(
                                (img[r, c, 1] & bits).item())).split('\'')[1]))
                if 2 in chans:
                    chars.extend(
                        list(
                            str(int2ba(
                                (img[r, c, 2] & bits).item())).split('\'')[1]))
                if 3 in chans:
                    chars.extend(
                        list(
                            str(int2ba(
                                (img[r, c, 3] & bits).item())).split('\'')[1]))
                count += len(chars) - previous_length
    output = bitarray("".join(chars))
    print(output.tobytes())
コード例 #6
0
def int_to_bitarray(n):
    if (n < 0):
        n = abs(n)
        a = util.int2ba(n)
        a.invert()
    else:
        a = util.int2ba(n)
    return a
コード例 #7
0
 def __init__(self, client_id: int, service_server_id: int,
              current_timestamp: int, valid_period_seconds: int,
              encryption_key: bitarray) -> None:
     self.client_id = int2ba(client_id)
     self.service_server_id = int2ba(service_server_id)
     self.current_timestamp = int2ba(current_timestamp)
     self.valid_period_seconds = int2ba(valid_period_seconds)
     self.encryption_key = encryption_key
コード例 #8
0
ファイル: wcdcgan_trainer.py プロジェクト: jinczing/pokeGAN
	def get_random_cond(self, batch_size):
		cond = []
		for i in range(batch_size):
			labels = list(int2ba(np.random.randint(0, 17)).to01().zfill(5))
			labels += list(int2ba(np.random.randint(0, 17)).to01().zfill(5))
			labels = list(map(int, labels))
			labels += list(np.clip((np.random.randn(8)+1)*0.5, 0, 1))
			cond.append(labels)
		return torch.FloatTensor(cond).view(batch_size, -1, 1, 1)
コード例 #9
0
def encode(b):
    counts = collections.Counter(b)

    sorted_counts = sorted(
        counts.items(),
        key=lambda item: item[1],
        reverse=True,
    )
    if len(sorted_counts) == 0:
        encodings = []
    elif len(sorted_counts) == 1:
        encodings = [(sorted_counts[0][0], bitarray("0"))]
    else:
        while len(sorted_counts) > 1:
            right, right_count = sorted_counts.pop()
            left, left_count = sorted_counts.pop()
            sorted_counts.append(((left, right), left_count + right_count))
            sorted_counts = sorted(
                sorted_counts,
                key=lambda item: item[1],
                reverse=True,
            )

        tree = sorted_counts[0][0]

        encodings = []

        def f(current_encoding, tree):
            if isinstance(tree, tuple):
                left, right = tree
                left_encoding = current_encoding + bitarray("0")
                f(left_encoding, left)
                right_encoding = current_encoding + bitarray("1")
                f(right_encoding, right)
            else:
                encodings.append((tree, current_encoding))

        f(bitarray(), tree)

    encode_dict = dict(encodings)
    z = bitarray()
    if b:
        z.encode(encode_dict, b)
    decode_dict = {
        symbol.to_bytes(1, byteorder='big'): bits
        for symbol, bits in encode_dict.items()
    }
    serialized_dict = serialize_dict(decode_dict)
    dict_length = int2ba(len(serialized_dict), length=16)
    z_length = int2ba(len(z), length=64)

    return dict_length + serialized_dict + z_length + z
コード例 #10
0
 def test_int2ba(self):
     self.assertEqual(int2ba(0), bitarray('0'))
     self.assertEqual(int2ba(1), bitarray('1'))
     self.assertEqual(int2ba(5), bitarray('101'))
     self.assertEQUAL(int2ba(6, endian='big'), bitarray('110', 'big'))
     self.assertEQUAL(int2ba(6, endian='little'), bitarray('011', 'little'))
     self.assertRaises(TypeError, int2ba, 1.0)
     self.assertRaises(TypeError, int2ba, 1, 3.0)
     self.assertRaises(ValueError, int2ba, 1, 0)
     self.assertRaises(TypeError, int2ba, 1, 10, 123)
     self.assertRaises(ValueError, int2ba, 1, 10, 'asd')
     # signed integer requires length
     self.assertRaises(TypeError, int2ba, 100, signed=True)
コード例 #11
0
    def test_int2ba_length(self):
        self.assertRaises(TypeError, int2ba, 0, 1.0)
        self.assertRaises(ValueError, int2ba, 0, 0)
        self.assertEqual(int2ba(5, length=6, endian='big'), bitarray('000101'))
        for n in range(1, 100):
            ab = int2ba(1, n, 'big')
            al = int2ba(1, n, 'little')
            self.assertEqual(ab.endian(), 'big')
            self.assertEqual(al.endian(), 'little')
            self.assertEqual(len(ab), n),
            self.assertEqual(len(al), n)
            self.assertEqual(ab, bitarray((n - 1) * '0') + bitarray('1'))
            self.assertEqual(al, bitarray('1') + bitarray((n - 1) * '0'))

            ab = int2ba(0, n, 'big')
            al = int2ba(0, n, 'little')
            self.assertEqual(len(ab), n)
            self.assertEqual(len(al), n)
            self.assertEqual(ab, bitarray(n * '0', 'big'))
            self.assertEqual(al, bitarray(n * '0', 'little'))

            self.assertEqual(int2ba(2**n - 1), bitarray(n * '1'))
            self.assertEqual(int2ba(2**n - 1, endian='little'),
                             bitarray(n * '1'))
            for endian in 'big', 'little':
                self.assertEqual(int2ba(-1, n, endian, signed=True),
                                 bitarray(n * '1'))
コード例 #12
0
def uint_to_bitarray(number, size):
    a = util.int2ba(number, signed=False)
    add = size - len(a)
    z = util.zeros(add)
    for x in a:
        z.append(x)
    return z
コード例 #13
0
    def is_mnemonic_valid(self, mnemonic):
        words = normalize_string(mnemonic).split(" ")
        num_words = len(words)

        if num_words not in VALID_WORD_COUNTS:
            return False

        try:
            indices = tuple(self.wordlist.index(w) for w in words)
        except ValueError:
            return False

        encoded_seed = bitarray()
        for idx in indices:
            # Build bitarray from tightly packing indices (which are 11-bits integers)
            encoded_seed.extend(int2ba(idx, length=11))

        entropy_size = 4 * num_words // 3

        # Checksum the raw entropy bits
        checksum = bitarray()
        checksum.frombytes(sha256(encoded_seed[:entropy_size * 8].tobytes()))
        computed_checksum = checksum[:len(encoded_seed) -
                                     entropy_size * 8].tobytes()

        # Extract the stored checksum bits
        stored_checksum = encoded_seed[entropy_size * 8:].tobytes()

        # Check that the stored matches the relevant slice of the actual checksum
        # NOTE: Use secrets.compare_digest for protection again timing attacks
        return secrets.compare_digest(stored_checksum, computed_checksum)
コード例 #14
0
ファイル: solve.py プロジェクト: ojthek/Advent_of_Code_2020
def trans(value):
    global mask
    a = util.int2ba(value, length=36)
    for i, v in enumerate(mask):
        if v != "X":
            a[i] = (v == "1")
    return a
コード例 #15
0
def flipped_text_with_header(image, bit_start, chans, bits, testing_multiple):
    bit_lengths = {1: 1, 3: 2, 7: 3}
    img = imageio.imread(image)
    height, width, _ = img.shape
    print("Height:", height, "Width:", width)

    length = get_flipped_header(image, chans, bit_start, 32, bits)
    print(length)

    hidden_width = get_flipped_header(image, chans, bit_start + 32, 32, bits)
    print(hidden_width)

    if testing_multiple:
        if input("Continue?") in ["n", "N"]:
            return

    chars = []
    for c in range(width):
        for r in range(height):
            if len(chars) < (length * 8) + 32 + bit_start:
                for chan in chans:
                    x = list(
                        str(int2ba(
                            (img[r, c, chan] & bits).item())).split('\'')[1])

                    if (len(x) < bit_lengths[bits]):
                        for i in range(bit_lengths[bits] - len(x)):
                            x.insert(0, '0')

                    chars.extend(x)
    output = bitarray("".join(chars))[bit_start:bit_start + (length * 8 + 32)]
    print(output.tobytes()[4:length + 4])
コード例 #16
0
ファイル: Algorithm.py プロジェクト: reloadedd/Faculty
    def mangling_function(self, right_side, key):
        expanded_bitstring = self.permute(right_side, EXPANSION_FUNCTION)
        xor = expanded_bitstring ^ key

        b_list = []
        begin = 0
        for end in range(6, len(xor) + 1, 6):
            b_list.append(xor[begin:end])
            begin = end

        c_of_j_list = []
        for i, b in enumerate(b_list):
            row = bitarray(2)
            row[0] = b[0]
            row[1] = b[-1]
            row_num = ba2int(row)

            column = bitarray(4)
            for j in range(1, 5):
                column[j - 1] = b[j]
            col_num = ba2int(column)

            c_of_j_list.append(int2ba(S_BOXES[i][row_num * 16 + col_num], 4))

        big_c = bitarray()
        for i in c_of_j_list:
            big_c += i
        # print(f'S-BOX outputs = {big_c}')
        return self.permute(big_c, PERMUTATION)
コード例 #17
0
 def apply(self, val):
     bt = bt_util.int2ba(val, length=36, endian="big")
     debug(f"Input:  {bt}")
     bt &= self.and_mask
     bt |= self.or_mask
     debug(f"Masked: {bt}")
     return bt_util.ba2int(bt)
コード例 #18
0
def XORKeyGenerator(seed):
    generatedKey = seed

    generatedKey ^= generatedKey >> 3
    generatedKey ^= generatedKey << 2
    generatedKey ^= generatedKey >> 7
    # print(int2ba(generatedKey))
    return int2ba(generatedKey)
コード例 #19
0
def calculate_graye_code():
    result = []
    for item in range(0, 32):
        bits = bitarray(int2ba(item))
        gray_code = bitarray(bits >> 1)
        gray_code ^= bits
        result.append(Number(bits, gray_code, ba2int(bits)))
    return result
コード例 #20
0
def even_bits_text(image, chans, bits, testing_multiple):
    # Don't use 'bits'

    img = imageio.imread(image)
    height, width, _ = img.shape
    print("Height:", height, "Width:", width)

    length = get_header(image, chans, 0, 32, bits)
    print(length)

    if testing_multiple:
        if input("Continue?") in ["n", "N"]:
            return

    chars = []
    count = 0
    for r in range(height):
        for c in range(width):

            # change once we figure out headers
            if count < 30:
                previous_length = len(chars)

                for color in range(3):

                    print('color_before: ', (int2ba(
                        (img[r, c, color]).item())))

                    color_even = (list(
                        str(int2ba((img[r, c, color]).item())).split('\'')[1]))

                    # to preserve leading 0's
                    if (len(color_even) < 8):
                        for i in range(8 - len(color_even)):
                            color_even.insert(0, '0')

                    print('color_even: ', color_even)
                    for i in range(len(color_even)):

                        if (i % 2 != 0):
                            print('added: ', color_even[i])
                            chars.extend(color_even[i])

                count += len(chars) - previous_length
    output = bitarray("".join(chars))
    print(output.tobytes()[4:length + 4])
コード例 #21
0
ファイル: main.py プロジェクト: juliusga/Informacijos-Teorija
def generate_delta(index: int):
    # v_k_s = u_[log2(k+1)] + (k+1)_2
    m_k = int(log2(index + 1))
    delta_array = generate_gamma(m_k)
    k_part = int2ba(index + 1)
    delta_array.extend(k_part)
    delta_array.pop(len(delta_array) - m_k - 1)
    return delta_array
コード例 #22
0
ファイル: attacks_filters.py プロジェクト: Euphoriaa/pycpc
def generate_mem_content(code, initial: bitarray, delta: bitarray, N=100):
    initial = bit_util.ba2int(initial)
    delta = bit_util.ba2int(delta)
    overlap = 2**(code.k)
    data = [x % overlap for x in range(initial, initial + N * delta, delta)]

    ba_data = [bit_util.int2ba(d, length=code.k) for d in data]
    codewords = [code.encode_word(word) for word in ba_data]
    return codewords
コード例 #23
0
def s_block(b: bitarray, i: int) -> bitarray:
    assert len(b) == 6
    row_bits = bitarray(2)
    row_bits[0] = b[0]
    row_bits[1] = b[5]
    row = ba2int(row_bits)
    assert 0 <= row < 4
    col = ba2int(b[1:4])
    assert 0 <= col < 16
    return int2ba(S[i][row][col], length=4)
コード例 #24
0
 def set_time_lag(self, conv=0b100, avg=0b01):
     with SMBus(self.i2c_ch) as bus:
         #read the configure register
         #print(self.hadd, self.sensor_configure_register)
         conf = bus.read_i2c_block_data(self.hadd, sc.TMP117_CONF_REGISTER,
                                        2)
         #print("Old CONFIG:", conf)
         #high8 = util.int2ba(conf[0], 8)[:6] + util.int2ba(conv, 3)[:2]
         #low8 = util.int2ba(conv, 3)[2:] + util.int2ba(avg, 2) + util.int2ba(conf[1], 8)[3:]
         #print(high8, low8)
         conf[0] = util.ba2int(
             util.int2ba(conf[0], 8)[:6] + util.int2ba(conv, 3)[:2])
         conf[1] = util.ba2int(
             util.int2ba(conv, 3)[2:] + util.int2ba(avg, 2) +
             util.int2ba(conf[1], 8)[3:])
         #print(conf)
         bus.write_i2c_block_data(self.hadd, sc.TMP117_CONF_REGISTER, conf)
         conf = bus.read_i2c_block_data(self.hadd, sc.TMP117_CONF_REGISTER,
                                        2)
コード例 #25
0
 def test_explicit(self):
     for i, sa in [(0, '0'), (1, '1'), (2, '10'), (3, '11'), (25, '11001'),
                   (265, '100001001'), (3691038, '1110000101001000011110')]:
         ab = bitarray(sa, 'big')
         al = bitarray(sa[::-1], 'little')
         self.assertEQUAL(int2ba(i), ab)
         self.assertEQUAL(int2ba(i, endian='little'), al)
         self.assertEqual(ba2int(ab), ba2int(al), i)
         if i == 0 or i >= 512:
             continue
         for n in range(9, 32):
             for endian in 'big', 'little':
                 a = int2ba(i, length=n, endian=endian)
                 self.assertEqual(a.endian(), endian)
                 self.assertEqual(len(a), n)
                 if endian == 'big':
                     f = a.index(1)
                     self.assertEqual(a[:f], bitarray(f * '0'))
                     self.assertEqual(a[f:], ab)
コード例 #26
0
ファイル: zaklocenia.py プロジェクト: SkaySoul/NIDUC_PROJECT
def additiveScramble(data):
    current_index = 0
    # scramble_key = int2ba(len(data))
    scramble_key = int2ba(50)

    while current_index < len(data) - 1:
        data[current_index:(
            current_index + len(scramble_key))] = data[current_index:(
                current_index + len(scramble_key))] ^ scramble_key
        current_index += len(scramble_key)
コード例 #27
0
def translate_line(assembly_line: str) -> bitarray:
    '''Translate a line of assembly code to bit instructions.'''
    symbols = assembly_line.split(' ')
    a_code = symbols[0]
    exp_args = corium.get_arg_types(a_code)
    act_args = symbols[1:]
    bits = bitarray(0)
    bit_count = 0

    if len(exp_args) < len(act_args):
        raise SyntaxError(f'Too many args for command {a_code}!')
    elif len(exp_args) > len(act_args):
        raise SyntaxError(f'Not enough args for command {a_code}!')
    else:
        bits = corium.get_m_code(a_code)
        bit_count += 8

    for i in range(len(act_args)):
        arg = int(act_args[i])
        arg_type = exp_args[i]
        if arg_type == 'imm' and arg < MIN_IMM:
            raise ValueError(f'Min value for an immediate is {MIN_IMM}!')
        elif arg_type == 'imm' and arg > MAX_IMM:
            raise ValueError(f'Max value for an immediate is {MAX_IMM}!')
        elif arg_type == 'imm':
            imm = int2ba(arg, 16, signed=True)
            bits += imm
            bit_count += 16
        elif arg < MIN_REG:
            raise ValueError(f'Min value for a register is {MIN_REG}!')
        elif arg > MAX_REG:
            raise ValueError(f'Max value for a register is {MAX_REG}!')
        else:
            reg = int2ba(arg, 4, signed=False)
            bits += reg
            bit_count += 4

    zeros = '0' * (32 - bit_count)
    zero_bits = bitarray(zeros)
    bits += zero_bits

    return bits