#include #include //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 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 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 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 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 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 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(); }