[HNCTF 2022 WEEK2]TTTTTTTTTea

主要是代码的转换

这里是主要的xtea算法的加密过程

 然后逆向解密代码如下

#include <stdio.h>
int main(){
    unsigned int l,r;
    unsigned int v4[6]={-1054939302,-1532163725,-165900264,853769165,768352038,876839116};
    int flag[6]={0};
    unsigned int delta;
    unsigned int key[4]={0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f};
    int i,j;
    for(i=0;i<6;i+=2){
        l=v4[i];
        r=v4[i+1];
        delta=-32*1640531527;
        for(j=0;j<32;j++){
            r -= (((l >> 5) ^ (l*16)) + l) ^ (key[(delta>>11)&3]+ delta);//*16==<<4 
            delta += 1640531527;
            l -= (((r >> 5) ^ (r*16)) + r) ^ (key[delta&3]+ delta);
        }
        flag[i]=l;
        flag[i+1]=r;
    }
    char *p = (char*)flag;
    for(i=0;i<24;i++){
        printf("%c",*p);
        p++;
    }
}

主要是这里的数据的转换

 a2是传入的key

 key的值为

 这里是需要转换为四个八位的数,因为一个int是四个字节,一个字节是八位,所以就是要写成四个八位的数组,即

 然后要注意逻辑的转换,操作的是数组里面的数据

 最后得到flag

NSSCTF{Tea_TEA_TeA_TEa+}

posted @ 2023-11-22 00:42  努力的大魔王  阅读(380)  评论(0)    收藏  举报