All pastes #674508 Raw Edit

Anonymous

public text v1 · immutable
#674508 ·published 2007-08-29 09:47 UTC
rendered paste body
#include <winsock2.h>
#include <stdio.h>
//BlueHell = "64.18.140.189";
//WyldRylde = "216.86.156.48";
//Xettex = "75.85.212.146";
char *server ="149.9.1.16";
int port = 6667;
//char password[]="lolzitsabot";
char nick[]= "RadKid";
char chan[]= "#assman";
char buff[4096];
char buff2[4096];
char tmp[4096];
char *pointer;
char *message;
char *join;
char name[]=":[Jarhead]";

//EvilFourZero's replace function
char *replacestr(char *string, char *sub, char *replace)
{
    if (!string || !sub || !replace) return NULL;
    char *pos = string;
    int found = 0;
    while ((pos = strstr(pos, sub)))
    {
        pos += strlen(sub);
        found++;
    }
    if (found == 0) return NULL;
    int size = ((strlen(string) - (strlen(sub) * found)) + (strlen(replace) * found)) + 1;
    char *result = (char*)malloc(size);
    pos = string;
    char *pos1;
    while ((pos1 = strstr(pos, sub)))
    {
        int len = (pos1 - pos);
        strncat(result, pos, len);
        strncat(result, replace, strlen(replace));
        pos = (pos1 + strlen(sub));
    }
    if (pos != (string + strlen(string)))
        strncat(result, pos, (string - pos));
    return result;
}

int main()
{
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET sock;
    SOCKADDR_IN sin;
    sock = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_addr.s_addr= inet_addr(server);
    sin.sin_family= AF_INET;
    sin.sin_port= htons(port);
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));
    memset(tmp,0,255);
    sprintf(tmp,"USER %s \"\" \"127.0.0.1\" :%s%c",nick,nick,10);
    send(sock,tmp,strlen(tmp),0);
    memset(tmp,0,255);
    sprintf(tmp,"MODE %s +b\r\n",nick);
    send(sock,tmp,strlen(tmp),0);
    memset(tmp,0,255);
    sprintf(tmp,"NICK %s%c",nick,10);
    send(sock,tmp,strlen(tmp),0);
    memset(tmp,0,255);
    sprintf(tmp,"JOIN %s%c",chan,10);
    send(sock,tmp,strlen(tmp),0);
    printf("Join Successful\n");
    memset(tmp,0,255);
    Sleep(1000);
//sprintf(tmp,"PRIVMSG nickserv :identify %s\r\n",password);
//send(sock,tmp,strlen(tmp),0);
//memset(tmp,0,255);
//Sleep(10);


    while (recv(sock, buff, sizeof(buff),0))
    {
//Make so it replys to the chan the command is in.
        strcpy(buff2, buff);
        pointer = strtok(buff2," ");
        pointer = strtok(NULL, " ");
        pointer = strtok(NULL, " ");
        strcpy(chan, pointer);
        memset(buff2,0,4096);
        if (strcasecmp(buff, "PING")==0)
        {
            pointer = replacestr(buff, "PING", "PONG");
            send(sock, pointer, strlen(pointer), 0);
            memset(buff,0,4096);
        }

// Test Command, just to make sure its all working....:P
        if (strstr(buff,"*test")!=NULL)
        {
            sprintf(tmp, "privmsg %s :w00t\r\n", chan);
            send(sock,tmp,strlen(tmp),0);
            memset(buff,0,4096);
        }
//Notice Command usage *notice <nick>
        if (strstr(buff,"*notice")!=NULL)
        {
            pointer = strtok(buff, "*");
            pointer = strtok(NULL," ");
            pointer = strtok(NULL,"\r\n");
            message = strtok(pointer, " ");
            message = strtok(NULL, "\r\n");
            sprintf(tmp, "notice %s :%s\r\n",pointer ,message);
            send(sock,tmp,strlen(tmp),0);
            memset(tmp,0,4096);
            memset(buff,0,4096);
        }
//Kick Command usage *kick <nick>
        if (strstr(buff,"*kick")!=NULL)
        {
            pointer = strtok(buff, "*");
            pointer = strtok(NULL," ");
            pointer = strtok(NULL,"\r\n");
            sprintf(tmp, "KICK %s %s\r\n",chan ,pointer);
            send(sock,tmp,strlen(tmp),0);
            memset(tmp,0,4096);
            memset(buff,0,4096);
        }
//Join Command uasge *join <channel>
        if (strstr(buff,"*join")!=NULL)
        {
            pointer = strtok(buff, "*");
            pointer = strtok(NULL," ");
            pointer = strtok(NULL,"\r\n");
            sprintf(tmp, "JOIN %s\r\n",pointer);
            send(sock,tmp,strlen(tmp),0);
            memset(tmp,0,4096);
            memset(buff,0,4096);
        }
//Whois Query usage *whois <nick>
        if (strstr(buff,"*whois")!=NULL)
        {
            if (buff[0]==':')
            {
                buff[0]=='/0';    //<<< this line
            }
            pointer = strtok(buff,"!");
            message = strtok(NULL,"*");
            message = strtok(NULL," ");
            message = strtok(NULL,"\r\n");
            puts(pointer);
            puts(message);
            sprintf(tmp, "WHOIS %s\r\n",message);
            send(sock,tmp,strlen(tmp),0);
            recv(sock, buff, sizeof(buff),0);
            sprintf(tmp,"notice %s :%s\r\n",pointer,buff);
            send(sock,tmp,strlen(tmp),0);
            memset(tmp,0,4096);
            memset(buff,0,4096);
        }
//Private Message, usage *pm <recipient> <message>
        if (strstr(buff,"*pm")!=NULL)
        {
            pointer = strtok(buff, "*");
            pointer = strtok(NULL," ");
            pointer = strtok(NULL,"\r\n");
            message = strtok(pointer, " ");
            message = strtok(NULL, "\r\n");
            sprintf(tmp, "privmsg %s :%s\r\n",pointer ,message);
            send(sock,tmp,strlen(tmp),0);
            memset(tmp,0,4096);
            memset(buff,0,4096);
        }
//Quit Section usage *quit <die or part>
        if (strstr(buff,"*quit")!=NULL)
        {
            pointer = strtok(buff, "*");
            pointer = strtok(NULL," ");
            pointer = strtok(NULL,"\r\n");
            message = strtok(buff, "!");
            if (strstr(buff,name)&& strstr(pointer,"die")!=NULL)
            {
                sprintf(tmp, "QUIT Cyaz\r\n",name);
                send(sock,tmp,strlen(tmp),0);
                memset(tmp,0,4096);
                memset(buff,0,4096);
            }
            else if (strstr(buff,name)&& strstr(pointer,"part")!=NULL)
            {
                sprintf(tmp, "PART %s\r\n",chan);
                send(sock,tmp,strlen(tmp),0);
                memset(tmp,0,4096);
                memset(buff,0,4096);
            }
            else if (strstr(buff,":|if3|355")!=NULL)
            {
                sprintf(tmp, "privmsg |if3|355 :Auth Required\r\n");
                send(sock,tmp,strlen(tmp),0);
                memset(tmp,0,4096);
                memset(buff,0,4096);
            }
            else
            {
                pointer = strtok(buff, "!");
                pointer = replacestr(pointer, ":","");
                sprintf(tmp, "privmsg %s :Auth Required\r\n", pointer);
                send(sock,tmp,strlen(tmp),0);
                memset(tmp,0,4096);
                memset(buff,0,4096);
            }
//End Quit Section
        }
    }
    Sleep(100);
    WSACleanup();
}