PHP IMAP and POP3 through Tor

Andy Dixon andy at ajd.me.uk
Thu May 1 07:40:01 UTC 2008


Hello,

I thought I might try my luck and see if anyone can help point me in  
the right direction.

I am trying to open a socks5 connection to a localhost tor socks  
server, connect to host X and go from there.

The underlying code works fine for HTTP requests, but for POP and  
IMAP, it seems to hang and die. /var/log/tor/debug.log shows loads of  
this:
May 01 08:00:20.546 [debug] global_read_bucket now 6291456.
May 01 08:00:20.751 [debug] conn_read_callback(): socket 12 wants to  
read.
May 01 08:00:20.751 [debug] read_to_buf_impl(): Read 1448 bytes.  
99752 on inbuf.
May 01 08:00:20.751 [debug] connection_dir_process_inbuf(): Got data,  
not eof. Leaving on inbuf.
May 01 08:00:20.784 [debug] conn_read_callback(): socket 12 wants to  
read.
May 01 08:00:20.784 [debug] read_to_buf_impl(): Read 1448 bytes.  
101200 on inbuf.
May 01 08:00:20.784 [debug] connection_dir_process_inbuf(): Got data,  
not eof. Leaving on inbuf.
May 01 08:00:20.819 [debug] conn_read_callback(): socket 12 wants to  
read.
May 01 08:00:20.819 [debug] read_to_buf_impl(): Read 1448 bytes.  
102648 on inbuf.
May 01 08:00:20.819 [debug] connection_dir_process_inbuf(): Got data,  
not eof. Leaving on inbuf.
May 01 08:00:20.870 [debug] conn_read_callback(): socket 12 wants to  
read.
May 01 08:00:20.870 [debug] read_to_buf_impl(): Read 1448 bytes.  
104096 on inbuf.
May 01 08:00:20.870 [debug] connection_dir_process_inbuf(): Got data,  
not eof. Leaving on inbuf.
May 01 08:00:20.905 [debug] conn_read_callback(): socket 12 wants to  
read.
May 01 08:00:20.905 [debug] read_to_buf_impl(): Read 1448 bytes.  
105544 on inbuf.
May 01 08:00:20.905 [debug] connection_dir_process_inbuf(): Got data,  
not eof. Leaving on inbuf.
May 01 08:00:21.552 [debug] global_read_bucket now 6291456.

As far as my socket shows, its connected but gets no data back. Here  
is my code ($host is the host to connect to and $ICL_PORT is the port  
number):

  	    $fp= pfsockopen('127.0.0.1', 9050, $errno, $errstr);
             $buf["send"] = pack("C3", 0x05, 0x01, 0x00);
             fwrite($fp, $buf["send"]);
             $buf["recv"] = "";
             while ($buffer = fread($fp, 1024)) {
                 $buf["recv"] .= $buffer;
             }
             $response = unpack("Cversion/Cmethod", $buf["recv"]);
             //if ($response["version"] == 0x05 and $response 
["method"] == 0x00) {
             if (ip2long($host) == -1) {
                     $buf["send"] = pack("C5", 0x05, 0x01, 0x00,  
0x03, strlen($host)).$host.pack("n", $ICL_PORT);
                 } else {
                     $buf["send"] = pack("C4Nn", 0x05, 0x01, 0x00,  
0x01, ip2long(gethostbyname($host)), $ICL_PORT);
                 }
                 fwrite($fp, $buf["send"]);
                 $buf["recv"] = "";
                 while ($buffer = fread($fp, 1024)) {
                     $buf["recv"] .= $buffer;
                 }
                 $response = unpack("Cversion/Cresult/Creg/Ctype/Lip/ 
Sport", $buf["recv"]);
                 if (!$response["version"] == 0x05 and $response 
["result"] == 0x00) {
                 	return false;
		}
                 $conn->fp = $fp;


Any ideas would be gratefully received!

Thanks

Andy



More information about the tor-talk mailing list