babymips

注意数据的处理

这里出现位运算,大有可能是高低位进行运算了

这里有一道类似的题目:

[WEEK1]easy_re - 努力的大魔王 - 博客园 (cnblogs.com)

 但是这里写出逆向代码就不对了,看了wp才知道要用 &0xFF 来限制每个操作后的字符的位数为8位

为什么8位?因为v1是char类型,只有一个字节(8位)

 所以wp为:

key1="Q|j{g"
#将字符串 key1 中的每个字符转换为其 ASCII 值,并将这些 ASCII 值存储在一个列表 flag 中
flag=list(map(ord,key1))
flag+=[82, 253, 22, 164, 137, 189, 146, 128, 19, 65, 84, 160, 141, 69, 24, 129, 222, 252, 149, 240, 22, 121, 26, 21, 91, 117, 31]
for a in range(5,32,1):
    if (a&1)!=0:
        flag[a]=((flag[a]<<2)|(flag[a]>>6))&0xFF
    else:
        flag[a]=((flag[a]>>2)|(flag[a]<<6))&0xFF
for i in range(32,):
    flag[i]=chr(flag[i]^(32-i))
print(''.join(flag))

 

posted @ 2023-11-16 20:30  努力的大魔王  阅读(31)  评论(0)    收藏  举报