I'm working on a reverse engineering challenge and I have to inverse the following serie of equation in order to get the flag, I am using python as scripting language :
key = "test"
flag = 1638842181
for c in key :
flag = flag >> 27 | ((flag ^ ord(c)) << 5)
flag = flag & 0xffffffff
print("1.%c : %d" % (c, flag))
flag = flag ^ (flag << 8)
flag = flag & 0xffffffff
print("2.%c : %d" % (c, flag))
the result is :
1.t : 903341612
2.t : 3794913836
1.e : 1178159420
2.e : 2138076476
1.s : 3993938415
2.s : 3769059055
1.t : 350802812
2.t : 4231769980
I tried this code expecting 1638842181 as final result :
flag = 4231769980
key = "test"
i = 3
while i >= 0 :
flag = (flag >> 8) ^ flag
flag = flag & 0xffffffff
print("1.%c : %d" % (key[i], flag))
flag = ( (flag >> 5) ^ ord(key[i]) ) | flag << 27
flag = flag & 0xffffffff
print("2.%c : %d" % (key[i], flag))
i -= 1
but the result is :
1.t : 4240938195
2.t : 2682666194
1.s : 2675563246
2.s : 1962659492
1.e : 1955542378
2.e : 1403288014
1.t : 1408753079
2.t : 3131031193
User contributions licensed under CC BY-SA 3.0