Skip to content

Instantly share code, notes, and snippets.

@iagox86
Created April 24, 2013 04:26
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iagox86/5449611 to your computer and use it in GitHub Desktop.
Save iagox86/5449611 to your computer and use it in GitHub Desktop.
// compile with:
// isildur cnot.c0 -l l4rt.h0 -o test.s --obfuscate --anti-debug --confuse
// gcc test.s obf.c -o cnot
// strip cnot
int t(int a) {
return (a >> 30) & 0x3;
}
int s(int a) {
return (a >> 25) & 0x1F;
}
int r(int a) {
return (a >> 20) & 0x1F;
}
int q(int a) {
return (a >> 15) & 0x1F;
}
int k(int a) {
return (a >> 10) & 0x1F;
}
int j(int a) {
return (a >> 5) & 0x1F;
}
int h(int a) {
return a & 0x1F;
}
int g(int f, int i) {
return (f >> i) & 1;
}
bool c1(int f, int a) {
int K = k(a);
int J = j(a);
int H = h(a);
return (g(f, K) & g(f, J) & g(f, H)) == 1;
}
bool c2(int f, int a) {
int Q = f >> ((a >> 15) & 0x1F);
int R = f >> ((a >> 20) & 0x1F);
int S = f >> ((a >> 25) & 0x1F);
int T = f >> ((a >> 30) & 0x3);
return (Q & R & S & T & 1) == 1;
}
int fib(int k) {
if (k == 0 || k == 1) return k;
int n = k / 2;
int f1 = fib(n);
int f2 = fib(n - 1);
if ((k & 1) == 0) {
return f1 * (f1 + 2 * f2);
}
else if ((k & 3) == 1) {
return (2 * f1 + f2) * (2 * f1 - f2) + 2;
}
return (2 * f1 + f2) * (2 * f1 - f2) - 2;
}
int add1(int f, int a) {
int K = k(a);
int J = j(a);
int H = h(a);
return f | (1 << K) | (1 << J) | (1 << H);
}
int add2(int f, int a) {
int Q = q(a);
int R = r(a);
int S = s(a);
int T = t(a);
return f | (1 << Q) | (1 << R) | (1 << S) | (1 << T);
}
int add3(int f, int a) {
int K = k(a);
int R = r(a);
int S = s(a);
int H = h(a);
return f | (1 << K) | (1 << R) | (1 << S) | (1 << H);
}
bool isLetter(int v) {
return ((65 <= v) && (v <= 90)) || ((97 <= v) && (v <= 122));
}
bool isLowercase(int v) {
return ((97 <= v) && (v <= 122));
}
bool isNumber(int v) {
return ((48 <= v) && (v <= 57));
}
bool checkCharacterTypes(int[] arr) {
if (isLetter(arr[0]) &&
isLetter(arr[1]) &&
isLowercase(arr[2]) &&
isLowercase(arr[3]) &&
isLetter(arr[4]) &&
!isLetter(arr[5]) && !isNumber(arr[5]) &&
isLetter(arr[6]) &&
!isLetter(arr[7]) && !isNumber(arr[7]) &&
isNumber(arr[8]) &&
isLowercase(arr[9]) &&
arr[9] == arr[3] - 1 &&
isLetter(arr[10]) &&
isLetter(arr[11]) &&
isLetter(arr[12]) &&
isLetter(arr[13]) && !isLowercase(arr[13]) &&
isLetter(arr[14]) &&
isLetter(arr[15]) &&
isLetter(arr[16]) && !isLowercase(arr[16]) &&
isLetter(arr[17]) &&
!isLetter(arr[18]) && !isNumber(arr[18]) &&
isLetter(arr[19]) &&
isLetter(arr[20]) &&
!isLetter(arr[20]-1) &&
isLetter(arr[21]) &&
isLetter(arr[22]) && !isLowercase(arr[22]) &&
!isLetter(arr[23]) && !isNumber(arr[23]))
return true;
return false;
}
bool checkOrder(int[] arr) {
if(arr[0] > arr[1])
if(arr[1] > arr[2])
if(arr[2] < arr[3])
if(arr[3] > arr[4])
if(arr[4] > arr[5])
if(arr[5] < arr[6])
if(arr[6] > arr[7])
if(arr[7] < arr[8])
if(arr[8] < arr[9])
if(arr[9] < arr[10])
if(arr[10] > arr[11])
if(arr[11] < arr[12])
if(arr[12] > arr[13])
if(arr[13] < arr[14])
if(arr[14] < arr[15])
if(arr[15] > arr[16])
if(arr[16] < arr[17])
if(arr[17] > arr[18])
if(arr[18] < arr[19])
if(arr[19] > arr[20])
if(arr[20] < arr[21])
if(arr[21] > arr[22])
if(arr[22] > arr[23])
return true;
return false;
}
bool checkDuplicates(int[] arr) {
if(add3(0, arr[5]) == add3(0, arr[7]))
if(add1(0, arr[5]) == add1(0, arr[7]))
if(add3(0, arr[7]) == add3(0, arr[18]))
if(add1(0, arr[7]) == add1(0, arr[18]))
if(add1(0, arr[2]) == add1(0, arr[4]) &&
add3(0, arr[2]) == add3(0, arr[4]))
if(add1(0, arr[11]) == add1(0, arr[2]) &&
add3(0, arr[11]) == add3(0, arr[4]))
if(add1(0, arr[13]) == add1(0, arr[16]) &&
add3(0, arr[13]) == add3(0, arr[16]))
if(add1(0, arr[15]) == add1(0, arr[17]) &&
add3(0, arr[15]) == add3(0, arr[17]))
if(add1(0, arr[12]) == add1(0, arr[12]) &&
add3(0, arr[19]) == add3(0, arr[19]))
if(add1(0, arr[6]) == add1(0, arr[10]) && add3(0, arr[6]) == add3(0, arr[10]))
return true;
return false;
}
// key: where u 3quenTisTs naoW?
int main() {
int[] arr = alloc_array(int, 80);
int[] arr2 = alloc_array(int, 80);
int[] arr3 = alloc_array(int, 80);
int q = 1;
int i = 0;
printchar(80); printchar(108); printchar(101); printchar(97);
printchar(115); printchar(101); printchar(32); printchar(101);
printchar(110); printchar(116); printchar(101); printchar(114);
printchar(32); printchar(121); printchar(111); printchar(117);
printchar(114); printchar(32); printchar(112); printchar(97);
printchar(115); printchar(115); printchar(119); printchar(111);
printchar(114); printchar(100); printchar(58); printchar(32);
while (q > 0 && !eof()) {
q = readchar();
if (q == 10) break;
if (q < 32 || q > 127) break;
arr[i] = q;
i++;
if (i >= 80)
break;
}
for (i = 0; i < 80; i++) {
arr2[i] = arr[i];
arr[i] = fib(arr[i]);
arr3[i] = fib(i+1) * arr2[i];
}
int a1; int a2; int a3; int a4; a1 = 0; a2 = 0; a3 = 0; a4 = 0;
for (i = 0; i < 80; i++) {
if (arr[i] == 0) break;
a1 = add1(a1, arr[i]); a2 = add2(a2, arr[i]);
a3 = add1(a3, arr3[i]); a4 = add2(a4, arr3[i]);
}
bool r = false;
int l = 0;
for (i = 0; i < 80; i++) arr[i] = arr2[i];
for (l = 0; l < 80 && arr[l] != 0; l++) { }
if (l == 24) {
if (checkCharacterTypes(arr)) {
if (a3 == -84412929 && a4 == 171971103) {
if (a1 == -8914954 && a2 == -39944353) {
if(checkOrder(arr))
if(add1(0,arr[23]) == -2147483645 && add2(0,arr[23]) == 1)
if(checkDuplicates(arr))
if(add1(arr[0],arr[0]) != add3(arr[0],arr[0]) &&
add1(arr[0]+1,arr[0]+1) == add3(arr[0]+1,arr[0]+1) &&
arr[0] > 104)
if(add1(arr[1],arr[1]) == add3(arr[1],arr[1]) &&
add1(arr[1]-32,arr[1]-32) != add3(arr[1]-32,arr[1]-32) &&
arr[1] < 105 && arr[1] > 100)
if(add1(arr[14],arr[14]) == add3(arr[14],arr[14]) &&
add1(arr[14]-32,arr[14]-32) != add3(arr[14]-32,arr[14]-32) &&
arr[14] < 110 && arr[14] > 100)
if(add1(arr[6],arr[6]) != add3(arr[6],arr[6]) &&
add1(arr[6]-32,arr[6]-32) == add3(arr[6]-32,arr[6]-32) &&
arr[6] > 116)
if(add1(arr[2]-32,arr[2]-32) == 101 &&
add3(arr[2]-32,arr[2]-32) == 101)
if(add1(0,arr[19]) == 16393 &&
add3(0,arr[19]) == 16385 && arr[12] == arr[19]) {
r = true;
}
}
}
}
}
if (!r) {
printchar(87); printchar(114); printchar(111);
printchar(110); printchar(103); printchar(33); printchar(10);
exit(0);
}
printchar(67);
printchar(111); printchar(114); printchar(114); printchar(101);
printchar(99); printchar(116); printchar(33); printchar(10);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment