fork download
  1. #include <iostream>
  2. #include <errno.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <ctime>
  6. #include <cstdlib>
  7. #include <linux/input.h>
  8. #include <linux/uinput.h>
  9. #include <fcntl.h>
  10. #include <sstream>
  11. #include <fstream>
  12. #include <unistd.h>
  13. #include <string>
  14. #include <vector>
  15. #include <string.h>
  16.  
  17. using namespace std;
  18.  
  19.  
  20. bool checkBig(char ourL)
  21. {
  22. if((ourL=='A')) { return(1);}
  23. if((ourL=='B')) { return(1);}
  24. if((ourL=='C')) { return(1);}
  25. if((ourL=='D')) { return(1);}
  26. if((ourL=='E')) { return(1);}
  27. if((ourL=='F')) { return(1);}
  28. if((ourL=='G')) { return(1);}
  29. if((ourL=='H')) { return(1);}
  30. if((ourL=='I')) { return(1);}
  31. if((ourL=='J')) { return(1);}
  32. if((ourL=='K')) { return(1);}
  33. if((ourL=='L')) { return(1);}
  34. if((ourL=='M')) { return(1);}
  35. if((ourL=='N')) { return(1);}
  36. if((ourL=='O')) { return(1);}
  37. if((ourL=='P')) { return(1);}
  38. if((ourL=='Q')) { return(1);}
  39. if((ourL=='R')) { return(1);}
  40. if((ourL=='S')) { return(1);}
  41. if((ourL=='T')) { return(1);}
  42. if((ourL=='U')) { return(1);}
  43. if((ourL=='V')) { return(1);}
  44. if((ourL=='W')) { return(1);}
  45. if((ourL=='X')) { return(1);}
  46. if((ourL=='Y')) { return(1);}
  47. if((ourL=='Z')) { return(1);}
  48.  
  49. if((ourL==')')) { return(1);}
  50. if((ourL=='!')) { return(1);}
  51. if((ourL=='@')) { return(1);}
  52. if((ourL=='#')) { return(1);}
  53. if((ourL=='$')) { return(1);}
  54. if((ourL=='%')) { return(1);}
  55. if((ourL=='^')) { return(1);}
  56. if((ourL=='&')) { return(1);}
  57. if((ourL=='*')) { return(1);}
  58. if((ourL=='(')) { return(1);}
  59.  
  60. if((ourL=='>')) { return(1);}
  61. if((ourL=='<')) { return(1);}
  62. if((ourL=='?')) { return(1);}
  63. if((ourL=='|')) { return(1);}
  64. if((ourL=='{')) { return(1);}
  65. if((ourL=='}')) { return(1);}
  66. if((ourL==';')) { return(1);}
  67.  
  68. return(0);
  69. }
  70.  
  71.  
  72.  
  73. int checkChar (char ourL)
  74. {
  75. if((ourL=='a')||(ourL=='A')) { return(KEY_A);}
  76. if((ourL=='b')||(ourL=='B')) { return(KEY_B);}
  77. if((ourL=='c')||(ourL=='C')) { return(KEY_C);}
  78. if((ourL=='d')||(ourL=='D')) { return(KEY_D);}
  79. if((ourL=='e')||(ourL=='E')) { return(KEY_E);}
  80. if((ourL=='f')||(ourL=='F')) { return(KEY_F);}
  81. if((ourL=='g')||(ourL=='G')) { return(KEY_G);}
  82. if((ourL=='h')||(ourL=='H')) { return(KEY_H);}
  83. if((ourL=='i')||(ourL=='I')) { return(KEY_I);}
  84. if((ourL=='j')||(ourL=='J')) { return(KEY_J);}
  85. if((ourL=='k')||(ourL=='K')) { return(KEY_K);}
  86. if((ourL=='l')||(ourL=='L')) { return(KEY_L);}
  87. if((ourL=='m')||(ourL=='M')) { return(KEY_M);}
  88. if((ourL=='n')||(ourL=='N')) { return(KEY_N);}
  89. if((ourL=='o')||(ourL=='O')) { return(KEY_O);}
  90. if((ourL=='p')||(ourL=='P')) { return(KEY_P);}
  91. if((ourL=='q')||(ourL=='Q')) { return(KEY_Q);}
  92. if((ourL=='r')||(ourL=='R')) { return(KEY_R);}
  93. if((ourL=='s')||(ourL=='S')) { return(KEY_S);}
  94. if((ourL=='t')||(ourL=='T')) { return(KEY_T);}
  95. if((ourL=='u')||(ourL=='U')) { return(KEY_U);}
  96. if((ourL=='v')||(ourL=='V')) { return(KEY_V);}
  97. if((ourL=='w')||(ourL=='W')) { return(KEY_W);}
  98. if((ourL=='x')||(ourL=='X')) { return(KEY_X);}
  99. if((ourL=='y')||(ourL=='Y')) { return(KEY_Y);}
  100. if((ourL=='z')||(ourL=='Z')) { return(KEY_Z);}
  101.  
  102. if((ourL=='0')||(ourL==')')) { return(KEY_0);}
  103. if((ourL=='1')||(ourL=='!')) { return(KEY_1);}
  104. if((ourL=='2')||(ourL=='@')) { return(KEY_2);}
  105. if((ourL=='3')||(ourL=='#')) { return(KEY_3);}
  106. if((ourL=='4')||(ourL=='$')) { return(KEY_4);}
  107. if((ourL=='5')||(ourL=='%')) { return(KEY_5);}
  108. if((ourL=='6')||(ourL=='^')) { return(KEY_6);}
  109. if((ourL=='7')||(ourL=='&')) { return(KEY_7);}
  110. if((ourL=='8')||(ourL=='*')) { return(KEY_8);}
  111. if((ourL=='9')||(ourL=='(')) { return(KEY_9);}
  112.  
  113. if(ourL==' ') { return(KEY_SPACE);}
  114. if((ourL=='.')||(ourL=='>')) { return(KEY_DOT);}
  115. if((ourL==',')||(ourL=='<')) { return(KEY_COMMA);}
  116. if((ourL=='/')||(ourL=='?')) { return(KEY_SLASH);}
  117. if((ourL=='\\')||(ourL=='|')) { return(KEY_BACKSLASH);}
  118. if((ourL=='[')||(ourL=='{')) { return(KEY_LEFTBRACE);}
  119. if((ourL==']')||(ourL=='}')) { return(KEY_RIGHTBRACE);}
  120. if((ourL==';')||(ourL==':')) { return(KEY_SEMICOLON);}
  121.  
  122. return(KEY_SPACE);
  123. }
  124.  
  125.  
  126. void KeyPress(uinput_user_dev &uiDev,int &fDev,input_event &inEv,int ktype, int kcode, int kvalue)
  127. {
  128. memset(&inEv,0,sizeof(inEv));
  129. inEv.type = ktype;
  130. inEv.code = kcode;
  131. inEv.value = kvalue;
  132. if (write(fDev,&inEv,sizeof(inEv))<0)
  133. {
  134. cerr<<"write error"<<endl;
  135. exit(1);
  136. }
  137. }
  138.  
  139. void erMes(string errorMes)
  140. {
  141. cerr<<errorMes<<endl;
  142. exit(1);
  143. }
  144.  
  145. //void useKey (& )
  146.  
  147. int main()
  148. {
  149. ////////////////////////////////// start ///////////////////////////////////
  150.  
  151. int fDev; //deklaruje podstawowe zmienne
  152. struct uinput_user_dev uiDev;
  153. struct input_event inEv;
  154.  
  155. fDev = open("/dev/uinput", O_WRONLY | O_NONBLOCK); //funkcja otwiera mi plik i sprawdza jego poprawnosc
  156. if (fDev<0) { erMes("error cant open");}
  157.  
  158. //deklaracja eventu
  159. if(ioctl(fDev, UI_SET_EVBIT, EV_KEY) < 0) { erMes("error in ioctl start");} //deklaruje event key
  160.  
  161. //kazdy event musi byc "zsynchronizowany/ potwierdzony"
  162. if(ioctl(fDev, UI_SET_EVBIT, EV_SYN) < 0) { erMes("error in ioctl");}
  163.  
  164. //deklaruje wszystkie literki i liczby szuka sie w pliku usr/include/linux/input
  165.  
  166. int keytab[] = {KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T,
  167. KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_ENTER, KEY_DOT,
  168. KEY_SPACE, KEY_SLASH, KEY_COMMA, KEY_LEFTSHIFT, KEY_BACKSLASH, KEY_LEFTBRACE, KEY_RIGHTBRACE, KEY_SEMICOLON};
  169.  
  170. for(int i=0;i<sizeof(keytab)/sizeof(int);i++)
  171. {
  172. if(ioctl(fDev, UI_SET_KEYBIT, keytab[i])<0) { erMes("error in ioctl");}
  173. }
  174.  
  175. //dla myszki na przyszlosc
  176. if(ioctl(fDev, UI_SET_EVBIT, EV_REL) < 0) { erMes("error in ioctl");}
  177. if(ioctl(fDev, UI_SET_RELBIT, REL_X) < 0) { erMes("error im ioctl");}
  178. if(ioctl(fDev, UI_SET_RELBIT, REL_Y) < 0) { erMes("error in ioctl");}
  179.  
  180.  
  181. memset(&uiDev, 0, sizeof(uiDev)); //oczyszczam pamiec i przydzielam pewne "charakterystyki", trzeba to zrobic
  182. snprintf(uiDev.name, UINPUT_MAX_NAME_SIZE, "sample");
  183. uiDev.id.bustype = BUS_USB;
  184. uiDev.id.vendor=0x1;
  185. uiDev.id.product=0x1;
  186. uiDev.id.version=1;
  187.  
  188. //kolejne sprawdziany
  189. if (write(fDev, &uiDev, sizeof(uiDev))<0) { erMes("error in write");}
  190. if ((ioctl(fDev, UI_DEV_CREATE))<0) { erMes("error in ioctl");}
  191.  
  192. cout<<"zaladowano komendy"<<endl;
  193.  
  194. //////////////////////////////////////////////////////////////////
  195. //otworz folder z crap tekstem i go zaladuj//
  196. //////////////////////////////////////////////////////////////////
  197.  
  198. ifstream thisText;
  199. thisText.open("/home/piotr/Dokumenty/C/Moje programy/Doom/Spam1.txt");
  200.  
  201. if(!thisText.is_open()) { erMes("error in open thisText");} //lepiej sprawdzac z is_open
  202.  
  203. vector<string> spamStr; //vector z naszym tekstem
  204. {
  205. string tempStr;
  206. while(getline(thisText, tempStr))
  207. {
  208. spamStr.push_back(tempStr);
  209. }
  210. }
  211. thisText.close();
  212.  
  213. // stare kolory a potem nowe
  214. string strCol[] = {"\\cq", "\\ce", "\\cr", "\\ct", "\\cu", "\\ci", "\\co", "\\cp", "\\ca", "\\cs", "\\cd", "\\cf",
  215. "\\cg", "\\ch", "\\cj", "\\ck", "\\cl", "\\cc", "\\cv", "\\cb", "\\cn", "\\cm",
  216. "\\c[c0]", "\\c[c1]", "\\c[c2]", "\\c[c3]", "\\c[c4]", "\\c[c5]", "\\c[c6]", "\\c[c7]", "\\c[c8]", "\\c[c9]",
  217. "\\c[m0]", "\\c[m1]", "\\c[m2]", "\\c[m3]", "\\c[m4]", "\\c[m5]", "\\c[m6]", "\\c[m7]", "\\c[m8]", "\\c[m9]",
  218. "\\c[g0]", "\\c[g1]", "\\c[g2]", "\\c[g3]", "\\c[g4]", "\\c[g5]", "\\c[g6]", "\\c[g7]", "\\c[g8]", "\\c[g9]",
  219. "\\c[u0]", "\\c[u1]", "\\c[u2]", "\\c[u3]", "\\c[u4]", "\\c[u5]", "\\c[u6]", "\\c[u7]", "\\c[u8]", "\\c[u9]",
  220. "\\c[v0]", "\\c[v1]", "\\c[v2]", "\\c[v3]", "\\c[v4]", "\\c[v5]", "\\c[v6]", "\\c[v7]", "\\c[v8]", "\\c[v9]",
  221. "\\c[q0]", "\\c[q1]", "\\c[q2]", "\\c[q3]", "\\c[q4]", "\\c[q5]", "\\c[q6]", "\\c[q7]", "\\c[q8]", "\\c[q9]",
  222. "\\c[s0]", "\\c[s1]", "\\c[s2]", "\\c[s3]", "\\c[s4]", "\\c[s5]", "\\c[s6]", "\\c[s7]", "\\c[s8]", "\\c[s9]",
  223. "\\c[y0]", "\\c[y1]", "\\c[y2]", "\\c[y3]", "\\c[y4]", "\\c[y5]", "\\c[y6]", "\\c[y7]", "\\c[y8]", "\\c[y9]",
  224. "\\c[e0]", "\\c[e1]", "\\c[e2]", "\\c[e3]", "\\c[e4]", "\\c[e5]", "\\c[e6]", "\\c[e7]", "\\c[e8]", "\\c[e9]",
  225. "\\c[j0]", "\\c[j1]", "\\c[j2]", "\\c[j3]", "\\c[j4]", "\\c[j5]", "\\c[j6]", "\\c[j7]", "\\c[j8]", "\\c[j9]",
  226. "\\c[i0]", "\\c[i1]", "\\c[i2]", "\\c[i3]", "\\c[i4]", "\\c[i5]", "\\c[i6]", "\\c[i7]", "\\c[i8]", "\\c[i9]",
  227. "\\c[d0]", "\\c[d1]", "\\c[d2]", "\\c[d3]", "\\c[d4]", "\\c[d5]", "\\c[d6]", "\\c[d7]", "\\c[d8]", "\\c[d9]",
  228. "\\c[l0]", "\\c[l1]", "\\c[l2]", "\\c[l3]", "\\c[l4]", "\\c[l5]", "\\c[l6]", "\\c[l7]", "\\c[l8]", "\\c[l9]",
  229. "\\c[k0]", "\\c[k1]", "\\c[k2]", "\\c[k3]", "\\c[k4]", "\\c[k5]", "\\c[k6]", "\\c[k7]", "\\c[k8]", "\\c[k9]",
  230. "\\c[n0]", "\\c[n1]", "\\c[n2]", "\\c[n3]", "\\c[n4]", "\\c[n5]", "\\c[n6]", "\\c[n7]", "\\c[n8]", "\\c[n9]",
  231. "\\c[b0]", "\\c[b1]", "\\c[b2]", "\\c[b3]", "\\c[b4]", "\\c[b5]", "\\c[b6]", "\\c[b7]", "\\c[b8]", "\\c[b9]",
  232. "\\c[t0]", "\\c[t1]", "\\c[t2]", "\\c[t3]", "\\c[t4]", "\\c[t5]", "\\c[t6]", "\\c[t7]", "\\c[t8]", "\\c[t9]",
  233. };
  234.  
  235.  
  236.  
  237. cout<<"wczytano spam tekst i kolory, spamowanie za 1 min"<<endl;
  238. sleep(30);
  239.  
  240. //////////////////////////////////////////////////////////////////////
  241. // rozpocznij spam //
  242. //////////////////////////////////////////////////////////////////////
  243. cout<<"program rozpoczal dzialanie"<<endl;
  244. srand(time(NULL));
  245. int pos,i_key;
  246. int stop = 1;
  247. char somL;
  248. bool big = 0;
  249. while(1)
  250. {
  251. usleep(500000+rand()%2000000);
  252.  
  253. if(spamStr.size()>0) { pos=rand()%spamStr.size();}
  254. else { break;}
  255.  
  256. string line = spamStr[pos];
  257.  
  258. //line.insert(0,strCol[rand()%(sizeof(strCol)/sizeof(string))]);
  259.  
  260. for(int i =0; i<line.size(); i++)
  261. {
  262. somL=line.at(i);
  263.  
  264. //get proper key
  265. i_key=checkChar(somL);
  266.  
  267. //check if big
  268. big = checkBig(somL);
  269. usleep(50000);
  270. if (big) { KeyPress(uiDev,fDev,inEv,EV_KEY,KEY_LEFTSHIFT,1);}
  271.  
  272. i_key=checkChar(line.at(i)); //sprawdzam jaki klawisz
  273. KeyPress(uiDev,fDev,inEv,EV_KEY,i_key,1);
  274. KeyPress(uiDev,fDev,inEv,EV_KEY,i_key,0);
  275.  
  276. if (big) { KeyPress(uiDev,fDev,inEv,EV_KEY,KEY_LEFTSHIFT,0); big=0;}
  277.  
  278. //sync
  279. KeyPress(uiDev,fDev,inEv,EV_SYN,0,0);
  280. }
  281. usleep(500000);
  282. KeyPress(uiDev,fDev,inEv,EV_KEY,KEY_ENTER,1);
  283. KeyPress(uiDev,fDev,inEv,EV_KEY,KEY_ENTER,0);
  284. KeyPress(uiDev,fDev,inEv,EV_SYN,0,0);//powinno sie synchronizowac po dziesieciu najdalej
  285.  
  286. }
  287. sleep(2);
  288. }
Runtime error #stdin #stdout #stderr 0s 3440KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
error cant open