base8 mp

runwu2204 Lv6

base8

image-20230303191609257

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int __cdecl sub_4117A0(char *a1, _BYTE *a2)
{
int result; // eax
char v3[16]; // [esp+DCh] [ebp-14h] BYREF

__CheckForDebuggerJustMyCode(&unk_41C014);
strcpy(v3, "01234567");
*a2 = v3[*a1 >> 5];
a2[1] = v3[(*a1 >> 2) & 7];
a2[2] = v3[2 * (*a1 & 3) + (a1[1] >> 7)];
a2[3] = v3[(a1[1] >> 4) & 7];
a2[4] = v3[(a1[1] >> 1) & 7];
a2[5] = v3[4 * (a1[1] & 1) + (a1[2] >> 6)];
a2[6] = v3[(a1[2] >> 3) & 7];
result = 7;
a2[7] = v3[a1[2] & 7];
return result;
}

此处为base8形式可以用大数运算来进行

具体解密代码如下‘

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
39
40
41
42
43
44
45
char zidian[]="01234567";
int flag=0;
char jiemizifu[3];
int bianli(char a)
{
int j=0;
for(int b=0;b<8;b++)
{
if(a==zidian[b])
{
return b;
}
}
}
long long int zhuanhua10(char *a,char *b)
{
if(b-a>7)
return 0;
return bianli(*a)+zhuanhua10(a-1,b)*8;
}
long long int zhuanhua256(long long int a)
{
if(a<=0)
return 0;
return a%256+zhuanhua256((a-a%256)/256)*1000;
}
void jiemi(char *a,char *b,int lenth)
{
for(int i=0,j=0;j<lenth;i+=3,j+=8)
{
long long int linshi=zhuanhua256(zhuanhua10(a+j+7,a+j+7));
(b)[i+2]=linshi%1000;
linshi/=1000;
(b)[i+1]=(linshi%1000);
linshi/=1000;
(b)[i]=(linshi%1000);
}
}
int main()
{
char zifuchuan[]="2645153225431064252551072025110716055127160331032465113222654061142345302363050424443400";
char a[100];
jiemi(zifuchuan,(a),89);
printf("%s",a);
}
  • 标题: base8 mp
  • 作者: runwu2204
  • 创建于 : 2023-03-03 21:20:26
  • 更新于 : 2023-06-23 01:49:08
  • 链接: https://runwu2204.github.io/2023/03/03/Re/实验室报告/base8 mp/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
base8 mp