Screenshot eines Remotesystems machen

Aus ITwiki
Wechseln zu: Navigation, Suche

Wer den Wunsch verspürt, von einem Remotesystem (unbemerkt?) einen Screenshot zu erstellen, dem empfehle ich die Kombination zweier Tools:

  1. NirCMD vom Hersteller Nirsoft
  2. Die Windows Sysinternals PSTools, hier die Anwendung "psexec"

Geschickt kombiniert, kann man damit sehr fein von Remote-Rechnern Bildschirmschnappschüsse erstellen. Beispiel:

C:\Programme\PSTools\psexec.exe -i -u <username> -p <passwort> \\<ziel-system> "C:\Windows\System32\nircmd.exe" savescreenshotfull "\\<eigener-rechner\<freigabe>\screenshot.png"

Kurz erklärt: der Parameter -i veranlasst das Ausführen des psexec-Befehls im "interaktiven Modus", soll heißen, das Programm wird in der Desktopsession des aktuell am System angemeldeten Users aufgerufen. Nur so erhält man einen Screenshot des derzeit angemeldeten Users, sonst beinhaltet die "screenshot.png" nur ein schwarzes Bild... Parameter -u und -p sollten klar sein: das sind Username und Kennwort, also jene Anmeldedaten, die benötigt werden, um Zugriff auf's Remotesystem zu erhalten. Es folgt die Angabe des \\<ziel-system> - dürfte auch verständlich sein. Das ist der Rechner, von dem ein Screenshot gemacht werden soll. Nun kommt was wichtiges: die Datei nircmd.exe MUSS am Remotesystem installiert sein! Im Beispiel liegt die Datei dort unter C:\Windows\System32\nircmd.exe - das ist unbedingt zu beachten! Wenn man aber ohnehin die administrativen Zugangsdaten des Zielsystems kennt, weiß man, dass am Arbeitsplatz über \\<ziel-system\c$ auf die Standardfreigabe eines jeden Windows-Rechners zugegriffen und die Datei entsprechend / unbemerkt rüberkopiert werden kann :-) Gefolgt vom nircmd.exe-Aufruf kommen die Parameter für dieses Tool: savescreenshotfull veranlasst, dass ein Screenshot des kompletten Desktops erstellt wird - auch wenn das Zielsystem über zwei oder mehrere Monitore verfügt erhält man auf diese Weiße einen Screenshot über alle Monitore. Der letzte Parameter \\<eigener-rechner>\<freigabe>\screenshot.png gibt dann den Speicherort der erstellten PNG-Datei an. Dies kann - wie im Beispiel zu sehen - eine Netzwerkfreigabe sein. Gibt man hier einen lokalen Speicherort, also z. B. C:\temp\screenshot.png an, so landet die Datei am Ziel-System (!) im Ordner C:\temp, und nicht auf dem eigenen Rechner - obacht also!

Kleines Script[Bearbeiten]

Das Ganze kann man natürlich auch mittels "billigem Batch-Script" automatisieren. Hier mal ein Beispiel:

@echo off
:start
REM Pfadwechsel zum Kopieren der nircmd.exe (und wegen Bequemlichkeit ^^)
c:
cd C:\remscreen
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
set year=%date:~-4%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
set datetimef=%year%%month%%day%_%hour%%min%%secs%
echo Auth-User angeben:
set /p user=
echo Aut-Passwort angeben:
set /p pass=
echo Ziel-Rechner angeben:
set /p host_name=
echo.
echo Kopiere nircmd.exe nach \\%host_name%\C$\Windows\System32 ...
xcopy /Y /C nircmd.exe \\%host_name%\C$\Windows\System32
echo Starte aufruf Befehlsaufruf ...
echo.
psexec.exe -i -u %user% -p %pass% \\%host_name% "C:\Windows\system32\nircmd.exe" savescreenshotfull "\\<lokaler-rechner>\C$\remscreen\screenshot_%host_name%_%datetimef%.png"
echo.
echo Wiederholen (y/n)?
set /p repeat=
if %repeat% == y cls && goto start
exit

Kurze Erklärung: das Script frägt zunächst Benutzername, Kennwort und Zielsystem ab. Es folgt das Kopieren der nircmd.exe auf das Zielsystem in das System32-Verzeichnis - sollte die Datei vorhanden sein, wird nicht die Aufforderung zum Überschreiben unterdrückt. Beachte an dieser Stelle, dass du das Script als Admin aufrufst, und zwar als jender Admin, der auch am Zielsystem über administrative Berechtigungen verfügt! Es folgt der Befehlsaufruf. Die einzelnen Parameter erkläre ich nicht, hierzu gibt's tolle Hilfen zu psexec und nircmd. Einzige Besonderheit ist der Dateiname, der für jeden Screenshot individuell vergeben wird, und zwar lautet das Format des Dateinamens screenshot_<hostname-zielsystem>_<datum>_<uhrzeit>.png. Das hilft bei der Zuordnung eines erstellten Screenshots zu System und Erstellzeit :-)

Nützliche Links[Bearbeiten]