elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Desofuscar codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Desofuscar codigo  (Leído 2,453 veces)
_TTFH_3500

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Desofuscar codigo
« en: 22 Noviembre 2018, 03:17 am »

Queria compartir el siguiente codigo que genera un Donut 3D (solo funciona en la terminal de Linux o la de MinGW) y mi intento por desofuscarlo.


Código
  1.             k;double sin()
  2.         ,cos();main(){float A=
  3.       0,B=0,i,j,z[1760];char b[
  4.     1760];printf("\x1b[2J");for(;;
  5.  ){memset(b,32,1760);memset(z,0,7040)
  6.  ;for(j=0;6.28>j;j+=0.07)for(i=0;6.28
  7. >i;i+=0.02){float c=sin(i),d=cos(j),e=
  8. sin(A),f=sin(j),g=cos(A),h=d+2,D=1/(c*
  9. h*e+f*g+5),l=cos      (i),m=cos(B),n=s\
  10. in(B),t=c*h*g-f*        e;int x=40+30*D*
  11. (l*h*m-t*n),y=            12+15*D*(l*h*n
  12. +t*m),o=x+80*y,          N=8*((f*e-c*d*g
  13. )*m-c*d*e-f*g-l        *d*n);if(22>y&&
  14. y>0&&x>0&&80>x&&D>z[o]){z[o]=D;;;b[o]=
  15. ".,-~:;=!*#$@"[N>0?N:0];}}/*#****!!-*/
  16.  printf("\x1b[H");for(k=0;1761>k;k++)
  17.   putchar(k%80?b[k]:10);A+=0.04;B+=
  18.     0.02;}}/*****####*******!!=;:~
  19.        ~::==!!!**********!!!==::-
  20.          .,~~;;;========;;;:~-.
  21.              ..,--------,*/
  22.  
Código
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. #define PI 3.14
  6. #define HEIGHT 22
  7. #define WIDTH 80
  8.  
  9. const float R2 = 2; // Distancia del centro del Toroide a la mitad: (   )   |---(-. )
  10. const char* illumination = ".,-~:;=!*#$@";
  11.  
  12. int main(){
  13. float zbuffer[HEIGHT][WIDTH];
  14. char framebuffer[HEIGHT][WIDTH];
  15. float A = 0, C = 0; // Ejes X y Z sobre los que rota el Toroide
  16. printf("\x1b[2J"); // Borrar Pantalla
  17.  
  18. while (true) {
  19. memset(zbuffer, 0.0, HEIGHT * WIDTH * sizeof(float)); // Fondo a distancia infinita
  20. memset(framebuffer, ' ', HEIGHT * WIDTH * sizeof(char)); // Pantalla vacia
  21.  
  22. for (float B = 0; B < 2 * PI; B += 0.07) // Eje Y sobre el que rota el Toroide
  23. for (float phi = 0; phi < 2 * PI; phi += 0.02) { // Eje del toroide (perpendicular al centro)
  24. float
  25. sin_phi = sin(phi),
  26. cos_phi = cos(phi),
  27. sinA = sin(A),
  28. cosA = cos(A),
  29. sinB = sin(B),
  30. cosB = cos(B),
  31. sinC = sin(C),
  32. cosC = cos(C),
  33. // Solo otro par de valores que precalculamos
  34. h = cosB + R2,
  35. t = h * sin_phi * cosA - sinA * sinB,
  36. // Distancia inversa del observador al centro del Toroide
  37. D = 1 / (h * sin_phi * sinA + cosA * sinB + 5);
  38. int
  39. // Posicion de la pantalla donde se renderiza un punto del Toroide
  40. x = 40 + 30 * D * (h * cos_phi * cosC - sinC * t),
  41. y = 12 + 15 * D * (h * cos_phi * sinC + cosC * t),
  42. /* La luz proviene de arriba y atras del observador (0, 1, -1)
  43.   que tiene modulo 2, hay 12 tonos de luz: 0..11, 11 / sqrt(2) = 8
  44.   L = 8 * (y - z); */
  45. L = 8 * ((sinA * sinB - sin_phi * cosA * cosB) * cosC -
  46. sin_phi * sinA * cosB - cosA * sinB - cos_phi * cosB * sinC);
  47. // LAS MATRICES TIENEN INDICES i VERTICAL Y j HORIZONTAL
  48. // MIENTRAS QUE LAS GRAFICAS TIENEN x HORIZONTAL E y VERTICAL
  49. if (x > 0 && x < WIDTH && y > 0 && y < HEIGHT && zbuffer[y][x] < D) {
  50. /* Si el punto actual es mas cercano a la pantalla que alguno calculado
  51.   previamente entonces sobrescribir al anterior */
  52. if (L < 0) L = 0; // Sombra
  53. framebuffer[y][x] = illumination[L];
  54. zbuffer[y][x] = D; // Guardar profundidad
  55. }
  56. }
  57. printf("\x1b[H"); // Mover el cursor a la esquina superior izquierda
  58. for (int i = 0; i < HEIGHT; i++) {
  59. for (int j = 0; j < WIDTH; j++)
  60. putchar(framebuffer[i][j]); // Mostrar Toroide
  61. putchar('\n');
  62. }
  63. A += 0.04;
  64. C += 0.02;
  65. }
  66. return 0;
  67. }
  68.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DESOFUSCAR CODIGO PHP « 1 2 »
PHP
R41N-W4R3 13 18,103 Último mensaje 20 Julio 2007, 14:23 pm
por R41N-W4R3
Desofuscar código PHP [solucionado]
PHP
Shell Root 5 10,463 Último mensaje 7 Enero 2013, 20:17 pm
por Aldonet
Ayuda a desofuscar codigo python
Scripting
CADi 3 6,094 Último mensaje 2 Agosto 2013, 21:35 pm
por 0x5d
Desofuscar un Script
Scripting
otrebor11 5 8,352 Último mensaje 11 Agosto 2019, 03:18 am
por simorg
Desofuscar codigo php (scripts).
PHP
apachay 0 2,736 Último mensaje 30 Agosto 2020, 17:38 pm
por apachay
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines