boolcheck(int*a1) { int i = 0; int b1 = 0x12A; int b2 = 0x39F; int b3 = 0x269; int b4 = 0x1A1; int b5 = 0x68; int b6 = 0x209; int b7 = 0x2C8; int b8 = 0x8A;
int result = 0; do { switch (*a1) { case0: b1 &= b2; b3 *= b1; break; case1: if (!b3) return0; b1 /= b3; b4 += b5; break; case2: b6 ^= b5; b7 += b8; break; case3: b7 -= b6; b6 &= b4; break; case4: b5 *= b8; b3 -= b2; break; case5: b8 ^= b3; b2 -= b7; break; case6: if (!b7) return0; b5 |= b4 / b7; b4 /= b7; break; case7: b2 += b1; b5 |= b4; break; case8: b8 *= b3; b6 -= b7; break; case9: b1 += b5; b3 ^= b6; break; default: return0; } ++a1; ++i; } while (i<8); result =(((b2 == 0xE7) + (b5 == 0x3878) + (b6 == 0x3A71) + (b3 == 0xFFFFCC30) + (b1 == 0x10) + (b4 == 0x68) + (b8 == 0xFFFFFC49)) == 7); if (b7 != 0xFFFFFF11) return0; return result; } intmain() { int a, b, c, d, e, f, g, h ; int test[8] = {}; for (a=0; a < 10; a++) { for (b = 0; b < 10; b++) { for (c = 0; c < 10; c++) { for (d = 0; d < 10; d++) { for (e = 0; e < 10; e++) { for (f = 0; f < 10; f++) { for (g = 0; g < 10; g++) { for (h = 0; h < 10; h++) { test[0] = h; test[1] = g; test[2] = f; test[3] = e; test[4] = d; test[5] = c; test[6] = b; test[7] = a; if (check(test)) { printf("好耶,%d%d%d%d%d%d%d%d",h,g,f,e,d,c,b,a); }
} } } } } } } } return0; }
多重for 循环有点笨重
1 2 3 4 5 6 7 8
s_box8=[0x7C,0xAB,0x2D,0x91,0x2F,0x98,0xED,0xA9] data=[6,1,4,9,5,0,7,2] flag='' for i inrange(len(data)): data[i]^=s_box8[i] flag+='%x'%data[i] print(flag) #7aaa29982a98eaab