<feed xmlns='http://www.w3.org/2005/Atom'>
<title>stegotorus, branch master</title>
<subtitle>Steganographic stealth proxy for Tor</subtitle>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/'/>
<entry>
<title>Fix pgen_pcap.cc compile failure on Linux.</title>
<updated>2012-07-16T22:36:18+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-16T22:36:18+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=a96d571658c89b40b1bb9829b0dcd24ce37187af'/>
<id>a96d571658c89b40b1bb9829b0dcd24ce37187af</id>
<content type='text'>
Glibc's headers are not as promiscuous about including each other as
OSX's are.  Also, apparently there exist at least two incompatible
definitions of 'struct tcphdr'.  Down, not across.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Glibc's headers are not as promiscuous about including each other as
OSX's are.  Also, apparently there exist at least two incompatible
definitions of 'struct tcphdr'.  Down, not across.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't allow connection count to grow without limit in HTTP steg.</title>
<updated>2012-07-16T22:12:18+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-16T22:04:12+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=83648b9054337c6276077a342c7d7653a9daafca'/>
<id>83648b9054337c6276077a342c7d7653a9daafca</id>
<content type='text'>
The fix involves two complementary changes: (1) restore the upper
limit of 64 outstanding downstream connections per circuit; (2) HTTP
steg needs to call -&gt;cease_transmission() and -&gt;expect_close() on its
connections at the right times (for now, unconditionally; in the
future, paying attention to the HTTP "Connection:" header).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The fix involves two complementary changes: (1) restore the upper
limit of 64 outstanding downstream connections per circuit; (2) HTTP
steg needs to call -&gt;cease_transmission() and -&gt;expect_close() on its
connections at the right times (for now, unconditionally; in the
future, paying attention to the HTTP "Connection:" header).
</pre>
</div>
</content>
</entry>
<entry>
<title>Delete traces in 'make clean' if we generated them.</title>
<updated>2012-07-14T16:42:40+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-14T16:42:40+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=e5429ffb1badee2547c685c62bef3685b7798c0b'/>
<id>e5429ffb1badee2547c685c62bef3685b7798c0b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add 'pgen_fake' payload generator, use it if traces aren't available.</title>
<updated>2012-07-13T15:04:28+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-13T15:04:28+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=ddc1ab0525d718072ff0805490b09eb33d631ff1'/>
<id>ddc1ab0525d718072ff0805490b09eb33d631ff1</id>
<content type='text'>
 * src/pgen_fake.cc: New file.
 * Makefile.am: Build it.  Integrate it with 'make check'.

 * src/compression.cc: Distinguish an inflate failure due to inadequate
   output buffer space from other causes.
 * src/steg/swfSteg.cc: Enlarge the inflate output buffer as necessary.

 * src/pgen.h: Make internal padding in pentry_header explicit.
 * src/steg/payloads.cc: Remove overly chatty log_debug messages which
   were causing test_tl to deadlock.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * src/pgen_fake.cc: New file.
 * Makefile.am: Build it.  Integrate it with 'make check'.

 * src/compression.cc: Distinguish an inflate failure due to inadequate
   output buffer space from other causes.
 * src/steg/swfSteg.cc: Enlarge the inflate output buffer as necessary.

 * src/pgen.h: Make internal padding in pentry_header explicit.
 * src/steg/payloads.cc: Remove overly chatty log_debug messages which
   were causing test_tl to deadlock.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Vinod's program for generating HTTP trace files from pcap files.</title>
<updated>2012-07-12T14:28:09+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-12T14:24:20+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=949aa9547d89d4b2d463a0460941a0cc35cec56d'/>
<id>949aa9547d89d4b2d463a0460941a0cc35cec56d</id>
<content type='text'>
 * pgen.h, pgen_pcap.cc: New files.
 * util.cc: Split libevent-using routines to util-net.cc.
 * configure.ac: Detect availability of libpcap.
 * Makefile.am: Build pgen_pcap if we have libpcap.  Shuffle linkage
   variables around a little so each program is only linked against the
   libraries it needs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * pgen.h, pgen_pcap.cc: New files.
 * util.cc: Split libevent-using routines to util-net.cc.
 * configure.ac: Detect availability of libpcap.
 * Makefile.am: Build pgen_pcap if we have libpcap.  Shuffle linkage
   variables around a little so each program is only linked against the
   libraries it needs.
</pre>
</div>
</content>
</entry>
<entry>
<title>Three tiny bugfixes in the build system.</title>
<updated>2012-07-08T18:36:27+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-08T18:36:27+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=542ed83ed4d63d9cee91155adf33bc93dc3d799e'/>
<id>542ed83ed4d63d9cee91155adf33bc93dc3d799e</id>
<content type='text'>
 * Use quadrigraphs for "rm -f conft[ABC].o" in ranlib.m4 so they actually
   get deleted.
 * Stop using EXTRA_*_DEPENDENCIES which autoconf 1.11 doesn't support.
 * Make the spacing of the silent-mode custom printouts match autoconf 1.12
   (purely cosmetic).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * Use quadrigraphs for "rm -f conft[ABC].o" in ranlib.m4 so they actually
   get deleted.
 * Stop using EXTRA_*_DEPENDENCIES which autoconf 1.11 doesn't support.
 * Make the spacing of the silent-mode custom printouts match autoconf 1.12
   (purely cosmetic).
