CLI utility that broadcasts BTC, ETH, SOL, ZEC & XMR transactions through TOR using public block explorers

Overview

tx-tor-broadcaster

CLI utility that broadcasts BTC, ETH, SOL, ZEC & XMR transactions through TOR using public block explorers.

Provides a great degree of anonymity for your transactions.

Ensures no traffic is passed outside TOR, including DNS requests. Uses one small dependency which provides list of popular user agents. See fingerprinting section for additional information.

Check out all web3 utility libraries: micro-eth-signer, micro-sol-signer, micro-web3, tx-tor-broadcaster

Usage

npm install -g tx-tor-broadcaster

The command line interface is simple: call txtor <NET> <TX> command through terminal.

You must have Tor or Tor Browser up & running.

You can specify a few options via env variables, if needed:

  • TOR_HOST=192.168.2.5 txtor zec <tx>; default is 127.0.0.1
  • TOR_SOCKS_PORT=9051 txtor bch <tx>; default is 9050 (9150 should be used for Tor Browser)
  • TOR_RETRY_LIMIT=2 txtor sol <tx>; default is 10
txtor
# Usage: txtor <NET> <TX>
# NET: btc, eth, sol, zec, xmr, bch

txtor btc 0100000001c997a5e56e104102fa209c6a852dd90660a20b2d9c352423edce25857fcd3704000000004847304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd410220181522ec8eca07de4860a4acdd12909d831cc56cbbac4622082221a8768d1d0901ffffffff0200ca9a3b00000000434104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6cd84cac00286bee0000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac00000000
txtor eth 0xf86c0a8502540be400825208944bbeeb066ed09b7aed07bf39eee0460dfa261520880de0b6b3a7640000801ca0f3ae52c1ef3300f44df0bcfd1341c232ed6134672b16e35699ae3f5fe2493379a023d23d2955a239dd6f61c4e8b2678d174356ff424eac53da53e17706c43ef871
txtor sol 4vC38p4bz7XyiXrk6HtaooUqwxTWKocf45cstASGtmrD398biNJnmTcUCVEojE7wVQvgdYbjHJqRFZPpzfCQpmUN

Node.js API:

import { Broadcaster } from 'tx-tor-broadcaster';
const br = new Broadcaster(net, tx); // , opts = { socksHost, socksPort, retryLimit }
console.log(`${bold}TOR exit IP:${reset}`, await br.getIP());
const res = await br.broadcast();
if (res) console.log(`${green}${bold}Published${reset} (${res.host}): ${res.txId}`);

Fingerprinting

Fingerprinting is an algorithm that allows to uniquely identify user within the global dataset. For example, if you are using obscure old browser for everything, it's easy to identify you within millions of users.

The app uses popular user agents (package) to populate User-Agent header. If more than 120 days have passed since the dependency was last updated, the package will stop working.

This mitigates only one variable. There are many others:

  • Headers
    • Accept: e.g. text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    • Accept-Encoding: compression support gzip, deflate, br
    • Accept-Language: OS language
  • TLS/SSL settings; indicating supported...
    • TLS protocols e.g. 1.3, 1.2
    • HTTP versions e.g. HTTP2, HTTP3
    • cipher suites e.g. TLS_AES_256_GCM_SHA384 or TLS_CHACHA20_POLY1305_SHA256
    • named groups e.g. x25519, secp256r1, x448, secp521r1, secp384r1
  • Network/TCP settings, possibly MTU/Nagle algorithm status

It has been decided the best way to go is not copying full browser behavior, but instead, just setting the User-Agent header; to ensure Cloudflare is bypassed properly.

Since there are tens of variables that can affect fingerprint calculation, it's non-trivial to set all of them properly. Not only that, we'll need to update the params with every browser update. And we'll still probably miss some minor detail.

  • Let's say there are 1000 people who send TX through Tor using popular browser User Agent
  • Out of them, only 100 will set additional headers like Accept-Language. Many of them will send different information in headers; some will support Enconding, some will not
  • So, the more we mimic a particular browser, the more we increase our fingerprinting vector

To view the data you're leaving, check out httpbin, httpbin ssl, browserleaks and valdikss.

License

