Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - ſeptiembre 06, 2008, 08:56:10
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Codigos confusos en C! exelentes para practicar, para desifrar el codigo! 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Codigos confusos en C! exelentes para practicar, para desifrar el codigo!  (Leído 572 veces)
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« en: Noviembre 21, 2007, 09:32:31 »

hola, miren lo que encontre (estaba el link en un post que encontre de casualidad), es una lista de programas que estan "confusos", los programas funcionan, pero son confusos por la forma que lo diseñaron, no porque el que lo diseño sea malo, sino porque esa era la regla, miren un ejemplo:

Código:
#include  <stdio.h>
#define   l "=================================================="
#define   m "                                                  "
int       _(
float     x,
float     y){
return    x>=0&&x<50&&y>=0&&y<20;}
int main  (){
char      a[2][20][51],c[9][4][51][51],d[100];
int       e,f,g,h=0,i,j=0,k,b=0,n[9],o[9],p[9],x[9],y[9],q[9],r,s,t;
float     u[9],v[9],w[9],z[9];
printf    ("i%s\033Yppppppppppppppppppp1G0",l);
do sprintf(a[0][j],"%s",m,
sprintf   (a[1][j],"%s",l));
while     (++j<20);
scanf     ("%d %d\n",&r,&s);
gets      (d);
do        {
sscanf    (d,"%d %d %f %f %f %f %d %d %d",&o[b],&p[b],&u[b],&v[b],&w[b],&z[b],&x[b],&y[b],&q[b],j=n[b]=i=0);
do do     c[b][i][j][x[b]]=!
gets      (c[b][i][j]);
while     (++j<y[b]);
while     (++i<q[b]+(j=0)||!++b);}
while     (
gets      (d)||(i=t=e=f=0));
do        {
do strncpy(a[h][i],m,50);
while     (++i<20||(i=0));
do if     (t>=o[i]&&t<=p[i]&&!(k=j=0))
do do if  (_(u[i]+k,v[i]+j))a[h][(
int       )v[i]+j][(
int       )u[i]+k]=c[i][n[i]][j][k];
while     (++k<x[i]);
while     (++j<y[i]+(k=0)||((++n[i]-q[i]||(n[i]=0)),u[i]+=w[i],v[i]+=z[i],0));
while     (++i<b||(k=j=g=0));
do do if  (a[1-h][j][k]!=a[h][j][k]){f-j&&
printf    ("%dG0",j+1,e=0,g+=4);k&&e>k&&
printf    ("0%d ",k,g+=4);k&&e<k&&k-e>1&&
printf    ("%d ",k-e,g+=3);k&&e<k&&k-e==1&&
printf    (" ",g++);
printf    ("r%c",a[h][j][k],g+=2,e=k,f=j);}
while     (++k<50);
while     (++j<20+(k=0));
do printf ("1G0",g+=3,e=f=0);
while     (g<s);h=1-h;}
while     (++t<=r+(i=0));
return    !
puts      ("");}

bueh, la pagina que tiene todo este tipo de codigos (debe haber mas paginas) es
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
The International Obfuscated C Code Contest
 

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
y aca estan los codigos:

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://www.es.ioccc.org/years.html

hay una lista larga
estan buenos para tratar de desifrar que hacen, yo voy a empezar con alguno, aver que tal me va

salu2!
« Última modificación: Noviembre 28, 2007, 12:08:51 por Ni0 » En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #1 en: Noviembre 23, 2007, 07:15:24 »

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MNum 0xFFFFFFFE

char *Anonymo(char *Cad)
{
int ac=12345;
for(ac^=(*(&ac));*(*(&Cad)+ac);ac+=(!((*Cad)^(*Cad))))
if (!((int)(*(Cad+ac))^10)||!((int)(*(Cad+ac))^13))
ac-=((memmove(Cad+ac,Cad-(ac^-1),strlen(Cad)-ac))?!(*Cad&(*Cad^(-((!(231354^MNum))^1)))):!(ac^MNum));
return Cad;
}

by DarkIker Smiley

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #2 en: Noviembre 25, 2007, 01:27:16 »

lo unico que pude hacer hasta ahora es esto xD:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MNum 0xFFFFFFFE

char *Anonymo(char *Cad)
{
    int ac=12345;
    for(ac = 0;*(cad+ac);ac+=0)
        if (*(Cad+ac) == 10) || *(Cad+ac) == 13)
            ac-=((memmove(Cad+ac,Cad-(ac^-1),strlen(Cad)-ac))?!(*Cad&(*Cad^(-((!(231354^MNum))^1)))):!(ac^MNum));
    return Cad;
}


salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #3 en: Noviembre 25, 2007, 08:55:41 »

Buenas

0) 0xFFFFFFFE
    -2

1) ac ^= (*(&ac))
    ac ^= ac
    ac = 0

2) *(*(&Cad) + ac)
    *(Cad + ac)
     Cad[ac]

3) ac += (! ( (*Cad) ^ (*Cad) ) 
    ac += !0
    ac += 1
    ac++

4) ( !((int)(*(Cad+ac)) ^ 10) || !((int)(*(Cad+ac)) ^ 13) )
    ( !(Cad[ac] ^ 10) ||!(Cad[ac] ^13))      por punto 2
    (Cad[ac] == 10 || Cad[ac] == 13)

5) Cad - (ac ^ -1)
    Cad - 1

6) !( *Cad & (*Cad ^ (- ( ( !( 231354 ^ MNum ) ) ^ 1) ) ) )
    !( *Cad & (*Cad ^ (- (!1  ^ 1) )))
    !( *Cad & (*Cad ^ -1) )
    !( *Cad & 1)

7) !(ac^MNum)
    !1
     0
 
Cool (memmove(Cad + ac , Cad-(ac^-1) , strlen(Cad) - ac))?
    (memmove(Cad + ac, Cad - 1, strlen(Cad) - ac))
   

Si algo esta mal ya vendra DarkIker seguro a corregirme


Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #4 en: Noviembre 25, 2007, 09:01:02 »

claro que vendre a correjirte tio,  y es que hay algo mal  Roll Eyes, y si hay algo mal  Roll Eyes, es mas hay algo muy mal  Roll Eyes. Es solo una cosa flipon, asi que solo ponele algo mas de cabeza al asunto y veras como se resuelve.

PD: Que paso con el MagicNum¿??¿ Mnum;

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #5 en: Noviembre 25, 2007, 10:47:58 »

Buenas

1)  ac ^ MNum != 0 => !(ac ^ MNum) == 0

2) !(*Cad&(*Cad^(-((!(231354^MNum))^1))))                       231354^MNum != 0
    !(*Cad&(*Cad^(-(1^1))))                                                !(231354^MNum) == 0
    !(*Cad & (*Cad ^ 0))
    !(*Cad & *Cad)
    !(*Cad)
    0                                                                                           

Código:
char *Anonymo(char *Cad)
{
    int ac = 12345;

    for(ac = 0 ;Cad[ac] ;ac++)
        if (Cad[ac] == 10)||Cad[ac] == 13))
            ac -= memmove(Cad + ac, Cad - 1, strlen(Cad) - ac) ? 0 : 0;

    return Cad;
}
   

   
« Última modificación: Noviembre 26, 2007, 06:08:06 por Freak_Mind » En línea

Connoisseurs of C semantics find C++ inferior to ++C

Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #6 en: Noviembre 26, 2007, 09:20:03 »

lo que habia echo yo no estaba mal, expeto por ac +=0 y ac++, eso fue lo unico que me confundi, pero lo demas (de lo que hice, porque no lo termine xD) estaba bien..

pero bueh freak lo termino, bien por vos! Smiley

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #7 en: Noviembre 26, 2007, 09:35:35 »

Hay q esperar q DarkIker diga si esta bien o no

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #8 en: Noviembre 26, 2007, 09:38:38 »

es facil, compilar y si hacen lo mismo esta bien no? xD, jeje

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #9 en: Noviembre 26, 2007, 06:19:04 »

sigue havbiendo un error, para auyudarlos les dare una pista, hay que tener cuidado con los numeros negativos Cheesy.

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #10 en: Noviembre 26, 2007, 06:30:41 »

char *Anonymo(char *Cad)
{
    int ac=12345;
    for(ac = 0; Cad[ac]; ac++)
        if (Cad[ac] == 10 || Cad[ac] == 13))
            ac -= 0; /*no es asi?? porque si memmove devuelve 1 se le resta 0, sino 0 (mem.... ? 0 : 0)*/
    return Cad;
}

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #11 en: Noviembre 26, 2007, 06:34:01 »

ahh, no, porque sino la funcion memmove no haria nada xD, jeje
ahora reviso la funcion memmove

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #12 en: Noviembre 26, 2007, 06:42:36 »

