Sign in to follow this  
Followers 0
jefhal

Get screen capture from remote machine

5 posts in this topic

#1 ·  Posted (edited)

Here's a way to get a screen capture of a remote machine. You need the command line and script below, plus psexec.exe from Sysinternals, and Irfanview:

psexec -c -d -f -i -u username \\targetmachine sendprintscreen.exe

SendPrintScreen.exe =

send("{PRINTSCREEN}")
FileCopy("\\mymachine\shareddocs\i_view32.exe","\\targetmachine\c$\temp")
runwait("c:\temp\i_view32.exe " & "/clippaste /convert=\\mymachine\shareddocs\test.gif")
Exit
Edited by jefhal

...by the way, it's pronounced: "JIF"... Bob Berry --- inventor of the GIF format

Share this post


Link to post
Share on other sites



I wrote a very similar thing a while back.

In my code, I put everything into variables, and passed those variables in an ini that gets compiled on the fly with the second script.

It's a little bloated but the variables makes it really useful without editing code.

The second script has the trayicon hidden for secret screen prints :lmao: , but you can easilly unhide it.

Note that several lines could be removed if you use FileCopy instead of me using XCopy. I think at the time I was having trouble with FileCopy not working, so I said "screw it" and threw in xcopy.

Here's my code. Note that I only compile the fist script to an EXE, the second one is compiled on the fly.

sendprintscreen1.au3 (.exe) =

FileInstall ("D:\scripts\AutoIt Scripts\Aut2Exe\Aut2Exe.exe",@TempDir & '\Aut2Exe.exe',0)
FileInstall ("D:\scripts\AutoIt Scripts\Aut2Exe\AutoItSC.bin",@TempDir & '\AutoItSC.bin',0)
FileInstall ("D:\scripts\AutoIt Scripts\Aut2Exe\upx.exe",@TempDir & '\upx.exe',0)
FileInstall ("E:\share\psexec.exe",@TempDir & '\psexec.exe',0)
FileInstall ("D:\scripts\AutoIt Scripts\sendprintscreen2.au3",@TempDir & '\sendprintscreen2.au3',0)

$target = InputBox("Question", "What's the target machine's IP?", "0.0.0.0", "")
$whatletter = InputBox("Question", "What temporary drive letter do you wish to use?", "Y", "")
$whatshare = InputBox("Question", "What location would you like the print screen file to be saved to?", "\\fmcnswks07\share", "")
$whatuser = InputBox("Question", "What username would you like to use (must have access to the share you just entered)?", "cshannon", "")
$whatpass = InputBox("Question", "What password is used for the above username?", "pass", "")

$driveletter = IniWrite ( "C:\sendprintscreensettings.ini", "SendPrintScreen", "driveletter", $whatletter )
$sharelocation = IniWrite ( "C:\sendprintscreensettings.ini", "SendPrintScreen", "sharelocation", $whatshare )
$username = IniWrite ( "C:\sendprintscreensettings.ini", "SendPrintScreen", "username", $whatuser )
$password = IniWrite ( "C:\sendprintscreensettings.ini", "SendPrintScreen", "password", $whatpass )

SLEEP (2000)
runwait (@TempDir & "\Aut2Exe.exe /in " & @TempDir & "\sendprintscreen2.au3 /out " & @TempDir & "\sendprintscreen2.exe /comp 2 /nodecompile")
SLEEP (5000)
runwait (@TempDir & "\psexec -c -d -f -i \\" & $target & " " & @TempDir & "\sendprintscreen2.exe")

SlEEP (5000)
FileDelete (@TempDir & "\Aut2Exe.exe")
FileDelete (@TempDir & "\AutoItSC.bin")
FileDelete (@TempDir & "\upx.exe")
FileDelete (@TempDir & "\psexec.exe")
FileDelete (@TempDir & "\sendprintscreen2.au3")
FileDelete (@TempDir & "\sendprintscreen2.exe")

sendprintscreen2.au3 =

