grasshopper
Optimize performance for QPP encryption
Grasshopper adalah penerus paket UDP yang mendengarkan paket masuk dan meneruskannya ke tujuan yang dikonfigurasi. Ini secara opsional mendukung kriptografi untuk paket masuk dan keluar, menggunakan kunci dan metode yang berbeda.
Belalang berfungsi sebagai sistem estafet yang dirantai. Ambil kueri DNS berantai Misalnya:
┌────────────┐ ┌───────────────┐
│ ENCRYPTED │ │ RE-ENCRYPTION │
└──────┬─────┘ │ AES ───► 3DES │
│ └───┬───────────┘
│ │
┌─────────┐▼ ┌────────────┐│ ┌─────────┐
<HOP0> HOPS(AES) │ DECRYPTED │▼ <HOP5> HOPS(FINAL)
┌─────────┐ └ ┌────┐ └ DATA HOPS(3DES) │ ┌─┴──┐ ┌────────────┐
│ dig xxx ├─► CLEAR TEXT │HOP1┼── CIPHER ──► PACKET ┌─┴──┐ └ DNS │Hop6├─► 8.8.8.8:53 │
│ @hop0 │ ┌ │Hop2│ (AES) ┌ │Hop4├─ CIPHER ──► QUERY │Hop7│ └────────────┘
└─────────┘ │ ▲ │HOP3│ <HOP2> ▲ │Hop5│ (3DES) ┌ └─┬──┘
│ │ └────┘ │ │ └─┬──┘ │ │
└──┼──────┘ └─────┼──────┘ └─────────┘
│ │
┌──┼────────┐ │
│ │ │
│ OPTIONAL ├──────────────────┘
│ PACKET │
│ PROCESSOR │
│ │
└───────────┘
Instal Grasshopper versi terbaru menggunakan perintah berikut:
go install github.com/xtaci/grasshopper/cmd/grasshopper@latest
Belalang mendukung parameter berikut:
Grasshopper is a UDP packet forwarder that listens for incoming packets and forwards them to a configured destination. It optionally supports cryptography for both incoming and outgoing packets, using different keys and methods. Optionally, the listener can be configured to apply cryptogrraphy on both the incoming and outgoing packets, with different keys and methods.
Usage:
grasshopper [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
start Start a listener for UDP packet forwarding
Flags:
--ci string Cryptography method for incoming data. Available options: aes, aes-128, aes-192, qpp, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, sm4, none (default "qpp")
--co string Cryptography method for incoming data. Available options: aes, aes-128, aes-192, qpp, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, sm4, none (default "qpp")
-c, --config string config file name
-h, --help help for grasshopper
--ki string Secret key to encrypt and decrypt for the last hop(client-side) (default "it's a secret")
--ko string Secret key to encrypt and decrypt for the next hops (default "it's a secret")
-l, --listen string Listener address, eg: "IP:1234" (default ":1234")
-n, --nexthops strings Servers to randomly forward to (default [127.0.0.1:3000])
--sockbuf int Socket buffer size for the listener (default 1048576)
--timeout duration Idle timeout duration for a UDP connection (default 1m0s)
-t, --toggle Help message for toggle
-v, --version version for grasshopper
Use "grasshopper [command] --help" for more information about a command.
Gunakan ncat
untuk memulai server gema UDP pada port 5000:
ncat -e /bin/cat -k -u -l 5000
Jalankan perintah berikut untuk memulai relayer:
./grasshopper start --ci aes --co none -l " 127.0.0.1:4001 " -n " 127.0.0.1:5000 "
--ci aes
: Menerapkan kriptografi pada paket masuk.--co none
: Mentransfer teks biasa ke server gema ncat
.Jalankan perintah berikut untuk memulai relayer lain:
./grasshopper start --ci none --co aes -l " 127.0.0.1:4000 " -n " 127.0.0.1:4001 "
--ci none
: Tidak ada kriptografi yang diterapkan pada paket masuk.--co aes
: Mengenkripsi dan meneruskan paket ke hop berikutnya. Gunakan ncat
untuk mengirim paket UDP dan berinteraksi dengan rantai relayer:
ncat -u 127.0.0.1 2132
┌──────────── YOUR─LAPTOP ──────────────┐ ┌────────── CLOUD─SERVER ───────────┐
│ │ │ │
│ │ │ │
│ ┌───────────────────┐ ┌──────────┐ │ │ ┌──────────┐ ┌───────────────┐ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ dig google.com ├───► Level-1 │ │ │ │ Level-2 ├───► Google DNS:53 │ │
│ │ @127.0.0.1 -p 4000│ │ Relayer ┼──┼ ENCRYPTED ┼─► Relayer │ │ CloudFlare:53 │ │
│ │ │ │ │ │ UDP │ │ │ │ │ │
│ └───────────────────┘ └──────────┘ │ │ └──────────┘ └───────────────┘ │
│ │ │ │
│ │ │ │
└───────────────────────────────────────┘ └───────────────────────────────────┘
./grasshopper start --ci aes --co none -l " CLOUD_PUBLIC_IP:4000 " -n " 8.8.8.8:53,1.1.1.1:53 "
--ci aes
: Mendekripsi paket dari Relayer Level-1.--co none
: Mentransfer paket kueri DNS teks biasa yang didekripsi ke Google DNS../grasshopper start --ci none --co aes -l " 127.0.0.1:4000 " -n " CLOUD_PUBLIC_IP:4000 "
--ci none
: Karena permintaan perintah dig
dalam teks biasa, kita tidak perlu mendekripsi paket.--co aes
: Mendekripsi dan meneruskan paket ke Relayer Level-2dig
(Di Laptop Anda) dig google.com @127.0.0.1 -p 4000