All Projects → keroserene → Snowflake

keroserene / Snowflake

Licence: other
WebRTC Pluggable Transport

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Snowflake

Orbot
The Github home of Orbot: Tor on Android (Also available on gitlab!)
Stars: ✭ 629 (+346.1%)
Mutual labels:  tor, censorship-circumvention
Torwall
Tallow - Transparent Tor for Windows
Stars: ✭ 346 (+145.39%)
Mutual labels:  tor, censorship-circumvention
meanOs
Mean Operating System - The first decentralized, artificially intelligent, MEAN.js stack, operating system. Mean OS is the only operating system hosted anonymous using a P2P network and a suite of non-standard in-browser delivery mechanisms. Mean OS proudly supports Brave and Tor, be free!
Stars: ✭ 62 (-56.03%)
Mutual labels:  webrtc, tor
Cloak
A censorship circumvention tool to evade detection against state adversaries
Stars: ✭ 942 (+568.09%)
Mutual labels:  tor, censorship-circumvention
Quic
A Go implementation of the QUIC API for Peer-to-peer and Client-to-Server Connections
Stars: ✭ 137 (-2.84%)
Mutual labels:  webrtc
Rtmp Ts Dash Webrtc
👾 音视频解决方案 Audio and video solutions(AV1)
Stars: ✭ 129 (-8.51%)
Mutual labels:  webrtc
Samples
WebRTC Web demos and samples
Stars: ✭ 11,318 (+7926.95%)
Mutual labels:  webrtc
Mediadevices Camera Selection
Examples on how to switch devices with the mediaDevices API
Stars: ✭ 124 (-12.06%)
Mutual labels:  webrtc
Media Server Go Demo
webrtc media server go demo
Stars: ✭ 140 (-0.71%)
Mutual labels:  webrtc
Shadowsocks Cloak Installer
A one-key script to setup Cloak plugin with Shadowsocks on your server
Stars: ✭ 138 (-2.13%)
Mutual labels:  censorship-circumvention
Metastream
Watch streaming media with friends.
Stars: ✭ 1,926 (+1265.96%)
Mutual labels:  webrtc
Hublin
DEPRECATED - An easy and free video conference service based on WebRTC
Stars: ✭ 1,614 (+1044.68%)
Mutual labels:  webrtc
Liowebrtc
An event-based WebRTC library that makes it easy to embed real-time peer to peer communication into UI components.
Stars: ✭ 138 (-2.13%)
Mutual labels:  webrtc
Toho Like Js
Touhou style danmaku shooter game which runs on your chrome.
Stars: ✭ 127 (-9.93%)
Mutual labels:  webrtc
Tinylist
Tiny version of gfwlist, focusing on common websites ONLY
Stars: ✭ 139 (-1.42%)
Mutual labels:  censorship-circumvention
Private Tor Network
Run an isolated instance of a tor network in Docker containers
Stars: ✭ 125 (-11.35%)
Mutual labels:  tor
Webrtc Leak
Check if your VPN leaks your IP address via the WebRTC technology
Stars: ✭ 133 (-5.67%)
Mutual labels:  webrtc
Awesome Android Ndk
🔥 全面深入地掌握NDK技术,成为下一波5G时代的浪潮儿~
Stars: ✭ 138 (-2.13%)
Mutual labels:  webrtc
Html5 Dash Hls Rtmp
🌻 HTML5播放器、M3U8直播/点播、RTMP直播、低延迟、推流/播流地址鉴权
Stars: ✭ 1,805 (+1180.14%)
Mutual labels:  webrtc
Surmon.me
🆒 My personal website and blog, powered by @vuejs (3)
Stars: ✭ 1,767 (+1153.19%)
Mutual labels:  webrtc

Snowflake

Build Status

Pluggable Transport using WebRTC, inspired by Flashproxy.

Table of Contents

Usage

cd client/
go get
go build
tor -f torrc

This should start the client plugin, bootstrapping to 100% using WebRTC.

Dependencies

Client:


More Info

Tor can plug in the Snowflake client via a correctly configured torrc. For example:

ClientTransportPlugin snowflake exec ./client \
-url https://snowflake-broker.azureedge.net/ \
-front ajax.aspnetcdn.com \
-ice stun:stun.l.google.com:19302
-max 3

The flags -url and -front allow the Snowflake client to speak to the Broker, in order to get connected with some volunteer's browser proxy. -ice is a comma-separated list of ICE servers, which are required for NAT traversal.

For logging, run tail -F snowflake.log in a second terminal.

You can modify the torrc to use your own broker:

ClientTransportPlugin snowflake exec ./client --meek

Test Environment

There is a Docker-based test environment at https://github.com/cohosh/snowbox.

FAQ

Q: How does it work?

In the Tor use-case:

  1. Volunteers visit websites which host the "snowflake" proxy. (just like flashproxy)
  2. Tor clients automatically find available browser proxies via the Broker (the domain fronted signaling channel).
  3. Tor client and browser proxy establish a WebRTC peer connection.
  4. Proxy connects to some relay.
  5. Tor occurs.

More detailed information about how clients, snowflake proxies, and the Broker fit together on the way...

Q: What are the benefits of this PT compared with other PTs?

Snowflake combines the advantages of flashproxy and meek. Primarily:

  • It has the convenience of Meek, but can support magnitudes more users with negligible CDN costs. (Domain fronting is only used for brief signalling / NAT-piercing to setup the P2P WebRTC DataChannels which handle the actual traffic.)

  • Arbitrarily high numbers of volunteer proxies are possible like in flashproxy, but NATs are no longer a usability barrier - no need for manual port forwarding!

Q: Why is this called Snowflake?

It utilizes the "ICE" negotiation via WebRTC, and also involves a great abundance of ephemeral and short-lived (and special!) volunteer proxies...

Appendix

-- Testing with Standalone Proxy --
cd proxy
go build
./proxy

More documentation on the way.

Also available at: torproject.org/pluggable-transports/snowflake

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].