re-ti(迷宫+迷宫步骤解密)

二木 王者

RE-Tiger

迷宫题

这里unk_7ff706BA3520是我们迷宫的地图,我们可以动态调试将其提取出来

Untitled

12结合我们提取的数据分析,可以知道是12*12的棋盘

Untitled

分析可知,墙面为’O’ 终点为0x16,起点为0x01

Untitled

先用这个脚本提取出我们的迷宫,打印出迷宫

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<stdio.h>
int main()
{

char map[144] = {0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x01,
0x06, 0x06, 0x06, 0x06, 0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x06, 0x4F, 0x4F,
0x4F, 0x06, 0x06, 0x4F, 0x4F, 0x4F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x4F, 0x4F,
0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x06, 0x4F, 0x06, 0x06, 0x4F, 0x4F, 0x4F, 0x06, 0x4F,
0x4F, 0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x06, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x06,
0x4F, 0x06, 0x06, 0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x06, 0x06, 0x4F, 0x06, 0x4F, 0x4F,
0x4F, 0x06, 0x06, 0x06, 0x06, 0x4F, 0x16, 0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F,
0x06, 0x4F, 0x06, 0x4F, 0x4F, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F};
int num = 0;
for (int i = 0; i < 144; i++)
{

printf("%02x ", map[i]);
num++;
if (num == 12)
{
printf("\n");
num = 0;
}

}
return 0;
}

用我们常用的wasd来走迷宫

Untitled

ddssddddsdssassssaaaww

我们分析可以发现我们的步数是加密了的,因此基于脚本分析,将我们awsd转化为对应的上下,然后再以此为密文,进行解密

Untitled

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<stdio.h>
int main()
{
char arr[30] = {0x2D, 0x3A, 0x14, 0x1B, 0x37, 0x3D, 0x03, 0x0C, 0x1E, 0x1F, 0x22, 0x29, 0x05, 0xEF, 0xDE, 0xE3,
0xF1, 0x17, 0x2C, 0x0D, 0xE4, 0xF9, 0x38, 0x43, 0x89, 0x62, 0xCD, 0x0C, 0x07, 0x7A, 0x2B, 0x63};

char a[24] = {"ddssddddsdssassssaaaww"};
char a2[24];
for (int i = 0; i < 22; i++)
{
switch (a[i])
{
case 'w':
a2[i] = 141;
break;
case 'a':
a2[i] = 155;
break;
case 's':
a2[i] = 137;
break;
case 'd':
a2[i] = 158;
break;
}
}
char flag[23];
for (int i = 0; i < 22; i++)
{
flag[i] = ((a2[i] ^ 0xfa) + i) ^ arr[i];
}
for (int i = 0; i < 22; i++)
{
printf("%c", flag[i]);
}

return 0;
}

得到flag

I_am_Tiger_Who_are_you

Untitled

加上头

Redrock{I_am_Tiger_Who_are_you}

 评论
目录