主要逻辑
- 输入一个长度为41的flag,并用221填充到48位.
- 分成6组每组8字节的块,传入encode函数
- 异或验证
encode函数
- 生成一个伪随机数key,取8bit,然后base16编码存起来,最终长度为64
- 将每一个块base16编码为一串长度为16的字符串
- 进入第二层encode(块)函数
- base16decode后,再次异或加密
第二层encode函数
- 首先传入一个base后的16字节,传入key,会输出一个enc_base16的字符串
- 首先,函数将每个16字节的块,再次分块,使其成为4组4字节的块
- 然后srand_key传入一个函数,函数会将其扩充为96长度的一个字符串
- 将四字节的块和一个12长度的key传入函数,加密后传出函数并返回给四字节的块
- base16解密
IDEA算法
- 比赛后发现是IDEA算法,那么结合着算法来逆这个