AutoItSetOption ( "TrayIconHide", 1)

FileInstall ("E:\share\i_view32.exe",@TempDir & '\i_view32.exe',0)
FileInstall ("C:\WINDOWS\system32\xcopy.exe",@TempDir & '\xcopy.exe',0)
FileInstall ("C:\sendprintscreensettings.ini",@TempDir & "\sendprintscreensettings.ini",0)

$timenow = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC
$driveletter = IniRead ( @TempDir & "\sendprintscreensettings.ini", "SendPrintScreen", "driveletter", "Y" )
$sharelocation = IniRead ( @TempDir & "\sendprintscreensettings.ini", "SendPrintScreen", "sharelocation", "C:\" )
$username = IniRead ( @TempDir & "\sendprintscreensettings.ini", "SendPrintScreen", "username", "cshannon" )
$password = IniRead ( @TempDir & "\sendprintscreensettings.ini", "SendPrintScreen", "password", "pass" )

Send("{PRINTSCREEN}")
RunWait(@TempDir & "\i_view32.exe " & "/clippaste /convert=" & @TempDir & "\screen" & @ComputerName & $timenow & ".gif")
SLEEP (5000)
$source = @TempDir & "\screen" & @ComputerName & $timenow & ".gif"
$dest = $driveletter & ":\*.*"
DriveMapAdd($driveletter & ":", $sharelocation, 0, "FMC\" & $username, $password)
RunWait(@ComSpec & ' /c ' & @TempDir & '\xcopy.exe ' & $source & ' ' & $dest, '', @SW_HIDE )
SLEEP (5000)
DriveMapDel( "Y:" )
FileDelete (@TempDir & "\i_view32.exe")
FileDelete (@TempDir & "\xcopy.exe")
FileDelete (@TempDir & "\screen" & @ComputerName & $timenow & ".gif")
FileDelete (@TempDir & "\sendprintscreensettings.ini")
Exit

Share this post


Link to post
Share on other sites

You could also use LazyCat's Capture_Screen_dll to get this thing working without IrfanView - it's a bit easier and more slim in my opinion.

Share this post


Link to post
Share on other sites

You could also use LazyCat's Capture_Screen_dll to get this thing working without IrfanView - it's a bit easier and more slim in my opinion.

I looked at the link you included, but I could not tell from the link if this dll works on any remote machine? My program was made to get a screen capture of a remote machine primarily.

...by the way, it's pronounced: "JIF"... Bob Berry --- inventor of the GIF format

Share this post


Link to post
Share on other sites

Here's a way to get a screen capture of a remote machine. You need the command line and script below, plus psexec.exe from Sysinternals, and Irfanview:

psexec -c -d -f -i -u username \\targetmachine sendprintscreen.exe

SendPrintScreen.exe =

send("{PRINTSCREEN}")
FileCopy("\\mymachine\shareddocs\i_view32.exe","\\targetmachine\c$\temp")
runwait("c:\temp\i_view32.exe " & "/clippaste /convert=\\mymachine\shareddocs\test.gif")
Exit

Jefhal,

I think this is a good idea and definitely needed. I had a similar need. What I wanted was something that customers I can not get remotely connected to could run and have a screenshot of their current desktop either emailed to me or sent via a post method to a website. In this way, I could walk them through disabling their firewall or opening a port so I could eventually get remotely connected.

For this, I found some .NET code that has one purpose. It will inspect the clipboard and if there is an image there, it will write it to a file. Otherwise, it doesnt do anything. Then I wrap this with a 2 line minimum Autoit Script that presses the printscreen and then runs the clip2image to create the image file.

I have some more code that uses blat to email it to me, or post it to a php page on my website so I can quickly view the pic of their desktop (I stripped that stuff out for understandability). Here is the AutoIt code

send("{PRINTSCREEN}")
RunWait("clip2image.exe","",@SW_HIDE)

I am also including a zip file with the clip2image.exe file.

clip2image.zip

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0