On Mon, Jun 04, 2012 at 04:09:04PM -0700, Zack Weinberg wrote:
On Mon, Jun 4, 2012 at 8:21 AM, Zack Weinberg zackw@panix.com wrote:
For the moment, the source tree is visible on Github: https://github.com/zackw/stegotorus. It is likely to move to gitweb.torproject.org hosting in the near future.
You can now clone {git,https}://git.torproject.org/stegotorus.git . Be warned that due to a couple of very large files, a clone requires approximately 350MB of disk space and 140MB transferred over the network. (The troublesome files are unlikely to change in the near future, so this is a one-time cost.) You should also assume that all documentation is out of date until further notice.
Patches are welcome. The TODO list currently exists only in my head, but I'll be getting that updated in-repo Real Soon.
I tried these steps and got a segmentation fault:
$ git clone https://git.torproject.org/stegotorus.git $ cd stegotorus $ autoreconf -i $ ./configure && make $ ./stegotorus null socks 127.0.0.1:5000 [info] ./stegotorus process 28359 now initialized $ tor ClientTransportPlugin "stegotorus socks4 127.0.0.1:5000" UseBridges 1 Bridge "stegotorus 87.73.82.145:8080"
I found the bridge IP address in scripts/torrc. At this point stegotorus printed out:
[info] 127.0.0.1:5000: new connection to socks client from 127.0.0.1:42233 [info] <1> trying to connect to 87.73.82.145:8080 [info] <1.1> network error in read: Connection reset by peer
[error] Segmentation fault at 0000000000000010 ./stegotorus[0x4054b6] /lib/x86_64-linux-gnu/libc.so.6(+0x324f0)[0x7fcff4cee4f0] ./stegotorus[0x40ec11] ./stegotorus[0x405f7a] /usr/lib/libevent-2.0.so.5(+0x1bc4a)[0x7fcff5df8c4a] /usr/lib/libevent-2.0.so.5(event_base_loop+0x414)[0x7fcff5dee254] ./stegotorus[0x404e76] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x7fcff4cdaead] ./stegotorus[0x405291] Segmentation fault
I noticed that the start-stegotorus.sh script uses Socks4Proxy instead of ClientTransportPlugin, but that gives me the same segfault. Here's what GDB says:
[info] <1> trying to connect to 87.73.82.145:8080 [info] <1.1> network error in read: Connection reset by peer
Program received signal SIGSEGV, Segmentation fault. 0x000000000040760a in conn_t::outbound (this=0x0) at src/connections.h:43 43 { return this->buffer ? bufferevent_get_output(this->buffer) : 0; } (gdb) bt #0 0x000000000040760a in conn_t::outbound (this=0x0) at src/connections.h:43 #1 0x00000000004196f9 in (anonymous namespace)::null_circuit_t::send (this=0x63fd30) at src/protocol/null.cc:202 #2 0x00000000004070aa in circuit_send (ckt=0x63fd30) at src/connections.cc:241 #3 0x000000000040b6d1 in upstream_read_cb (bev=0x63f9c0, arg=0x63fd30) at src/network.cc:303 #4 0x00007ffff7bb0c4a in ?? () from /usr/lib/libevent-2.0.so.5 #5 0x00007ffff7ba6254 in event_base_loop () from /usr/lib/libevent-2.0.so.5 #6 0x00000000004056f3 in main (argv=0x7fffffffdef8) at src/main.cc:417
I tried running the "chop" mode but didn't figure out the usage. I seems I need a "down_address" but I don't know what to put there.
$ ./stegotorus chop socks 127.0.0.1:5000 [warn] chop: not enough parameters [warn] chop syntax: chop <mode> <up_address> (<down_address> [<steg>])... mode ~ server|client|socks up_address, down_address ~ host:port A steganographer is required for each down_address. The down_address list is still required in socks mode. Examples: stegotorus chop client 127.0.0.1:5000 192.168.1.99:11253 http 192.168.1.99:11254 skype stegotorus chop server 127.0.0.1:9005 192.168.1.99:11253 http 192.168.1.99:11254 skype
David Fifield