Skip to content

dmitrymodder/minewire-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minewire CLI

A lightweight local proxy client for Minewire - it exposes a SOCKS5 or HTTP CONNECT proxy on your machine and tunnels traffic to a Minewire server disguised as Minecraft protocol traffic.

This is the CLI counterpart to the Minewire server. If you're looking for the Flutter/Android client, that's a separate project. (And frankly speaking, it's partly outdated, so it's better not to use it for now)

Features

  • SOCKS5 or HTTP CONNECT local proxy - point your browser, curl, or system proxy settings at it
  • AES-GCM Encryption - matches the server, keyed from your shared password
  • Minecraft Camouflage - performs a real handshake/login/settings sequence before tunneling
  • Stream Multiplexing - multiple simultaneous connections over one tunnel (yamux)
  • Auto-Reconnect - maintains the tunnel session in the background with bounded backoff
  • Fast / Realistic modes - optionally throttle upload to match a server running in realistic mode

Requirements

  • Go 1.24+ (only if building from source)
  • A running Minewire server and a password that's whitelisted on it

Installation

From a release

Download the binary for your platform from Releases, place it next to client.yaml, edit the config, and run it.

From source

git clone https://github.com/dmitrymodder/minewire-cli.git
cd minewire-cli
go build -o minewire-cli ./src/
./minewire-cli

Configuration

Edit client.yaml:

local_port: ":1080"
server_address: "IP_HERE:25565"
password: "PASSWORD_HERE"
proxy_type: "http"   # "socks5" or "http"

mode: "fast"         # "fast" or "realistic" - should match your server's mode
realistic_bandwidth_kb: 128
realistic_burst_kb: 512
  • proxy_type: "socks5" gives you a plain SOCKS5 proxy on local_port (no auth).
  • proxy_type: "http" gives you an HTTP proxy that supports CONNECT (works for HTTPS and most system-wide "HTTP proxy" settings; plain unencrypted HTTP-only requests aren't proxied in this MVP).
  • mode only matters if the server you're connecting to is also running in realistic mode - throttling only one direction of the tunnel doesn't accomplish anything.

Usage

./minewire-cli

Then point your browser / OS / app at 127.0.0.1:1080 using the proxy type you configured.

Architecture

Components

  • src/main.go - entry point, config loading, local listener startup
  • src/tunnel.go - Minecraft handshake, encrypted yamux tunnel, session management, background camouflage traffic
  • src/proxy.go - SOCKS5 and HTTP CONNECT handlers
  • src/protocol.go - Minecraft protocol primitives (VarInt, String, etc.) - kept in sync with the server's
  • src/throttle.go - token-bucket rate limiter used for realistic-mode upload throttling
  • client.yaml - client configuration

License

MIT

About

A lightweight local proxy client for Minewire protocol

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages