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