Data theft via remote desktop connection A software vendor friend of mine wants to clamp down the development environment by limiting access to the software's source code to only Remote Desktop access, disallowing any digital communication including clipboard, printer, network shares, and internet access from that environment.

The reasoning is that they are contractually obligated to provide a company-standard-issue development environment to an overseas partner and there is a concern of theft.

I want to convince them that this is a futile effort and vain burden on good developers since the otherwise unsupervised access to the source code will provide ample opportunity to steal the data.  No matter how many firewall rules and group policies are in place, one channel remains that cannot be removed - the screen.

Assuming the development environment has Visual Studio 2010, data compression software, and other common development environment tools, what is the slickest way to use the Remote Desktop screen to steal the data?  Keep in mind any limitations of the screen refresh rate.  

Candidate approach: a monochrome bitmap of the screen can hold over 200KB of an archive of such source code.  Without error correction, that's just over 500 screenshots of monochrome data for 100MB of compressed source code.  The data must be encoded, decoded, and I'm entirely too lazy to save 500 screenshots into paint.  Existing free software can be involved, but not installed on the environment.

Other ideas?  Implementations?
Use FRAPS to capture video from your local machine.  Then you can flash stuff up on the remote desktop at up to the frame rate and it will all get recorded to a local video file.

I don't see a way to sync to exactly to the frame rate, so you'll need some error detection to make sure you're not getting data mid-draw.  Here's a simple scheme using text and a python script:

framerate = 30  # fps of viewer
numlines = 24   # lines of text you can see at once
import sys,time,md5,base64
lineno = 0
while 1:
  lines = 'chunk starting at line %d\n' % lineno
  for i in xrange(numlines - 2):
    lines += sys.stdin.readline()
    lineno += 1
  print 'md5:', base64.encodestring(md5.new(lines).digest()),
  print lines
  time.sleep(1.0/framerate)


Run this script in the RemoteDesktop window and pipe in the text you wish to capture.  When it is done, OCR each frame of your FRAPS output (that's the hard part, I'm not sure what you'd use for that).  Throw away any duplicate frames and frames where the md5 isn't right.  

You probably want to base64 encode your input, as OCR doesn't do well with nonprinting characters like tabs and spaces.