Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: 0x46-F en 17 Diciembre 2018, 23:04 pm



Título: Mi Irc Bot ( En progreso)
Publicado por: 0x46-F en 17 Diciembre 2018, 23:04 pm
Falta mandar un PONG  para que la conexion no se quede en time out y muchas cosas que cambiar, por ejemplo añadir un procedimiento para floodear tanto el protocolo UDP como TCP y convertirlo en una botnet cifrando tando el usuario, host y el canal....El código no es limpio y tiene cosas innecesarias pero bueno.

Código:
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <windows.h>

#define PORT "6665"

struct info{
char *host;
char *channel;
char *user;
}Ainfo;

int connect_irc(char *host){
    struct addrinfo *result,*copy;
    struct addrinfo hints;
    int sock,getadd;


        memset(&hints, 0, sizeof(hints));
        hints.ai_family = AF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_flags = 0;


        getadd=getaddrinfo(host,PORT,(struct addrinfo *)&hints,&result);
        if(getadd!=0){
        perror("\n");
        exit(0);
        }
        
        
        sock = socket(result->ai_family,result->ai_socktype,result->ai_protocol);
        if (connect(sock, result->ai_addr, result->ai_addrlen) != 0)
        {
        perror("\n");
        exit(0);
        }
        return sock;
}

char *read_info(int sockd,char *pointer){

size_t length = 0;
char info = 0;

while(pointer[length-1]!='\n')
{
    
    int data = recv(sockd, &info, 1, 0);
    pointer[length]=info;
    length++;
    
    
}
return pointer;


}

void set_nick(int sock, char nick[]) {// </editor-fold>

    char nick_packet[512];
    sprintf(nick_packet, "NICK %s\r\n", nick);
    send(sock, nick_packet, strlen(nick_packet), 0);
}

void send_user_packet(int sock, char nick[]){
    char user_packet[512];
    sprintf(user_packet, "USER %s 0 * :%s\r\n", nick, nick);
    send(sock, user_packet, strlen(user_packet), 0);
}

void join_channel(int sock, char channel[]){
    char join_packet[512];
    sprintf(join_packet, "JOIN %s\r\n", channel);
    send(sock, join_packet, strlen(join_packet), 0);
}
void send_pong(int sock, char argument[]){
    char pong_packet[512];
    sprintf(pong_packet, "PONG :%s\r\n", argument);
    send(sock, pong_packet, strlen(pong_packet), 0);
}



int main(int argc, char *argv[])
{
    printf("Atbot IRC bot");
     Ainfo.user=argv[1];
     Ainfo.host=argv[2];
     Ainfo.channel=argv[3];
        int sock_result = connect_irc(Ainfo.host);
        set_nick(sock_result,Ainfo.user);
        send_user_packet(sock_result,Ainfo.user);
        join_channel(sock_result,Ainfo.channel);
        while(1){
            char data[1024];
            char *array = read_info(sock_result,data);
            printf("%s",array);
            
        }
                
    return 0;
}




Título: Re: Mi Irc Bot ( En progreso)
Publicado por: 0x46-F en 17 Diciembre 2018, 23:12 pm
editado