</pre>
</div>
</content>
</entry>
<entry>
<title>Update some lists so 'make distcheck' succeeds.</title>
<updated>2012-07-08T18:18:28+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-08T18:18:28+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=3624a2825d806507534a99367c3f9e39ae42263b'/>
<id>3624a2825d806507534a99367c3f9e39ae42263b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Stop half-closing downstream connections.</title>
<updated>2012-07-08T18:14:11+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-08T18:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=9d42a1ad9962307c53079a8e30574ade4998d950'/>
<id>9d42a1ad9962307c53079a8e30574ade4998d950</id>
<content type='text'>
Up till now, when we were done writing to a downstream socket, we
would use shutdown() to send a TCP FIN immediately, even if there
might be data still to be _read_ from that socket.  This turns out to
be unreliable: on the far side, the FIN may cause libevent to signal
read EOF before we are completely done reading data from the network,
causing block loss.  (This is arguably a bug in libevent, but
shutdown() on socket bufferevents is not officially supported at
present, so we need to fix it on our side.)  Also, we have reason to
believe none of our intended cover protocols normally leave sockets
half-closed for any significant length of time, so this might be a
'tell.'  And it has been observed to confuse middleboxes to the point
where they won't pass our traffic at all.

Instead, on the receive side, take note of a half-closed connection if
the cover protocol provides an in-band indication of that fact
(e.g. 'Connection: close' in HTTP) (i.e. conn_t::expect_close() now
does something) but do not call shutdown() on the transmit side.

This exposes a race condition in connection-to-circuit association
which could cause a spurious fatal assertion, and allows us to
simplify the 'should we open new downstream connections?' logic
substantially.

We still half-close our *upstream* sockets when we're done writing to
them.  That should probably change too, but that may require changes
to tltester.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Up till now, when we were done writing to a downstream socket, we
would use shutdown() to send a TCP FIN immediately, even if there
might be data still to be _read_ from that socket.  This turns out to
be unreliable: on the far side, the FIN may cause libevent to signal
read EOF before we are completely done reading data from the network,
causing block loss.  (This is arguably a bug in libevent, but
shutdown() on socket bufferevents is not officially supported at
present, so we need to fix it on our side.)  Also, we have reason to
believe none of our intended cover protocols normally leave sockets
half-closed for any significant length of time, so this might be a
'tell.'  And it has been observed to confuse middleboxes to the point
where they won't pass our traffic at all.

Instead, on the receive side, take note of a half-closed connection if
the cover protocol provides an in-band indication of that fact
(e.g. 'Connection: close' in HTTP) (i.e. conn_t::expect_close() now
does something) but do not call shutdown() on the transmit side.

This exposes a race condition in connection-to-circuit association
which could cause a spurious fatal assertion, and allows us to
simplify the 'should we open new downstream connections?' logic
substantially.

We still half-close our *upstream* sockets when we're done writing to
them.  That should probably change too, but that may require changes
to tltester.
</pre>
</div>
</content>
</entry>
<entry>
<title>Break up chop.cc in preparation for adding more control blocks.</title>
<updated>2012-07-08T16:39:39+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-08T16:39:39+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=17a1e39d73c4767bdc4c6a89a30b5378a4f0a0b9'/>
<id>17a1e39d73c4767bdc4c6a89a30b5378a4f0a0b9</id>
<content type='text'>
All of the header formatting code and the reassembly queue move to their
own file.  Some of the low-level transmission and reception code may follow.
This will make it easier to add new types of control blocks (for retransmit,
in-band connection close, the long-awaited rekeying and handshake logic, etc)
and will also make it possible to unit test the separated code.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All of the header formatting code and the reassembly queue move to their
own file.  Some of the low-level transmission and reception code may follow.
This will make it easier to add new types of control blocks (for retransmit,
in-band connection close, the long-awaited rekeying and handshake logic, etc)
and will also make it possible to unit test the separated code.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix long-standing cut-and-paste error in name of one test.</title>
<updated>2012-07-08T16:36:32+00:00</updated>
<author>
<name>Zack Weinberg</name>
<email>zackw@cmu.edu</email>
</author>
<published>2012-07-08T16:36:32+00:00</published>
<link rel='alternate' type='text/html' href='https://gitweb.torproject.org/stegotorus.git/commit/?id=f7ad87f180ea30777b4bc356dc444b53df3285a5'/>
<id>f7ad87f180ea30777b4bc356dc444b53df3285a5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
