三个白帽条条大路通罗马系列2之二进制题分析
}
}
return v7;
}
int check(char a,char *s) //检查字符a是否在字符串s里
{
int i=0;
for (i=0;istrlen(s);i++)
{
if (s[i]==a)
{
return 1;
}
}
return 0;
}
int check2(char *s) //第二次hash 每次hash后检查一下 是否在0-9间,同时检查一下是否有重复数字
{
int v7=hash(s);
char *v5;
v5=(char *)malloc(4);
v5[0] = char(v7 >> 16);
v5[1] = char(v7 >> 8);
v5[2] = char(v7);
v5[3]='\0';
if ( !check(v5[0],sz) || !check(v5[1],sz) || !check(v5[2],sz) )
{
return 0;
}
else if(v5[0]==v5[1]||v5[0]==v5[2]||v5[1]==v5[2])
{
return 0;
}
else
return 1;
}
void get(char *s,int index,int in1,int in2) //暴力枚举 获得满足第一次hash结果的 hash密文 和明文
{
char *p,*q,char ms[3];
char *v5;
int i0=0,i=0,j=0,v7=0,k=0,num=0;
p=q=s;
for (i0=0;i0
{
p[in1]=m1[i0];
for ( i = 0; i
{
if (in2!=0)
{
p[in2]=m1[i];
}
else
i=65;
v7=hash(p);
v5=(char *)malloc(4);
v5[0] = char(v7 >> 16);
v5[1] = char(v7 >> 8);
v5[2] = char(v7);
v5[3]='\0';
if ( check(v5[0],m1) && check(v5[1],m1) && check(v5[2],m1) )
{
infos[index][num].hash=(char *)malloc(4);
strcpy(infos[index][num].hash,v5);
ms[0]=p[in1];
if (in2==0)
{
ms[1]='\0';
}
else
{
ms[1]=p[in2];
ms[2]='\0';
}
infos[index][num].mw=(char *)malloc(3);
strcpy(infos[index][num].mw,ms);
【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。