Programacion en código ofuscado

El Código ofuscado es aquél que ha sido “enredado” de manera intencional a fin de que sea muy difícil su comprensión, ocultando de esa forma su propósito.
Por ejemplo el siguiente programa tiene como función mostrar los números primos menores a 100:
1 2 3 4 5 6 7 8 9 10 11 | void primes(int cap) { int i, j, composite, t = 0; while(t < cap * cap) { i = t / cap; j = t++ % cap; if(i <= 1); else if(j == 0) composite = 0; else if(j == i && !composite) printf("%d\t",i); else if(j > 1 && j < i) composite += !(i % j); } } |
Pero si las variables cap, i, j, t se renombran usando guión bajo en lugar de de caracteres alfabéticos, se eliminan espacios y se agrupan líneas este mismo programa ahora se verá así:
1 2 3 4 | _(__,___,____){___/__<=1?_ (__,___+1,____):!(___%__)?_(__,___+1,0):___%__==___/ __&&!____?(printf("%d\t",___/__),_(__,___+1,0)):___%__>1&&___%__<___/__?_(__,1+ ___,____+!(___/__%(___%__))):___<__*__?_(__,___+1,____):0;}main(){_(100,0,0);} |
Que realiza la misma tarea. Para probarlo en Dev-C++ se le deben agregar algunas sentencias, quedando como:
1 | #include int _(int __,int ___,int ____){___/__<=1?_(__,___+1,____):!(___%__)?_(__,___+1,0):___%__==___/ __&&!____?(printf("%d\t",___/__),_(__,___+1,0)):___%__>1&&___%__<___/__?_(__,1+ ___,____+!(___/__%(___%__))):___<__*__?_(__,___+1,____):0;}main(){_(100,0,0);system (" PAUSE "); } |
Otro ejemplo muy novedoso es el siguiente programa (compilar en Dev-C++)
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 | #include #define _(_) putchar(_); int main(void){int i = 0;_( ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++i)_(++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++i)_(++++++++++++++ i)_(--++i)_(++++++i)_(------ ---------------------------- ---------------------------- ---------------------------- ---------------------------- ----------------i)_(-------- ----------------i)_(++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++i) _(----------------i)_(++++++ i)_(------------i)_(-------- --------i)_(---------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ------i)_(------------------ ---------------------------- i)system (" PAUSE ");return i;} |
¡Averigua que es lo que hace…es imposible que lo averigües mirando el código!
Existe una competencia internacional de código ofuscado que ya lleva varios años realizándose y que puedes visitar en la dirección: http://www.ioccc.org/main.html Allí podrás encontrar verdaderas joyas de programación ofuscada.
Ultimos 5 artículos escritos por Gaston-Contreras
- El ABC de la programación - 8 September, 2008