idletime.c 885 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include "idletime.h"
  4. #include "beacon.h"
  5. #pragma comment(lib, "User32.lib")
  6. DWORD GetIdleTimeInSeconds() {
  7. LASTINPUTINFO lii;
  8. lii.cbSize = sizeof(LASTINPUTINFO);
  9. USER32$GetLastInputInfo(&lii);
  10. DWORD currentTime = KERNEL32$GetTickCount();
  11. DWORD lastInputTime = lii.dwTime;
  12. return (currentTime - lastInputTime) / 1000;
  13. }
  14. void FormatIdleTime(DWORD idleTime, int *hours, int *minutes, int *seconds) {
  15. *hours = idleTime / 3600;
  16. *minutes = (idleTime % 3600) / 60;
  17. *seconds = idleTime % 60;
  18. }
  19. int go() {
  20. DWORD idleTime = GetIdleTimeInSeconds();
  21. int hours, minutes, seconds;
  22. FormatIdleTime(idleTime, &hours, &minutes, &seconds);
  23. BeaconPrintf(CALLBACK_OUTPUT,"[+] Last user input was observed %02d:%02d:%02d ago.\n", hours, minutes, seconds);
  24. return 0;
  25. }