def set_iv()

in nightMARE/src/nightmare/malware/blister/crypto.py [0:0]


    def set_iv(self, iv):
        # generate four subvectors
        v = [0] * 4
        v[0] = unpack("<I", iv[0:4])[0]
        v[2] = unpack("<I", iv[4:8])[0]
        v[1] = (v[0] >> 16) | (v[2] & 0xFFFF0000)
        v[3] = ((v[2] << 16) | (v[0] & 0x0000FFFF)) & 0xFFFFFFFF
        # Modify work's counter values
        for i in range(8):
            self.ctx.w.c[i] = self.ctx.m.c[i] ^ v[i & 3]
        # Copy state variables but not carry flag
        tmp = []

        for cc in self.ctx.m.x:
            tmp += [cc]
        self.ctx.w.x = tmp

        # Iterate system four times
        for i in range(4):
            self.next_state(self.ctx.w)