Code Monkey home page Code Monkey logo

shapeshifterandroidjava's Introduction

The Operator Foundation

Operator makes usable tools to help people around the world with censorship, security, and privacy.

Shapeshifter

The Shapeshifter project provides network protocol shapeshifting technology (also sometimes referred to as obfuscation). The purpose of this technology is to change the characteristics of network traffic so that it is not identified and subsequently blocked by network filtering devices.

There are two components to Shapeshifter: transports and the dispatcher. Each transport provide different approach to shapeshifting. ShapeshifterAndroidJava is provided as a Java library which can be integrated directly into applications.

If you are a tool developer working in the Java programming language, then you are in the right place. If you are a tool developer working in other languages we have several other tools available to you:

  • A Go transports library that can be used directly in your application: shapeshifter-transports

  • A Kotlin transports library that can be used directly in your Android application (currently supports Shadow): ShapeshifterAndroidKotlin

  • A Swift transports library that can be used directly in your application: ShadowSwift

If you want a end user that is trying to circumvent filtering on your network or you are a developer that wants to add pluggable transports to an existing tool that is not written in the Go programming language, then you probably want the dispatcher. Please note that familiarity with executing programs on the command line is necessary to use this tool. https://github.com/OperatorFoundation/shapeshifter-dispatcher

If you are looking for a complete, easy-to-use VPN that incorporates shapeshifting technology and has a graphical user interface, consider Moonbounce, an application for macOS which incorporates shapeshifting without the need to write code or use the command line.

Shapeshifter Transports

Shapeshifter Transports is a suite of pluggable transports implemented in a variety of languages. This repository is an implementation of the Shadow transport in the Java programming language.

If you are looking for a tool which you can install and use from the command line, take a look at shapeshifter-dispatcher instead.

ShapeshifterAndroidJava implements the Pluggable Transports 3.0 specification available here: https://github.com/Pluggable-Transports/Pluggable-Transports-spec/tree/main/releases/PTSpecV3.0 Specifically, they implement the Java Transports API v3.0.

The purpose of the transport library is to provide a set of different transports. Each transport implements a different method of shapeshifting network traffic. The goal is for application traffic to be sent over the network in a shapeshifted form that bypasses network filtering, allowing the application to work on networks where it would otherwise be blocked or heavily throttled.

ShapeshifterAndroidJava

Shadowsocks is a fast, free, and open-source encrypted proxy project, used to circumvent Internet censorship by utilizing a simple, but effective encryption and a shared password. ShapeshifterAndroidJava is a wrapper for Shadowsocks that makes it available as a Pluggable Transport.

Setting up dependencies

  1. add the following at the end of repositories in your PROJECT's build.gradle:
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
  1. add the dependency in your MODULE's build.gradle:
dependencies {
        // Be sure to replace TAG with the most recent version
        implementation 'com.github.OperatorFoundation:ShapeshifterAndroidJava:TAG'

        // Later releases of bouncycastle may not work with ShapeshifterAndroidJava
        implementation 'org.bouncycastle:bcpkix-jdk15on:1.58'
        
        // 
        implementation 'com.google.guava:guava:31.0.1-android'
        implementation 'com.google.code.gson:gson:2.8.2'
}
  1. Make sure the min SDK in your build.gradle is 21 or higher in each project/app related build.gradle

Using the Library

  1. Create a shadow config, putting the password and cipher name. The Server's Persistent Public Key is used in place of the password.
ShadowConfig config = new ShadowConfig(password, cipherName);
  1. Make a Shadow Socket with the config, the host, and the port.
ShadowSocket shadowSocket = new ShadowSocket(config, host, port);
  1. Get the output stream and write some bytes.
shadowSocket.getOutputStream().write(someBytes);
  1. Flush the output stream.
shadowSocket.getOutputStream().flush();
  1. Get the input stream and read some bytes into an empty buffer.
shadowSocket.getInputStream().read(emptyBuffer);

Credits

  • Shadowsocks was developed by the Shadowsocks team. whitepaper

shapeshifterandroidjava's People

Contributors

cryptosax avatar consuelita avatar bragelbytes avatar jessica9-star avatar rachel-operator avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

ets-android3

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.