Skip to content
Snippets Groups Projects
  1. Jan 21, 2019
    • Yawning Angel's avatar
      transports/meeklite: Add `utls` argument to configure behavior · e4020b18
      Yawning Angel authored
      Per dcf:
      > As for the TODO, my plan was was to expose a "utls" SOCKS arg
      > to make it configurable per bridge, and just reuse the utls
      > Client Hello ID names:
      >	utls=HelloChrome_Auto
      
      This adds support for all currently supported utls ClientHello IDs
      with the following caveats/differences:
      
       * `none` - Disables using utls entirely, forces `crypto/tls`.
       * `HelloGolang` - Alias of `none`, since using utls is pointless.
       * `HelloCustom` - Omitted as pointless.
      e4020b18
    • Yawning Angel's avatar
      transports/meeklite: uTLS for ClientHello camouflage · 4d453dab
      Yawning Angel authored
      There's still some interesting oddities depending on remote server and
      what fingerprint is chosen, but I can watch videos online with the
      chosen settings and the TBB Azure bridge.
      
      Note: Despite what people are claiming in the Tor Browser bug tracker
      it isn't all that hard to use the built in http client with utls.  And
      yes, the `transport.go` code does negotiate correctly in a standalone
      test case (apart from compatibility related oddities).
      4d453dab
  2. Jan 20, 2019
  3. Jan 19, 2019
  4. Jan 16, 2019
  5. Nov 03, 2018
    • Daniel Martí's avatar
      port to a Go module · 08f4d470
      Daniel Martí authored
      The biggest win is that we now declare what versions of each dependency
      we require to build. This way, building a certain version of obfs4 will
      always use the same source code, independent of the master branch of
      each dependency.
      
      This is necessary for reproducible builds. On top of that, go.sum
      contains checksums of all the transitive dependencies and their modules,
      so the build system will also recognise when the source code has been
      changed.
      
      Updated the build instructions accordingly. We don't drop support for
      earlier Go versions, but those won't get the benefit of reproducible
      builds unless we start vendoring the dependencies too.
      08f4d470
  6. Apr 21, 2018
  7. Jan 10, 2018
  8. Nov 15, 2016
  9. Oct 20, 2016
  10. Jul 11, 2016
  11. Apr 13, 2016
    • Yawning Angel's avatar
      The obfs4 `iat-mode` parameter is now properly configurable. · a7a2575c
      Yawning Angel authored
      It used to be that all of the bridge side parameters needed to be
      manually specified together.  This was somewhat nonsensical, and the IAT
      mode can now be set as the only obfs4 option in a `ServerTransportOptions`
      torrc directive.
      
      Thanks to dcf for reporting the issue.
      a7a2575c
  12. Jan 25, 2016
  13. Jan 17, 2016
  14. Oct 30, 2015
  15. Oct 29, 2015
    • Yawning Angel's avatar
      Add the "meek_lite" transport, which does what one would expect. · 611205be
      Yawning Angel authored
      This is a meek client only implementation, with the following
      differences with dcf's `meek-client`:
      
       - It is named `meek_lite` to differentiate it from the real thing.
       - It does not support using an external helper to normalize TLS
         signatures, so adversaries can look for someone using the Go
         TLS library to do HTTP.
       - It does the right thing with TOR_PT_PROXY, even when a helper is
         not present.
      
      Most of the credit goes to dcf, who's code I librerally cribbed and
      stole.  It is intended primarily as a "better than nothina" option
      for enviornments that do not or can not presently use an external
      Firefox helper.
      611205be
    • Yawning Angel's avatar
      Make establishing outgoing connections the transport's responsibility. · e52258ed
      Yawning Angel authored
      ClientFactories now have a Dial() method instead of a WrapConn()
      method, so that it is possible to write something like meek-client
      using the obfs4proxy framework.
      
      This breaks the external interface if anyone is using obfs4proxy as
      a library, but the new way of doing things is a trivial modification,
      to a single routine that shouldn't have been very large to begin with.
      e52258ed
  16. Jun 01, 2015
  17. May 26, 2015
  18. Apr 23, 2015
  19. Apr 15, 2015
    • Yawning Angel's avatar
      3540313e
    • Yawning Angel's avatar
      Use a built in SOCKS 5 server instead of goptlibs. · a8d7134f
      Yawning Angel authored
      Differences from my goptlib branch:
       * Instead of exposing a net.Listener, just expose a Handshake() routine
         that takes an existing net.Conn. (#14135 is irrelevant to this socks
         server.
       * There's an extra routine for sending back sensible errors on Dial
         failure instead of "General failure".
       * The code is slightly cleaner (IMO).
      
      Gotchas:
       * If the goptlib pt.Args datatype or external interface changes,
         args.go will need to be updated.
      
      Tested with obfs3 and obfs4, including IPv6.
      a8d7134f
  20. Apr 13, 2015
  21. Apr 03, 2015
  22. Mar 28, 2015
  23. Mar 26, 2015
Loading