setting up an anonymous filetransfer service

I tried setting up a anonymous file transfer service using tor, and came to the following setup:

using these tools:

receiver

  1. in torrc, add a hiddenservice, with this port:
    HiddenServicePort 4242 127.0.0.1:4343
    
  2. in rsyncd.conf
    [ftp]
            path = /home/ftp
            comment = ftp export area
            read only = false
            use chroot = true
    
    this sets up a rsync target named 'ftp', you have to make sure that rsync has permissions to write /home/ftp, and that the directory exists.
  3. then start rsync as follows:
    rsync --daemon --address 127.0.0.1 --port 4343
    
after tor has created the hiddenservice, find its hostname, by reading the [hiddenservicedir]/hostname file.

sender

  1. start socat, to forward requests to tor:
    socat TCP4-LISTEN:4141,fork SOCKS4A:localhost:targethost.onion:4242,socksport=9050
    
  2. use rsync to send the file:
    rsync file  rsync://localhost:4141/ftp
    

everything done automatically

i created some perl scripts to make it easy to do filetransfers via a tor hiddenservice.
needed:
  1. download http://nah6.com/~itsme/torx.zip
  2. unzip it to some directory, for instance c:\torx
  3. add c:\torx\bin to your search path.
  4. set path=%path%;c:\torx\bin
  5. then if you want to receive a file, type in the directory where you want to receive the file:
    	perl torreceive.pl
    
    this will print the hiddenservice name:
    	listening on sad98ad08a0d8jui.onion:873
    
  6. tell the person you want to send you a file anonymously to do this:
    	perl torsend.pl somefile sad98ad08a0d8jui.onion:873
    
  7. after doing 'torreceive' for the first time, it may take quite a while ( like 5 - 10 minutes ) before you can use the hidden service.
  8. performance is not very high, like 10 kbyte/sec
  9. aborted transfers can be restarted, it uses rsync to do the actual filetransfer.