[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: tortila as a bad exit
Quoth Scott Bennett <bennett@xxxxxxxxxx>, on 2008-08-11 23:30:20 -0500:
> I'm not convinced. It hasn't taken any 300 circuits for me. It seems
> to happen every time I have a circuit that exits via tortila. It happens
> with every destination web page.
I can confirm this. I can't seem to find much pattern to it, though.
I've done some tests, though they're not completely rigorous. HTTP
tests were performed with a single HTTP request of the form:
GET / HTTP/1.1
Host: HOSTNAME
Connection: close
transmitted through a command line of the form:
(printf "..."; sleep 10000) | \
socat - socks4a:localhost:HOSTNAME.tortila.exit:80,socksport=9050 \
> FILENAME
Pseudorandom echo tests were performed by running the program
"ditest.rb" listening on a port that was redirected via NAT from
sand.begriffli.ch:80, then using a command line of the form:
(cat socket-send.bin; sleep 10000) | \
socat - socks4a:localhost:sand.begriffli.ch.tortila.exit:80,socksport=9050 \
> socket-recv2.bin
The relevant files are available at:
http://begriffli.ch/files/2008/tortila-bogosity/
1-socket-*.bin and 2-socket-*.bin are the results of sending 1 MiB of
pseudorandom data looped through tortila through a local echo server
running on external port sand.begriffli.ch:80, with the data sent in
*-send.bin, the data received by the local echo server in *-recv1.bin,
and the data received from the local echo server after passing back
through tortila in *-recv2.bin. There is truncation of the output
streams, but no insertions; in both cases, recv2 is a prefix of send,
and send is equivalent to recv1. Trying the same test with looping
1-socket-send.bin through the "blockfreie" exit node yields an exact
copy of the input file at both recv1 and recv2.
e2-{1,2}.bin are the results of two tests retrieving
http://www.everything2.com/. elreg-{1,2}.bin are the results of two
tests retrieving http://www.theregister.co.uk/. One can clearly see
data corruption. Retrieving the same sites via the same method using
the "blockfreie" exit node yields e2-x.bin and elreg-x.bin, with no
corruption.
The data corruption when using HTTP takes multiple forms: there are
gibberish bytes inserted that do not seem to follow any obvious
pattern; there are repeated fragments; there is truncation.
Setting up a pseudo-HTTP server at sand.begriffli.ch that ignored its
input and responded with a predetermined file containing an HTTP
response, then sending a bogus HTTP request to it through tortila, has
yielded definite corruption part of the time. I haven't put those
files up because I think I'm out of energy for that approach for now
and I don't have very good results.
It certainly feels like buffers are being scrambled somewhere in the
part of the connection coming back from the remote server through
tortila.
---> Drake Wilson