Exemple #1
0
def fill_mem_slot_2(n, z, p1=True, p2=True, p3=True, p4=True):
    global mem_slot_2

    for i in range(36):
        mem_slot_2[i] = 0b0000_0000_0000_0000_0000_0000_0000_0000

    signal_2_shifted = helper.shift(signal_2, n)
    signal_3_suppressed = helper.suppress(signal_3, p1, p2, p3, p4)
    signal_3_shifted = helper.shift(signal_3_suppressed, z)

    for s in range(len(signal_1)):
        i = s * 4 + 3
        j, k = int(i / 32), i % 32  #calculate j (junk), k (position)
        if signal_1[s] == "1":
            mem_slot_2[j] = mem_slot_2[j] | 1 << 31 - k

    for s in range(len(signal_2_shifted)):
        i = s * 4 + 1
        j, k = int(i / 32), i % 32  #calculate j (junk), k (position)
        if signal_2_shifted[s] == "1":
            mem_slot_2[j] = mem_slot_2[j] | 1 << 31 - k

    for s in range(len(signal_3_shifted)):
        i = s * 4 + 2
        j, k = int(i / 32), i % 32  #calculate j (junk), k (position)
        if signal_3_shifted[s] == "1":
            mem_slot_2[j] = mem_slot_2[j] | 1 << 31 - k

    for s in range(len(signal_4)):
        i = s * 4
        j, k = int(i / 32), i % 32  #calculate j (junk), k (position)
        if signal_4[s] == "1":
            mem_slot_2[j] = mem_slot_2[j] | 1 << 31 - k
Exemple #2
0
def rerun(
    py_charm=True
):  # TODO: increase support + ability to bring correct window to focus
    if py_charm:
        shift("f10")
        return True
    return False
Exemple #3
0
 def gen_round_key(self, key, round=1, verbose=False):
     if verbose:
         print("________----------------________")
         print("ROUND: {}".format(round))
         print("Key[{}]: {}:{}".format(round - 1, helper.get_split_string_from_list(key), len(key)))
     key = list(key)
     if verbose:
         print("G: Key: {}:{}".format(helper.get_split_string_from_list(key[-32:]), len(key[-32:])))
     shift_key = helper.shift(key[-32:], 8)
     if verbose:
         print("G: Shifted-Key: {}:{}".format(helper.get_split_string_from_list(shift_key), len(shift_key)))
         print("G: RC: {}:{}".format('{0:08b}'.format(self.RC[round]), len('{0:08b}'.format(self.RC[round]))))
         print("G: V1: {}:{}".format("".join(shift_key[0:8]), len(shift_key[0:8])))
     shift_key[0:8] = list('{0:08b}'.format(int("".join(shift_key[0:8]), base=2) ^ self.RC[round]))
     if verbose:
         print("G:     " + "".join(shift_key[0:8]))
         print("G: Key:{}:{}".format(helper.get_split_string_from_list(shift_key), len(shift_key)))
     key[0:32] = shift_key
     for i in range(32, len(key) - 1, 32):
         if verbose:
             print("--------------------------------")
             print("W[{}] ^ W[{}]:".format(int(((i / 32) - 1) * round), int((i / 32) * round)))
             print("{}:{}".format(helper.get_split_string_from_list(key[(i - 32):i]), len(key[(i - 32):i])))
             print("{}:{}".format(helper.get_split_string_from_list(key[i:(i + 32)]),
                                  len(key[i:(i + 32)])))
         key[i:(i + 32)] = self.__xor_lists__(key[(i - 32):i], key[i:(i + 32)])
         if verbose:
             print("{}:{}".format(helper.get_split_string_from_list(key[i:(i + 32)]),
                                  len(key[i:(i + 32)])))
     if verbose:
         print("Key[{}]: {}:{}".format(round, helper.get_split_string_from_list(key), len(key)))
     return "".join(key)
Exemple #4
0
 def inv_shift_rows(self, hex_matrix, verbose=False):
     for i in range(1, len(hex_matrix)):
         hex_matrix[i] = helper.shift(hex_matrix[i], -i)
     return hex_matrix
Exemple #5
0
 def shift_rows(self, hex_matrix):
     for i in range(1, len(hex_matrix)):
         hex_matrix[i] = helper.shift(hex_matrix[i], i)
     return hex_matrix