Home

Awesome

obfsclient - A C++11 obfs2/3 Tor managed pluggable transport client

Yawning Angel (yawning at schwanenlied dot me)

Compile this if you are a obfuscated strong proxy who don't need no Python

What?

This is a C++11 client implementation of the following protocols:

By design it will only function as a ClientTransportPlugin for Tor. It does use a reasonably complete implementation of the Pluggable Transport spec so when used properly, it will function as a drop in replacement for asn's Python implementation.

Building

It currently has the following external dependencies:

Non-standard configure options:

Make Targets:

Usage

In your torrc:

UseBridges 1
Bridge obfs2 ip:port fingerprint
Bridge obfs3 ip:port fingerprint
Bridge scramblesuit ip:port password=sharedsecret
ClientTransportPlugin obfs2,obfs3,scramblesuit exec /path/to/the/binary/obfsclient

Implementation notes

Like the rest of my C++ code, C++ exceptions and RTTI are not used, and it is expected that the appropriate compiler flags are passed in to disable these functions. The obfsclient binary will assert() on fatal errors (out of memory), because that's realistically the only safe thing to do.

Caveats:

TODO (Patches accepted!)

WON'T DO