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)