flag =open('file.txt','rb').readline()
S=[]
T=[]for i inrange(256):
S.append(i)
key ="whoami"for i inrange(256):
T.append(ord(key[i%len(key)]))
j =0for i inrange(256):
j =(j+S[i]+T[i])%256
S[i],S[j]= S[j],S[i]
i =0
j =0
x =0
result =''for m inrange(38):
i =(i+1)%256
j =(j+S[i])%256
S[i],S[j]= S[j],S[i]
x =(S[i]+S[j]%256)%256
result +=chr(ord(flag[m])^S[x])
print result
'''
get buf unsign s[256]
get buf t[256]
we have key:whoami
we have flag:????????????????????????????????for i:0 to 256
set s[i]:i
for i:0 to 256
set t[i]:key[(i)mod(key.lenth)]for i:0 to 256
set j:(j+s[i]+t[i])mod(256)
swap:s[i],s[j]for m:0 to 38
set i:(i +1)mod(256)
set j:(j + S[i])mod(256)
swap:s[i],s[j]
set x:(s[i]+(s[j]mod(256))mod(256))
set flag[m]:flag[m]^s[x]
fprint flagx to file
'''