Giter Site home page Giter Site logo

splitpt's Introduction

SplitPT

SplitPT implements traffic splitting for existing PTs supported by Tor.

SplitPT itself is a pluggble transport that acts as a shim between the client, hops, and server.

Client Usage

TODO

Server Usage

TODO

splitpt's People

Contributors

annalorimer avatar cohosh avatar

Watchers

 avatar

splitpt's Issues

Open SOCKS connections to PT processes

To summarize our discussion from yesterday, we'll need to open SOCKS connections to the spawned pluggable transport processes for each connection we want to split traffic over. These SOCKS connections will specify the destination address of the PT server (if it's the kind of PT where such a thing is relevant), and the per-connection arguments (that are usually provided in the Bridge line of the torrc file when using the PT directly with Tor. The destination address is provided in the usual way, but the per-connection args are provided in the Username and Password authentication fields, as described in the relevant part of the Tor PT specification.

We are using the username and password fields in an unusual way, but it should be possible to use an existing socks5 client library. We use txthinking/socks5 in Snowflake, and the NewClient function has a way to pass in the username and password strings. We just need to be careful with the following requirement from the PT spec:

If the encoded argument list is less than 255 bytes in length, the "PLEN" field must be set to "1"
and the "PASSWD" field must contain a single NUL character.

When creating the SOCKS connection, the SOCKS server address will be whatever port the PT client process is listening on for incoming connections, and the destination address will be the PT server address.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.