逆向签到
easy_magic
和我想的还是有一点差错的
我直接猜那个sub_219B是将 v10 转成十六进制字符串的,结果是 md5 加密
但这个题做出来和 md5 没什么关系
#include <stdio.h>
#include<string.h>
int main()
{
int v4;
char v5;
char v7[32];
char v10[104];
v7[0] = 17;
v7[1] = 0xF2;
v7[2] = 13;
v7[3] = 0xF5;
v7[4] = 7;
v7[5] = 8;
v7[6] = 4;
v7[7] = 0xBC;
v7[8] = 65;
v7[9] = 0xE7;
v7[10] = 7;
v7[11] = 6;
v7[12] = 0xF5;
v7[13] = 6;
v7[14] = 0xF8;
v7[15] = 10;
v7[16] = 10;
v7[17] = 0xEC;
v7[18] = 9;
v7[19] = 0xFD;
v7[20] = 0xD;
v7[21] = 0xF3;
v7[22] = 24;
v5 = 0;
v4 = int('c') ^ 0x77;
v5 = v4 ^ 0x77;
v10[0] = 'c';
for (int i = 0; i <= 22; ++i)
{
v5 += v7[i];
v10[i + 1] = v5;
}
v10[24] = 0;
for(int i = 0;i<=strlen(v10);i++)
{
printf("%c", v10[i]);
}
}
//ctfshow{7x_flag_is_here}
来补充一点 md5 的知识
1,填充,if len(information) (bit) %512 !=448 ,填充1个1和n个0,N * 512+448
2,64位记录信息长度
3,装入四个标准幻数
4,循环运算,每一512字节细分成16组,每组64位(8个字节)
就是512bit,四个整数,循环运算