Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GGZ en 29 Junio 2017, 03:03 am



Título: {FizzBuzz} Ofuscado en C.
Publicado por: GGZ en 29 Junio 2017, 03:03 am
Hola.

Encontré este código buscando por Google y me parece tremendo.

Es un fizzbuzz y está terrible.

¿FizzBuzz, qué es?
Citar
Escribe, en el lenguaje de programación que desees, un programa que muestre en pantalla los números del 1 al 100, sustituyendo los múltiplos de 3 por el palabro “Fizz” y, a su vez, los múltiplos de 5 por “Buzz”. Si son múltiplos de 3 y 5, imprimir el índice.

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  int i;
  5.  for (i=1; i<=100; i++) {
  6.    if (i%3==0) {
  7.      printf("Fizz");
  8.    }
  9.    if (i%5==0) {
  10.      printf("Buzz");
  11.    }
  12.    if (i%3!=0 && i%5!=0) {
  13.      printf("%d", i);
  14.    }
  15.    printf("\n");
  16.  }
  17.  return 0;
  18. }

Ofuscado:

Código
  1. int main(__,_)
  2. int __;long unsigned _;
  3. {
  4.  if(exit((asprintf((void**)&_,&(14*!(__%15)+!!(__%15)*!(__%3)*2+!!(__%3)*!(__%5)*8+!!(__%5)*!!(__%3)*24)[(const char*)&(short[]){0,'if','zz',256,'ub','zz',512,'if','zz','ub','zz',1024,'d%',2048}],__),free((puts((void*)_),_)),__<100?(**main)(__+1):0)),1){}
  5. }
  6.  

¿Alguno tendrá algún consejo o alguna guia para aprender a ofuscar código en C? Encontré cosas interesantes de todos modos quería dejar este código hermoso acá.

Saludos.


Título: Re: {FizzBuzz} Ofuscado en C.
Publicado por: MAFUS en 29 Junio 2017, 07:36 am
Lo principal es conocer muy bien C para saber toda su sintaxis.
Después creas un programa normal y trabajas a partir de él transformando las senten ias simples en un grupo equivalente que hagan lo mismo. Este último punto lo repites hasta que quedes satisfe o mientras sigas sin liarte.