MIT License (c) 2022 Paul Miller (https://paulmillr.com)

You might also like...

A web application that allows the user to connect through Unstoppable Domains and claim a small block of the site

A web application that allows the user to connect through Unstoppable Domains and claim a small block of the site

FRAGMENTED Summary A web application that allows the user to connect through Unstoppable Domains and claim a small block of the site. Each user will b

Jan 24, 2022

Detect if a contract has been deployed in the latest (or predefined) block from an address that was previously funded through Tornado.Cash.

🕵️‍♂️ TORN Detector Detect if a contract has been deployed in the latest (or predefined) block from an address that was previously funded through Tor

Dec 24, 2022

Using a RPI 3b+ to create a PT camera accessible through Windows browser and controllable through MQTT

web-camera_PT A Web flask server converts the MJPEG stream from RPI to JPG img using opencv, then display in browser. Controls added to move Camera in

Dec 20, 2022

Theme Redone is a custom WordPress theme starter/framework with its own Gutenberg blocks solution and a CLI that speeds up the block creation process.

Theme Redone is a custom WordPress theme starter/framework with its own Gutenberg blocks solution and a CLI that speeds up the block creation process.

Theme Redone The Framework for Developing Custom WordPress Themes with its own Gutenberg Blocks creation solution. Theme Redone is a custom WordPress

Dec 30, 2022

A small utility server to exchange data and messages between clients. Comes complete with E2E public key encryption

Zenotta Intercom A small utility server to exchange arbitrary data between clients. Comes complete with E2E public key encryption Official documentati

Oct 2, 2022

Journeys is a django based community-focused website that allows users to bookmark URLs (through chrome extension) and share their journeys through timelines.

Journeys is a django based community-focused website that allows users to bookmark URLs (through chrome extension) and share their journeys through timelines.

Journeys is a django based community-focused website that allows users to bookmark URLs (through chrome extension) and share their journeys through timelines. A timeline is a collection of links that share a common topic or a journey of building and learning something new. Users can create timelines, share them publicly, and explore resources.

Jun 13, 2022

Get the latest Flashbots blocks and Flashbots transactions using TypeScript in two lines of code !

mev-blocks-js This package can let you query the Flashbots blocks API easily from any JavaScript or TypeScript project. You can access the Flashbots b

May 14, 2022

A utility for creating toggleable items with JavaScript. Inspired by bootstrap's toggle utility. Implemented in vanillaJS in a functional style.

LUX TOGGLE Demo: https://jesschampion.github.io/lux-toggle/ A utility for creating toggleable dom elements with JavaScript. Inspired by bootstrap's to

Oct 3, 2020

Sample code for ETH Sign In

Sign in with Ethereum Sample code for ETH Sign In at https://acik-kaynak.org/oauth-guzel-peki-ethereumu-denediniz-mi/ The related code for Sign in wit

Jan 2, 2023
Releases(0.1.0)
Owner
Paul Miller
Paul Miller
Trustless BTC-ETH exchange.

# Silver Portal ⚠️ This is an experimental prototype for testnet use only. The basic idea Silver Portal lets you swap ether and bitcoin, trustlessly.

DC 24 Sep 2, 2022
Create, sign & decode BTC transactions with minimum deps.

micro-btc-signer Create, sign & decode BTC transactions with minimum deps. ?? Small: ~2.2K lines Create transactions, inputs, outputs, sign them No ne

Paul Miller 19 Dec 30, 2022
A Twitter filtered search to only get the live broadcasts hosted on Twitter itself, Built using Vanilla JS and Node.js

Twitter Broadcasts Search A Twitter filtered search to only get the live broadcasts hosted on Twitter itself, Built using Vanilla JS and Node.js. Live

Mohammad Mousad 2 Oct 6, 2022
🚀 Send a load of requests with nodejs using cluster and with/without Tor for anonymisation 🙈

Accumulator ?? Send a load of requests with nodejs using cluster and with/without Tor for anonymisation ?? ⚠️ Disclamer, This repo has been created fo

Adrien de Peretti 7 Nov 21, 2022
A UI for burning Solana NFTs and geting back $SOL from the associated token account

A UI for burning Solana NFTs and geting back $SOL from the associated token account

null 14 Oct 9, 2022
Sol-Bin platforms

Solbin What is SolBin Sol-bin is a platform for waste management. To give context about what we are trying to solve Here is a bit background. We have

Ashish Thapa 10 Oct 10, 2022
A tool for increasing the off-by-one bug in ordinal explorers

Breaker of jpegs A tool for increasing the off-by-one bug in ordinal explorers How to break inscription numbers On 2023-05-04 I introduced an off-by-o

null 63 Aug 9, 2023
A block preview that directly displays the block fields, including tabs.

Kirby Block Preview Fields This plugin for Kirby 3 displays the block fields directly in the block preview, including tabs. Inspired by the Kirby Fiel

JUNO 8 May 10, 2023
MultiSafe is a shared crypto wallet for managing Stacks (STX) and Bitcoin (BTC).

MultiSafe MultiSafe is a shared crypto wallet for managing Stacks (STX) and Bitcoin (BTC). Deploy a MultiSafe https://app.multisafe.xyz/ Features Curr

Trust Machines 22 Dec 26, 2022
Create and Host a dark Web Site (Tor Hidden Service)

Tutorial: Hosting a site on Dark Web (Tor Hidden Service) Introduction Before starting, lets clear some questions that might come up in your mind: Wha

Arnav Kumar 16 Oct 18, 2022