[ Foro de C ]

bots en c, c ofuscado

02-Aug-2015 12:28
Invitado (Juan María galindio)
3 Respuestas

Alguién tiene algun listado de algún bot en C, y si alguién tiene codigo ofuscado en C++ , que envie los listados al foro.

Atentamente un cordial saludo.


09-Aug-2015 12:21
Nacho Cabanes (+83)

No tiene sentido hablar de "bots" en general. Un bot automatiza una serie de tareas. El cometido del bot dependerá del tipo de tarea repetitiva que quieras automatizar. No es lo mismo un bot que te envíe cada hora estadísticas de visitas a tu web, o uno que revise tu ordenador cada día en busca de basura acumulada y ficheros duplicados, o uno que aparente ser un jugador humando en un juego online masivo.

Aun así, los bots no son sencillos de programar. Muchas de las tareas que resulta útil automatizar tienen que ver con redes y entornos web, así que son tareas complejas, y más aún en lenguajes antiguos como C. Al menos, en Java o C# sería un poco más asequible.

En cuanto a código ofuscado, estamos en las mismas: si C (y C++) son lenguajes en los que es fácil crear algo que sea ilegible, no acabo de entender que un aprendiz quiera empezar por ver fuentes que se entienden todavía menos.

Si te gustan cosas como éste:


#include<netdb.h>
#include<stdio.h>
#include<sys/time.h>
#define NCC 1701
#define STARDATE 500000
#define k 16309

                      int C,p,t,J,a,m,e,s,T,K,i,r[k],_[k][2],c[k][2],f=NCC;
                    fd_set O,d,o;char g[8][k],*h,j[]="0\1&me\1&t&e\1TFTTJPO>"
                 "\1&t\\_<\16\v^\1&+\\_;^&o;&e\1TFU.DPPLJF;\1iuuq;00&92:2\\_0^&"
               "o\1&tDppljf;!tfttjpo>&t\16\v\16\v\1HFU!&t!IUUQ02/1\16\vIptu;!"""
            "&t\16\v\1IUUQ02/1!311!PL\16\vDpoufou.uzqf;!ufyu0iunm\16\vFyqjsft;!1"""
          "\16\vTfu.Dppljf;!tfttjpo>&t\16\vDpoufou.Mfohui;!&me\16\v\16\v&t\1=iunm?=c"                                 "pez!chdpmps>#cmbdl"
       "#?=ejw!tuzmf>(qptjujpo;bctpmvuf<upq;61&&<mfgu;61&&<usbotgpsn;usbotmbufY).61&&*u"                        "sbotmbufZ).61&&*<(?=gpou!dpm"
     "ps>#xijuf#?=qsf?&t=0qsf?=0gpou?=0ejw?=0cpez?=0iunm?\1T`K!`.`[!G!G`\v]C`)K>0`>`0!E`/"                  "D.(D.aD./E`D!C`p`K!F`0F`}\vM!]`!]E!"
   "]E./J`/E.0C!G>I`0L.0\vO!]!]D!0C!0E!a.`.(K!)E`0I!]G`E!}\vK!C`-C.a/a.(//(.`[!N!]C!+!]\vJ!0E`K!}}[!K!C`0E`0C`\vO!aC./E`-.([!K!|K`|";struct sockad\
dr_in l;struct timeval n,q;struct hostent*u;long w;void x(int y){close(y);FD_CLR(y,&O);if(y>=m)while(--m)if(FD_ISSET(m,&O))break;}vo\
id z(char*A,char*B){char*D,*E=A,*F=A;for(0[0[g]]=0;*E;E++)if(*E==10){if(E-F==(*(E-1)-13?1:2))break;*E=0;if(!strncmp(F,B,strlen(B))&&(D=strstr(F,j+\
11))){sscanf(D+8,j+20,0[g]);break;}F=E+1;}else*E=toupper(*E);}int main(int G,char**H){h=j;while(*h)(*h)--,h++;h=j+414;do{t=*h++;e=1;if(t>=65&&t<=90)e
=t-64,t=*h++;while(e--)6[g][i++]=t;}while(t);sprintf(7[g],j+229,6[g]);l.sin_family=2;if(G>1){sscanf(1[H],j+53,4[g],&K);sprintf(2[g],j+97,*(1[H]+K)?1[
H]+K:j,4[g]);sscanf(4[g],j+29,&i,&f);i[4[g]]=0;u=gethostbyname(4[g]);memcpy(&l.sin_addr.s_addr,0[u->h_addr_list],u->h_length);l.sin_port=htons(f);\
for(;;close(G))if(!connect(G=socket(2,1,0),&l,sizeof l))for(;;){strcpy(1[g],0[g]);s=sprintf(5[g],j+72,2[g],0[g]);if(write(G,5[g],s)<0)break;gett\
imeofday(&n,0);0[3[g]]=0;e=read(G,3[g],k);if(e<0)break;else if(e&&*3[g]==72){gettimeofday(&q,0);3[g][k-1]=0;z(3[g],j+41);if(0[1[g]])if(!strnc\
mp(1[g],0[g],strlen(1[g]))){t=0;if((q.tv_sec-n.tv_sec)*1000000+q.tv_usec-n.
tv_usec<STARDATE-1000){t=p<15?1:16;p+=t;C+=t;}else p=p<15?15:255;if(p==2\
55){putchar(C);fflush(stdout);C=p=0;}}else{T=1;goto l;}}}}else{for(f=0;
f<k;f++){if((i=fgetc(stdin))<0)break;f[r]=i;}for(i=0;i<k;i++){0[i[_]]
=1[i[_]]=-1;0[i[c]]=1[i[c]]=0;}gettimeofday(&n,0);p=sprintf(5[g],j+2
,n.tv_sec);n.tv_sec=0;n.tv_usec=STARDATE;FD_ZERO(&d);FD_ZERO(&O);F\
D_ZERO(&o);l.sin_addr.s_addr=0;l.sin_port=htons(NCC);bind(G=sock\
et(2,1,0),&l,sizeof l);listen(G,10);FD_SET(m=G,&O);for(i=1,t=0;;
){d=O;C=select(m+1,&d,0,0,0);if(C<=0){if(!i&&t)x(t);goto l;}fo\
r(J=t;C&&J<=m;J++)if(FD_ISSET(J,&d)){C--;if(J==G){t=accept(G,
0,0);FD_SET(t,&O);FD_CLR(t,&d);FD_SET(t,&o);if(t>m)m=t;t=0;
}else if(!i||FD_ISSET(J,&o)){e=read(J,2[g],k);K=0;if(e>0){
2[g][k-1]=0;if(*2[g]==71){a=0;strcpy(1[g],0[g]);z(2[g],j+
45);if(!strncmp(0[g],5[g],strlen(5[g]))&&!strncmp(1[g],
0[g],strlen(1[g]))){K=atoi(0[g]+p);}if(K){if(0[K[_]]<f
){if(a=(1[K[_]]<15?1[K[_]]:1[K[_]]>>4)>=(1[K[_]]<15?
0[K[_]][r]&15:0[K[_]][r]>>4))1[K[_]]=1[K[_]]<15?1\
5:255;else 1[K[_]]+=1[K[_]]<16?1:16;if(_[K][1]==\
255){0[K[_]]++;1[K[_]]=0;}}else{write(1[K[c]],_[
K],sizeof(_[K]));close(1[K[c]]);K=0;}}else fo\
r(s=1;s<k;s++)if(0[s[_]]==-1){0[s[_]]=1[s[_]]
=0;K=s;break;}if(K)sprintf(0[g],j+6,5[g],K)
;else 0[0[g]]=0;w=sprintf(3[g],j+125,0[g],
strlen(7[g]),7[g]);if(i){pipe(c[K]);if(!
(i=fork())){close(0[K[c]]);FD_ZERO(&O);
FD_SET(t=m=J,&O);}}if(i<0){T=1;goto l;
}if(i){close(1[K[c]]);FD_SET(0[K[c]]
,&O);if(0[K[c]]>m)m=0[K[c]];x(J);\
break;}else{if(a){n.tv_sec=0;n.t\
v_usec=STARDATE;select(0,0,0,0,&
n);}write(J,3[g],w);if(!K){close(J);return 0;}}}}else if(i){
close(J);FD_CLR(J,&o);x(J);}else{write(1[K[c]],K[_],sizeof(K[_
]));close(1[K[c]]);close(J);return 0;}}else{for(K=0;K<=m;K++)if(
0[K[c]]==J){read(J,K[_],sizeof(K[_]));x(J);if(_[K][0]>=f){0[K[_]
]=1[K[_]]=-1;0[K[c]]=1[K[c]]=0;}break;}}}}}l:close(G);return T;}


puedes mirar páginas como la que aloja una competición internacional de código ofuscado:
http://www.ioccc.org/
 


09-Aug-2015 12:25
Invitado (Juan María galindio)

No compila en debian

jose@debian:~/listados_cc$ g++ ofuscado.cc -o ofuscado
ofuscado.cc: In function ?void x(int)?:
ofuscado.cc:17:73: error: ?close? was not declared in this scope
dr_in l;struct timeval n,q;struct hostent*u;long w;void x(int y){close(y);FD_CLR(y,&O);if(y>=m)while(--m)if(FD_ISSET(m,&O))break;}vo\
                                                                        ^
ofuscado.cc: In function ?void z(char*, char*)?:
ofuscado.cc:18:129: error: ?strlen? was not declared in this scope
id z(char*A,char*B){char*D,*E=A,*F=A;for(0[0[g]]=0;*E;E++)if(*E==10){if(E-F==(*(E-1)-13?1:2))break;*E=0;if(!strncmp(F,B,strlen(B))&&(D=strstr(F,j+\
                                                                                                                                ^
ofuscado.cc:18:130: error: ?strncmp? was not declared in this scope
id z(char*A,char*B){char*D,*E=A,*F=A;for(0[0[g]]=0;*E;E++)if(*E==10){if(E-F==(*(E-1)-13?1:2))break;*E=0;if(!strncmp(F,B,strlen(B))&&(D=strstr(F,j+\
                                                                                                                                 ^
ofuscado.cc:19:3: error: ?strstr? was not declared in this scope
11))){sscanf(D+8,j+20,0[g]);break;}F=E+1;}else*E=toupper(*E);}int main(int G,char**H){h=j;while(*h)(*h)--,h++;h=j+414;do{t=*h++;e=1;if(t>=65&&t<=90)e
  ^
ofuscado.cc:19:60: error: ?toupper? was not declared in this scope
11))){sscanf(D+8,j+20,0[g]);break;}F=E+1;}else*E=toupper(*E);}int main(int G,char**H){h=j;while(*h)(*h)--,h++;h=j+414;do{t=*h++;e=1;if(t>=65&&t<=90)e
                                                           ^
ofuscado.cc: In function ?int main(int, char**)?:
ofuscado.cc:21:125: error: ?memcpy? was not declared in this scope
H]+K:j,4[g]);sscanf(4[g],j+29,&i,&f);i[4[g]]=0;u=gethostbyname(4[g]);memcpy(&l.sin_addr.s_addr,0[u->h_addr_list],u->h_length);l.sin_port=htons(f);\
                                                                                                                            ^
ofuscado.cc:22:14: error: ?close? was not declared in this scope
for(;;close(G))if(!connect(G=socket(2,1,0),&l,sizeof l))for(;;){strcpy(1[g],0[g]);s=sprintf(5[g],j+72,2[g],0[g]);if(write(G,5[g],s)<0)break;gett\
             ^
ofuscado.cc:22:55: error: cannot convert ?sockaddr_in*? to ?const sockaddr*? for argument ?2? to ?int connect(int, const sockaddr*, socklen_t)?
for(;;close(G))if(!connect(G=socket(2,1,0),&l,sizeof l))for(;;){strcpy(1[g],0[g]);s=sprintf(5[g],j+72,2[g],0[g]);if(write(G,5[g],s)<0)break;gett\
                                                      ^
ofuscado.cc:22:81: error: ?strcpy? was not declared in this scope
for(;;close(G))if(!connect(G=socket(2,1,0),&l,sizeof l))for(;;){strcpy(1[g],0[g]);s=sprintf(5[g],j+72,2[g],0[g]);if(write(G,5[g],s)<0)break;gett\
                                                                                ^
ofuscado.cc:22:131: error: ?write? was not declared in this scope
for(;;close(G))if(!connect(G=socket(2,1,0),&l,sizeof l))for(;;){strcpy(1[g],0[g]);s=sprintf(5[g],j+72,2[g],0[g]);if(write(G,5[g],s)<0)break;gett\
                                                                                                                                  ^
ofuscado.cc:23:41: error: ?read? was not declared in this scope
imeofday(&n,0);0[3[g]]=0;e=read(G,3[g],k);if(e<0)break;else if(e&&*3[g]==72){gettimeofday(&q,0);3[g][k-1]=0;z(3[g],j+41);if(0[1[g]])if(!strnc\
                                        ^
ofuscado.cc:24:25: error: ?strlen? was not declared in this scope
mp(1[g],0[g],strlen(1[g]))){t=0;if((q.tv_sec-n.tv_sec)*1000000+q.tv_usec-n.
                        ^
ofuscado.cc:24:26: error: ?strncmp? was not declared in this scope                                                                                                                          
mp(1[g],0[g],strlen(1[g]))){t=0;if((q.tv_sec-n.tv_sec)*1000000+q.tv_usec-n.                                                                                                                
                         ^                                                                                                                                                                  
ofuscado.cc:31:22: error: cannot convert ?sockaddr_in*? to ?const sockaddr*? for argument ?2? to ?int bind(int, const sockaddr*, socklen_t)?                                                
et(2,1,0),&l,sizeof l);listen(G,10);FD_SET(m=G,&O);for(i=1,t=0;;                                                                                                                            
                     ^                                                                                                                                                                      
ofuscado.cc:35:45: error: ?read? was not declared in this scope                                                                                                                              
}else if(!i||FD_ISSET(J,&o)){e=read(J,2[g],k);K=0;if(e>0){                                                                                                                                  
                                            ^
ofuscado.cc:36:47: error: ?strcpy? was not declared in this scope
2[g][k-1]=0;if(*2[g]==71){a=0;strcpy(1[g],0[g]);z(2[g],j+
                                              ^
ofuscado.cc:37:38: error: ?strlen? was not declared in this scope
45);if(!strncmp(0[g],5[g],strlen(5[g]))&&!strncmp(1[g],
                                     ^
ofuscado.cc:37:39: error: ?strncmp? was not declared in this scope
45);if(!strncmp(0[g],5[g],strlen(5[g]))&&!strncmp(1[g],
                                      ^
ofuscado.cc:38:34: error: ?atoi? was not declared in this scope
0[g],strlen(1[g]))){K=atoi(0[g]+p);}if(K){if(0[K[_]]<f
                                 ^
ofuscado.cc:43:16: error: ?write? was not declared in this scope
K],sizeof(_[K]));close(1[K[c]]);K=0;}}else fo\
               ^
ofuscado.cc:43:31: error: ?close? was not declared in this scope
K],sizeof(_[K]));close(1[K[c]]);K=0;}}else fo\
                              ^
ofuscado.cc:47:12: error: ?strlen? was not declared in this scope
strlen(7[g]),7[g]);if(i){pipe(c[K]);if(!
           ^
ofuscado.cc:47:35: error: ?pipe? was not declared in this scope
strlen(7[g]),7[g]);if(i){pipe(c[K]);if(!
                                  ^
ofuscado.cc:48:9: error: ?fork? was not declared in this scope
(i=fork())){close(0[K[c]]);FD_ZERO(&O);
        ^
ofuscado.cc:48:26: error: ?close? was not declared in this scope
(i=fork())){close(0[K[c]]);FD_ZERO(&O);
                         ^
ofuscado.cc:50:21: error: ?close? was not declared in this scope
}if(i){close(1[K[c]]);FD_SET(0[K[c]]
                    ^
ofuscado.cc:54:19: error: ?write? was not declared in this scope
n);}write(J,3[g],w);if(!K){close(J);return 0;}}}}else if(i){
                  ^
ofuscado.cc:54:35: error: ?close? was not declared in this scope
n);}write(J,3[g],w);if(!K){close(J);return 0;}}}}else if(i){
                                  ^
ofuscado.cc:55:8: error: ?close? was not declared in this scope
close(J);FD_CLR(J,&o);x(J);}else{write(1[K[c]],K[_],sizeof(K[_
       ^
ofuscado.cc:56:3: error: ?write? was not declared in this scope
]));close(1[K[c]]);close(J);return 0;}}else{for(K=0;K<=m;K++)if(
  ^
ofuscado.cc:56:18: error: ?close? was not declared in this scope
]));close(1[K[c]]);close(J);return 0;}}else{for(K=0;K<=m;K++)if(
                 ^
ofuscado.cc:57:37: error: ?read? was not declared in this scope
0[K[c]]==J){read(J,K[_],sizeof(K[_]));x(J);if(_[K][0]>=f){0[K[_]
                                    ^
ofuscado.cc:58:53: error: ?close? was not declared in this scope
]=1[K[_]]=-1;0[K[c]]=1[K[c]]=0;}break;}}}}}l:close(G);return T;}
                                                    ^
jose@debian:~/listados_cc$


12-Aug-2015 19:57
Nacho Cabanes (+83)

Efectivamente. Es el problema del código ofuscado. Si un programa "normal" no funciona, puedes intentar analizar el fuente para ver si hay diferencias entre tu compilador y el que usó quien creó el programa. Si el programa está ofuscado, eso es mucho más difícil.

Aun así, algunas pautas:

- No uses "g++" sino "gcc": si los "include" terminan en ".h" es porque el programa está en C, no en C++.

- Busca palabras que conozcas para descubrir otros ficheros "include" que el autor original no haya incluido porque su compilador los dé por sentado. Por ejemplo, verás que alguno de tus errores de compilación tiene que ver con "close", "read", "write". Eso indica que falta un "#include <fcntl.h>". Otros errores, como el de "strlen", indican que te falta "#include <string.h>".

- Mira ese fuente y otros en el enlace que te he pasado. Quizá algún carácter se haya perdido al copiar y pegar en el foro pero sí estén en el programa original.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)