Invert logical operations

-6

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
python
reverse-engineering
logical-operators
bit-shift
xor
asked on Stack Overflow Aug 14, 2019 by Simon • edited Aug 14, 2019 by Simon

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0