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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


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


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
[c][aporte]esqueleto bot irc
« en: 21 Junio 2013, 23:30 pm »

a pesar de lo simple del programa me costo bastante hacerlo estaba muy acostumbrado a las expresiones regulares de lenguajes  como python  no hace nada como dije un esqueleto donde  es muy facil usar los datos y hacer que el bot haga lo que uno quiera
seguramente se pueden mejorar muchas cosas  pero de esta forma funciona  :)

Código
  1. #include <winsock2.h>
  2. #include <windows.h>
  3. #include <cstring>
  4. #include <cstdio>
  5.  
  6. void comandos(char *usuario,char *cmand, char *sala,char *mensaje)
  7. {
  8. printf("Usuario: %s\n",usuario);
  9. printf("Comando irc: %s\n",cmand);
  10. printf("sala: %s\n",sala);
  11. printf("mensaje: %s\n",mensaje);
  12. //char comando[130]="PRIVMSG #botslols :Soy un inutil bot en c :(\r\n";
  13. //send(sock,comando,strlen(comandos),0);
  14. }
  15.  
  16.  
  17. int main()
  18. {
  19. SetConsoleTitle("irc bot");
  20.    WSADATA wsa;
  21.    SOCKET sock;
  22.    int conex;
  23.    int len;
  24.    char Buffer[1024];
  25.    //
  26.    char peticion1[]="NICK BOTpurakerdal\r\n"; // nombre del bot
  27.    char peticion2[]="USER BOTpurakerdal 1 1 1\r\n"; //nombre completo
  28.    char peticion3[]="JOIN #botslols\r\n";   //sala
  29.    int enviado=0;
  30.  
  31.    char pong[130]="PONG :";
  32.    char ping[130]={0};
  33.    struct hostent *host;
  34.    struct sockaddr_in direc;
  35.    WSAStartup(MAKEWORD(2,0),&wsa);
  36.    host=gethostbyname("chat.freenode.net");
  37.    sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  38.    if (sock==-1)
  39.   {
  40.      printf("Error al crear el socket");
  41.      return -1;
  42.   }
  43.    direc.sin_family=AF_INET;
  44.    direc.sin_port=htons(6667);
  45.    direc.sin_addr = *((struct in_addr *)host->h_addr);
  46.    memset(direc.sin_zero,0,8);
  47.    conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
  48.    if(conex==-1)
  49.    {
  50.        printf("error\n");
  51.        return -1;
  52.    }
  53.    printf("[+]conexion establecida\n");
  54.    enviado=send(sock, peticion1,strlen(peticion1), 0);
  55.    printf("[+]nick registrado\n");
  56.    enviado=send(sock, peticion2,strlen(peticion2), 0);
  57.    enviado=send(sock, peticion3,strlen(peticion3), 0);
  58.    printf("[+]entrando a la sala\n-\n");
  59.    int final3;
  60.    int ciclo2;
  61. //-------------------------------
  62.    char cadenita[500];
  63.    char cadenita2[500];
  64.    char usuario[500];
  65.    char sala[500];
  66.    char cmand[500];
  67.    char mensaje[500];
  68. //--------------------------
  69.    char *star;
  70.  
  71.    //------------------
  72.    int ciclo;
  73.    while (len!=-1 && strcmp(Buffer,"salir")!=0)
  74.    {
  75.        fflush(stdout);
  76.        len = recv(sock, Buffer, sizeof(Buffer), 0);
  77.  
  78.  
  79. //enviar el pong que es la respuesta al ping de irc
  80.       for(int ewe=0;ewe != len;ewe++)
  81.       {
  82.        if((Buffer[ewe]=='P')&&(Buffer[ewe+1]=='I')&&(Buffer[ewe+2]=='N')&&(Buffer[ewe+3]=='G'))
  83.        {
  84.            memcpy(ping,Buffer+ewe+6,10);
  85.            memcpy(pong+6,ping,10);
  86.            memcpy(pong+16,"\r\n",strlen("\r\n"));
  87.            send(sock,pong,strlen(pong),0);
  88.  
  89.        }
  90.       }
  91.  
  92. //---------------------------------------
  93.       if(Buffer[0]==':') // si comienza en : es un comando
  94.       {
  95.  
  96.  
  97.       for(ciclo=0;(ciclo<500)&&(Buffer[ciclo]!='\r');ciclo++)
  98.       {
  99.         cadenita[ciclo]=Buffer[ciclo];
  100.       }
  101.       //le quitamos la basura al buffer
  102.        strcpy(cadenita2,cadenita); //necesito la cadena completa strtok la parte
  103.        star=strtok(cadenita," "); // parto la cadena la primera palabra es el user
  104.        strcpy(usuario,star); // pongo el user en la variable usuario
  105.        star=strtok(NULL," "); // tomo la siguente palabra
  106.        strcpy(cmand,star); // tomo el comando de irc
  107.        star=strtok(NULL," ");
  108.        strcpy(sala,star); // esta es la sala
  109.        memcpy(mensaje,(cadenita2+strlen(usuario)+strlen(cmand)+strlen(sala)+4),500); // es decir todo lo anterior a el mensaje no se copia eso mas 3 espacios mas este caracter : es decir 4
  110.        comandos(usuario,cmand,sala,mensaje);
  111. }
  112. }
  113.    return 0;
  114. }


En línea

buenas
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [c][aporte]esqueleto bot irc
« Respuesta #1 en: 22 Junio 2013, 00:27 am »

Muy interesante, tengo que verme la programación de sockets que me queda por mirar  :silbar:

Por cierto:

Código
  1. host=gethostbyname("chat.freenode.net");

¿Que es chat.freenode.net?


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [c][aporte]esqueleto bot irc
« Respuesta #2 en: 22 Junio 2013, 00:49 am »


es un servidor irc(precisamente donde esta el chat de este foro si quieres abajo en mi firma esta el enlace al chat) que se encarga de pasar la conexion a el servidor mas cercano o mas disponible de esta red de servidores llamada freenode

saludos  ;D
En línea

buenas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pequeño aporte(proxy),pero aporte al fin.:D
Programación Visual Basic
Tengu 0 2,593 Último mensaje 22 Julio 2007, 17:33 pm
por Tengu
¿Porque no inventan una especie de 'esqueleto' que proteja los autos/vehiculos? « 1 2 3 4 »
Foro Libre
traviatØ 30 18,223 Último mensaje 29 Julio 2011, 10:58 am
por ANTRUCK
El Esqueleto de TAOS es un troyano o virus??? ( contaplus2011 ) « 1 2 »
Análisis y Diseño de Malware
beholdthe 18 35,615 Último mensaje 21 Marzo 2012, 11:44 am
por dimitrix
Copian el esqueleto de un ratón vivo con una impresora 3D
Noticias
wolfbcn 0 1,543 Último mensaje 12 Abril 2013, 14:43 pm
por wolfbcn
sistema base o esqueleto
Programación General
pmoren 0 2,363 Último mensaje 23 Julio 2022, 07:01 am
por pmoren
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines