Skip to content

Instantly share code, notes, and snippets.

@pawlos
Created February 1, 2020 20:25
Show Gist options
  • Save pawlos/dcb3909b584517c7d74cb461e491bf46 to your computer and use it in GitHub Desktop.
Save pawlos/dcb3909b584517c7d74cb461e491bf46 to your computer and use it in GitHub Desktop.
#include <stdio.h>
int main() {
unsigned int expected[8] = {0};
expected[0] = 0x95cb8dbd;
expected[1] = 0xf84cc79;
expected[2] = 0xb899a876;
expected[3] = 0xa5dab55;
expected[4] = 0x9a8b3bba;
expected[5] = 0x70b238a7;
expected[6] = 0x72b53cf1;
expected[7] = 0xd47c0209;
int xxx=0;
int i = 0;
while (i < 4)
{
//printf("i=%d\n",i);
label:
int res;
for(unsigned int A=0x0; A<=0xff; ++A) {
for(unsigned int B=0x0; B<=0xff; ++B) {
//printf(".");
res = 1;
unsigned int v1 = A; //(unsigned __int8)flag[i];
unsigned int v2 = B; //(unsigned __int8)flag[i + 4];
unsigned int k = 0;
unsigned int key[4] = {0};
key[0] = 0x43;
key[1] = 0x30;
key[2] = 0x52;
key[3] = 0x33;
for (int j = 0; j <= 31; ++j )
{
xxx++;
v1 = v1 + (k + key[k & 3] ^ ((v2 << 4) ^ (v2 >> 5)) + v2);
k += 0x1337dead;
v2 = v2 + (k + key[k >> 11 & 3] ^ ((v1 * 0x10) ^ (v1 >> 5)) + v1);
}
if ( v1 != expected[2 * i] )
{
//printf("v1 = %x, expected = %x\n", v1, expected[2*i]);
res = 0;
}
if ( v2 != expected[2 * i + 1] )
{
//printf("v2 = %x\n", v2);
res = 0;
}
if (res == 1) {
printf("i=%d, A=%c, B=%c\n", i, A, B);
res = 0;
i++;
//return 0;
goto label;
}
}
}
}
printf("xxx=%d\n", xxx);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment