All Projects → guardianproject → AndroidPluggableTransports

guardianproject / AndroidPluggableTransports

Licence: other
Android Pluggable Transports (aka PLUTO2)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to AndroidPluggableTransports

Lantern
Lantern官方版本下载 蓝灯 翻墙 代理 科学上网 外网 加速器 梯子 路由 lantern proxy vpn censorship-circumvention censorship gfw accelerator
Stars: ✭ 10,238 (+44413.04%)
Mutual labels:  censorship, circumvention
tulingx
TULINGX(图灵)VPN下载页 翻墙 代理 科学上网 外网 加速器 梯子 路由
Stars: ✭ 59 (+156.52%)
Mutual labels:  censorship, circumvention
Bebasid
bebasid dapat membantu membuka halaman situs web yang diblokir oleh pemerintah Indonesia dengan memanfaatkan hosts file.
Stars: ✭ 372 (+1517.39%)
Mutual labels:  freedom, censorship
Saveamphetamine
Apple has threatened to remove Amphetamine from the App Store.
Stars: ✭ 171 (+643.48%)
Mutual labels:  freedom, censorship
superhighway84
USENET-inspired, uncensorable, decentralized internet discussion system running on IPFS & OrbitDB
Stars: ✭ 437 (+1800%)
Mutual labels:  censorship
russian-blackout
The RKN caused problems all over Russian Internet. This is list of services which suffered from RKN blockings activity.
Stars: ✭ 18 (-21.74%)
Mutual labels:  censorship
badtraffic
Supporting data for BAD TRAFFIC Citizen Lab report.
Stars: ✭ 21 (-8.7%)
Mutual labels:  censorship
Blackwhite
Domain, CIDR, IP black/white list, PAC generator
Stars: ✭ 251 (+991.3%)
Mutual labels:  freedom
NouBan-js
检测文本中是否含有豆瓣敏感词(JavaScript版本)。Nouban is an anti-censorship project aiming to record censored words in Douban, a Chinese social network platform. It is merely a glimpse of the situation in Chinese 'Innernet'.
Stars: ✭ 58 (+152.17%)
Mutual labels:  censorship
kit-censura
Software used to censor the Internet in Italy
Stars: ✭ 22 (-4.35%)
Mutual labels:  censorship
IPFSStreamingVideo
IPFS Streaming Video
Stars: ✭ 28 (+21.74%)
Mutual labels:  censorship
CombinedPrivacyBlockLists
Ad-blocking hosts files, IP block lists, PAC filters, and ABP / uBO subscriptions, all merged from multiple reputable sources, combined with my own research. Also, script-based utilities to help you create such things yourself. Updated at least once a week, often more frequently.
Stars: ✭ 131 (+469.57%)
Mutual labels:  freedom
awesome-donations
A repository of FLOSS donation options.
Stars: ✭ 21 (-8.7%)
Mutual labels:  freedom
CWP-Utilities
Combined Windows Privacy Utilities | Hosts file updater, block list manager, and more. Open source tools for Windows users, to help ensure privacy & security. Block ads, spyware domains, and other malicious activity/traffic, all through a simple interface.
Stars: ✭ 63 (+173.91%)
Mutual labels:  freedom
bebasdns
Membantumu berselancar dengan aman dan tidak terbatas!.
Stars: ✭ 56 (+143.48%)
Mutual labels:  censorship
dog
A firewall management system.
Stars: ✭ 67 (+191.3%)
Mutual labels:  firewalls
Simple-Thank-You
A warm Thank You for supporting our modern & easy Simple Mobile Tools apps!
Stars: ✭ 140 (+508.7%)
Mutual labels:  freedom
wikicensorship.github.io
An open encyclopedia of Internet censorship
Stars: ✭ 91 (+295.65%)
Mutual labels:  censorship
blocked-hosts
A periodically updated list of websites known to be blocked in India on the ACT Fibernet network
Stars: ✭ 54 (+134.78%)
Mutual labels:  censorship
template-vue
Create Vue app with zero-config development setup.
Stars: ✭ 20 (-13.04%)
Mutual labels:  freedom

Android Pluggable Transports

This project is for implementing and providing access to transports compliant with the Pluggable Transports 2.x specification to any Android app that wishes to utilize them. It is built from knowledge and code initially developed through the work on Orbot (Tor for Android) use of Pluggable Transports, VPN features, and inter-application APIs (NetCipher). This project also will utilize the Operator Foundation's Shapeshifter-Transports library in order to provide access to common pluggable transports implemented in Go.

Here is a basic example of how to use the Dispatcher, to retrieve a Transport instance, which then can be used to make a connection to a specific "bridge" endpoint:

    Transport transport = Dispatcher.get().getTransport(this, type, options);
    if (transport != null)
    {
        Connection conn = transport.connect(bridgeAddress);
        //now use the connection, either as a proxy, or to read and write bytes directly
        if (conn.getLocalAddress() != null && conn.getLocalPort() != -1)
            setSocksProxy (conn.getLocalAddress(), conn.getLocalPort());
    }

Each transport will like need specific configuration values in order to connect to the remote bridge or other resources. These values can shared through the bridge address argument, as well as the open-ended key/value options.

Properties options = new Properties();
    String bridgeAddress = "https://meek.actualdomain.com";
    options.put(MeekTransport.OPTION_FRONT,"www.somefrontabledomain.com");
    options.put(MeekTransport.OPTION_KEY,"18800CFE9F483596DDA6264C4D7DF7331E1E39CE");
    init("meek", bridgeAddress, options);

In some cases, the Connection instance returned can be used to setup a general purpose SOCKS proxy. In other cases, you will have to use the read() and write() methods of the Connection instance to transmit data over the transport.

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    baos.write("GET https://somewebsite.org/TheProject.html HTTP/1.0".getBytes());
    conn.write(baos.toByteArray());

    byte[] buffer = new byte[1024*64];
    int read = conn.read(buffer,0,buffer.length);
    String response = new String(buffer);

The core library is the 'APTDispatchLibrary', but you also need to include a specific library for the transports you wish to bundle and utilize in your app. For instance 'APTDispatchLibrary-MeekObfs4-Full' would include the obfs4proxy library for x86 and arm devices in both 32 and 64-bit. Alternatively, you can just include ''APTDispatchLibrary-MeekObfs4-ARM' for a smaller 'armeabi' only build, reducing the size from 9MB to 2MB.

This project also demonstrates how to implement and register new Transport types, through the 'APTDispatchLibrary-SampleTransport' project. A Pluggable Transport can be implemented entirely in Java, or utilize any other language supported by the Android SDK or NDK. Transport register by making this simple call

{
    Dispatcher.get().register("sample",getClass());
}

This then allows any app using the library to get an instance of the transport like so:

    SampleTransport transport = (SampleTransport)Dispatcher.get().getTransport(this, "sample", options);

Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
   		maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" }
	}
}


 
}

Step 2. Add the dependency

dependencies {
        compile 'com.github.guardianproject:AndroidPluggableTransportsDispatcher:-SNAPSHOT'
}

Notices

Obfs4proxy is Copyright (c) 2014, Yawning Angel All rights reserved. https://github.com/Yawning/obfs4/

Thanks

  • Yawning Angel for obfs4proxy.
  • David Fifield for goptlib.
  • Adam Langley for his Elligator implementation.
  • Philipp Winter for the ScrambleSuit protocol which provided much of the design.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].