grasshopper
Optimize performance for QPP encryption
Grasshopper هو معيد توجيه حزم UDP الذي يستمع إلى الحزم الواردة ويعيد توجيهها إلى الوجهة التي تم تكوينها. وهو يدعم بشكل اختياري التشفير لكل من الحزم الواردة والصادرة، باستخدام مفاتيح وطرق مختلفة.
يعمل الجندب كنظام تتابع متسلسل. خذ استعلام DNS المتسلسل على سبيل المثال:
┌────────────┐ ┌───────────────┐
│ 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 │
│ │
└───────────┘
قم بتثبيت أحدث إصدار من Grasshopper باستخدام الأمر التالي:
go install github.com/xtaci/grasshopper/cmd/grasshopper@latest
يدعم Grasshopper المعلمات التالية:
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.
استخدم ncat
لبدء خادم صدى UDP على المنفذ 5000:
ncat -e /bin/cat -k -u -l 5000
قم بتشغيل الأمر التالي لبدء الترحيل:
./grasshopper start --ci aes --co none -l " 127.0.0.1:4001 " -n " 127.0.0.1:5000 "
--ci aes
: يطبق التشفير على الحزم الواردة.--co none
: ينقل النص العادي إلى خادم الصدى ncat
.قم بتشغيل الأمر التالي لبدء تشغيل مرحل آخر:
./grasshopper start --ci none --co aes -l " 127.0.0.1:4000 " -n " 127.0.0.1:4001 "
--ci none
: لا يتم تطبيق أي تشفير على الحزم الواردة.--co aes
: يقوم بتشفير الحزم وترحيلها إلى الخطوة التالية. استخدم ncat
لإرسال حزم UDP والتفاعل مع سلسلة الترحيل:
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
: يقوم بفك تشفير الحزمة من Level-1 Relayer.--co none
: ينقل حزمة استعلام DNS ذات النص العادي التي تم فك تشفيرها إلى Google DNS../grasshopper start --ci none --co aes -l " 127.0.0.1:4000 " -n " CLOUD_PUBLIC_IP:4000 "
--ci none
: نظرًا لأن استعلامات أمر dig
في نص عادي، فلا نحتاج إلى فك تشفير الحزمة.--co aes
: يقوم بفك تشفير الحزم وترحيلها إلى Level-2 Relayerdig
(على الكمبيوتر المحمول) dig google.com @127.0.0.1 -p 4000