All Projects β†’ berty β†’ go-libp2p-tor-transport

berty / go-libp2p-tor-transport

Licence: other
🚧 WIP: tor transport for libp2p

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to go-libp2p-tor-transport

Berty
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Stars: ✭ 5,101 (+12341.46%)
Mutual labels:  ipfs, libp2p, berty
guessTor
Bruteforces [.onion] domains
Stars: ✭ 78 (+90.24%)
Mutual labels:  tor, onion
onion-pi
Configures your Raspberry Pi as portable WiFi-WiFi Tor proxy.
Stars: ✭ 13 (-68.29%)
Mutual labels:  tor, onion
torgo
A Golang library for Tor.
Stars: ✭ 36 (-12.2%)
Mutual labels:  tor, onion
TORhunter
Designed to scan and exploit vulnerabilities within Tor hidden services. TORhunter allows most tools to work as normal while resolving .onion
Stars: ✭ 47 (+14.63%)
Mutual labels:  tor, onion
peer-id-generator
Vanity public key generator for use with IPFS and IPNS
Stars: ✭ 27 (-34.15%)
Mutual labels:  ipfs, libp2p
nebula-crawler
🌌 A libp2p DHT crawler, monitor, and measurement tool that exposes timely information about DHT networks.
Stars: ✭ 97 (+136.59%)
Mutual labels:  ipfs, libp2p
onionfruit
OnionFruitβ„’ Connect - Tor access client with country selection, bridge configuration, pluggable transports and experimental DNS support
Stars: ✭ 150 (+265.85%)
Mutual labels:  tor, onion
good-karma-kit
πŸ˜‡ A Docker Compose bundle to run on servers with spare CPU, RAM, disk, and bandwidth to help the world. Includes Tor, ArchiveWarrior, BOINC, and more...
Stars: ✭ 238 (+480.49%)
Mutual labels:  ipfs, tor
oniontree
A repository of Tor hidden services.
Stars: ✭ 45 (+9.76%)
Mutual labels:  tor, onion
go-ipfs-recovery
Data recovery for IPFS protocol.
Stars: ✭ 16 (-60.98%)
Mutual labels:  ipfs, libp2p
OnionHarvester
A small TOR Onion Address harvester for checking if the address is available or not.
Stars: ✭ 71 (+73.17%)
Mutual labels:  tor, onion
go-libp2p-http
HTTP on top of libp2p
Stars: ✭ 49 (+19.51%)
Mutual labels:  ipfs, libp2p
web3.storage
⁂ The simple file storage service for IPFS & Filecoin
Stars: ✭ 417 (+917.07%)
Mutual labels:  ipfs, libp2p
edgevpn
β›΅ The immutable, decentralized, statically built p2p VPN without any central server and automatic discovery! Create decentralized introspectable tunnels over p2p with shared tokens
Stars: ✭ 223 (+443.9%)
Mutual labels:  ipfs, libp2p
ipfs-crawler
A crawler for the IPFS network, code for our paper (https://arxiv.org/abs/2002.07747). Also holds scripts to evaluate the obtained data and make similar plots as in the paper.
Stars: ✭ 46 (+12.2%)
Mutual labels:  ipfs, libp2p
vDroid
official re-designed Android wallet πŸ“³
Stars: ✭ 14 (-65.85%)
Mutual labels:  tor, onion
Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+14848.78%)
Mutual labels:  ipfs, libp2p
Js Libp2p
The JavaScript Implementation of libp2p networking stack.
Stars: ✭ 1,686 (+4012.2%)
Mutual labels:  ipfs, libp2p
denarius
Denarius [$D] is a PoW/PoS Hybrid Cryptocurrency with Tribus a new PoW Hashing Algo built specifically for D, one of a kind hybrid masternodes called Fortuna Stakes, atomic swaps, staking, mining, IPFS, optional Native Tor and I2P, and much more!
Stars: ✭ 105 (+156.1%)
Mutual labels:  ipfs, tor

go-libp2p-tor-transport

Go tor transport is a go-libp2p transport targeting mainly *nix platform.

WIP

This transport is in very early stages (PoC) many of features enumerated here are just targets.

You can follow the process of the 1.0 here.

Usage :

import (
  "context"

  tor "berty.tech/go-libp2p-tor-transport"
  config "berty.tech/go-libp2p-tor-transport/config"
  libp2p "github.com/libp2p/go-libp2p"
)

func main() {
  builder, err := tor.NewBuilder( // Create a builder
    config.EnableEmbeded,         // Use the embeded tor instance.
  )
  c(err)
  host, err := libp2p.New(        // Create a libp2p node
    context.Background(),
    libp2p.Transport(builder),    // Use the builder to create a transport instance (you can't reuse the same builder after that).
  )
  c(err)
}

func c(err error) { // Used to check error in this example, replace by whatever you want.
  if err != nil {
    panic(err)
  }
}

With config :

import (
  "context"
  "time"

  tor "berty.tech/go-libp2p-tor-transport"
  config "berty.tech/go-libp2p-tor-transport/config"
  libp2p "github.com/libp2p/go-libp2p"
)

func main() {
  builder, err := tor.NewBuilder(        // NewBuilder can accept some `config.Configurator`
    config.AllowTcpDial,                 // Some Configurator are already ready to use.
    config.SetSetupTimeout(time.Minute), // Some require a parameter, in this case it's a function that will return a Configurator.
    config.SetBinaryPath("/usr/bin/tor"),
  )
  // Evrything else is as previously shown.
  c(err)
  hostWithConfig, err := libp2p.New(
    context.Background(),
    libp2p.Transport(builder),
  )
  c(err)
}

func c(err error) {
  if err != nil {
    panic(err)
  }
}

Support

This transport target *nix (Linux, OSX, IOS, Android, ...), it also can be built for windows but many of the attack reduction mesures will not be present (on windows potentialy un encrypted traffic will transit through the loopback, also some tor control port are gonna be exposed.).

Tor Provider Compatibility

You can use 3 different provider :

  • Embeded, this transport naturaly include a tor build, nothing to do.
  • External node, the transport will connect to an already running tor node (usefull for server, can increase annonymity by running a relay at the same time blocking SCA attacks).
  • File Path, you can give a path to a tor node executable, the transport will start the node and setup it.

Running Mode

  • Compatibility, this will create tunnels only 1 or 0 long, this disable privacy protection but allows to connect or be contacted by annonym nodes at a much lower cost (you can also use that to go around your nat) default.
  • Annonymity, this will works like you expect 3 hop tunnels, in combination with a correct configuration of your libp2p node you will be able to also dial non annonym nodes through an exit relay.
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].