ahh no, porque lo moveria a cualquier parte de la memoria porque dice Cad + ac, si diria &Cad + ac asi si que afectaria a cad no??
salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #13 en: Noviembre 26, 2007, 06:47:07 »

bueh, como molesto con mis post....
sirva o no sirva lo que haga la funcion memmove, en lo que se confundio freak es en esto:
 
Código:
ac -= memmove(Cad + ac, Cad - 1, strlen(Cad) - ac) ? 0 : 0; /*mal*/
  ac -= memmove(Cad + ac, Cad  + 1, strlen(Cad) - ac) ? 0 : 0;/*bien, porque Cad - - 1 = Cad + 1 no?*/

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #14 en: Noviembre 26, 2007, 07:04:51 »

Yeah point, y en lo de 0 : 0.

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #15 en: Noviembre 27, 2007, 08:54:00 »

me di cuenta que me RE confundi, soy un lammer, estupido, idiota, pelutudo, boludo, inbesil, burro y un analfabeto de mierda...

porque Cad es un puntero, asique su valor es una direccion de la memoria, asique la funcion memmove si sirve, porque modifica a Cad, asique la funcion memmove si es necesaria, el unico error era lo de + 1.

que ignorate que soy!
pero.. ahi darkiker dice:
Yeah point, y en lo de 0 : 0.

Att: DarkIker
no entiendo.... porque no me corriguio en lo del Cad... y eso que sabes mucho....

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #16 en: Noviembre 27, 2007, 06:13:39 »

Por que en el source final no aparecia osase mostrabs solo la Cad + ac y no le realizabas la que vos creias que era la correccion necesaria.
Bueno la funcion ya fue desvelada y su unica funcion es la de remover saltos de linea y retornos de carro de una cadena, asi si le pasamos "HolaMundo\r\nJojojoj\nmolaaaa\reso", obtendremos "HolaMundoJojojojmolaaaaeso".
Si tienen tele hay se ven.

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #17 en: Noviembre 27, 2007, 06:19:36 »

entonces el codigo final es:
Código:
char *Anonymo(char *Cad)
{
    for(ac = 0; Cad[ac]; ac++)
        if (Cad[ac] == '\n' || Cad[ac] == '\r'))
           memmove(Cad + ac, Cad  + 1, strlen(Cad) - ac);
    return Cad;
}


salu2!, quisa postee uno mio... xD
« Última modificación: Noviembre 27, 2007, 06:21:28 por Ni0 » En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #18 en: Noviembre 27, 2007, 09:57:52 »

falto el ac -= ya que es de vital importancia cuando se remueve un elemento, para que no empieze a contar apartir de uno mas adelante.

Codigo original:

Código:
void RemoveBreaks( char *Cad )
{
for( int ac = 0; ac < strlen( Cad ); ++ac) {
if ( Cad[ac] == '\r' || Cad[ac] == '\n')
ac -= memmove( Cad+ac, Cad+ac+1, strlen( Cad ) - ac) ? 1 : 0;
}
return;
}

Att: DarkIker

En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #19 en: Noviembre 28, 2007, 11:48:06 »

pero en el codigo que puso freak estaba terminada la funcion memmove asi:
? 0 : 0 por lo que ac -= 0 iba a ocurrir siempre, por lo que es inecesario restarle 0 a ac xD, por eso lo quite, pero parece que se confundio y en vez de ? 0 : 0 iba ? 1 : 0
bueh, perdimos, porque ninguno lo termino completo xD, salu2! y pongan alguno, quisa ponga yo uno,pero va a resultar facil porque seria el primero que hago xD

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #20 en: Noviembre 28, 2007, 11:53:37 »

Yep FreakMind tiene algunos problemas con los numeros negativos xDD, por eso mencione arriba que el error era el que señalabas y el de ? 0 : 0.

Código:
Yeah point, y en lo de 0 : 0.

Att: [glow=red,2,300]DarkIker[/glow]

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1365


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #21 en: Noviembre 28, 2007, 02:47:53 »

no habia entendido lo que significaba ese post, ahora si xD

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
acosador500
Recien Llegado
*
Desconectado Desconectado

Mensajes: 18


Ver Perfil
« Respuesta #22 en: Abril 18, 2008, 03:16:48 »

que tal he tratado de abrit con el link y no puedo,
y si me interesan esos codigos.
sas se los agradeseri si, pusieras unos me los mandas a mi E-mail
chido.  jfsrcy1989 @hotmail.com
En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Codigos confusos en C! exelentes para practicar, para desifrar el codigo! « anterior próximo »
Ir a: