
Cloudflare R2 ऑब्जेक्ट स्टोरेज के माध्यम से टनल किया गया SOCKS5 प्रॉक्सी, जिसमें Python और निर्भरता-रहित C++ एजेंट एन्क्रिप्टेड R2 ऑब्जेक्ट्स के ज़रिए TCP ट्रैफ़िक को रिले करते हैं, गुप्त पहुँच के लिए।
Cloudflare R2 बकेट्स के माध्यम से टनल किया गया SOCKS5 प्रॉक्सी।
[Client App] ◄─SOCKS5─► [Proxy] ◄─── R2 Bucket ───► [Agent] ◄─TCP─► [Target]
प्रॉक्सी ऑपरेटर की मशीन पर एक स्थानीय SOCKS5 सर्वर चलाता है। प्रत्येक CONNECT अनुरोध को बाइनरी पैकेट के रूप में सीरियलाइज़ किया जाता है और R2 ऑब्जेक्ट के रूप में संग्रहीत किया जाता है। एजेंट लक्ष्य नेटवर्क से उसी बकेट को पोल करता है, कनेक्शन अनुरोध उठाता है, वास्तविक TCP कनेक्शन स्थापित करता है, और R2 के माध्यम से डेटा वापस रिले करता है।
| घटक | भाषा | फ़ाइल | विवरण |
|---|---|---|---|
| Proxy | Python | r2socks.py | SOCKS5 सर्वर (ऑपरेटर पक्ष) |
| Agent | Python | r2socks.py | लक्ष्य-पक्ष रिले (एजेंट मोड) |
| Agent | C++ | r2agent.cpp | स्टैंडअलोन Windows एजेंट, शून्य निर्भरताएँ |
C++ एजेंट Python प्रॉक्सी के साथ प्रोटोकॉल-संगत है। यह केवल Windows-नेटिव API (WinHTTP, bcrypt, Winsock2) का उपयोग करता है — किसी बाहरी लाइब्रेरी की आवश्यकता नहीं।
dash.cloudflare.com/<ACCOUNT_ID>/r2/...pip install boto3
python r2socks.py proxy -b my-bucket -a <account_id> \
--access-key <R2_ACCESS_KEY> --secret-key <R2_SECRET_KEY>
प्रॉक्सी एक चैनल ID जनरेट करता है और एजेंट शुरू करने के लिए कमांड प्रिंट करता है।
Python एजेंट:
python r2socks.py agent -b my-bucket -a <account_id> -c <channel_id> \
--access-key <R2_ACCESS_KEY> --secret-key <R2_SECRET_KEY>
C++ एजेंट (Windows):
.\r2agent.exe -b my-bucket -a <account_id> -c <channel_id> -k <access_key> -s <secret_key>
python r2socks.py proxy [options]
Required:
-b, --bucket BUCKET R2 bucket name
-a, --account-id ID Cloudflare account ID
Optional:
-c, --channel ID Channel ID (auto-generated if omitted)
-l, --listen ADDR Listen address (default: 127.0.0.1:1080)
--access-key KEY R2 API token Access Key ID
--secret-key KEY R2 API token Secret Access Key
--socks-user USER Enable SOCKS5 user/pass authentication
--socks-pass PASS SOCKS5 password
-p, --password PWD AES-256-GCM encryption password
-v, --verbose Debug logging
Python:
python r2socks.py agent [options]
Required:
-b, --bucket BUCKET R2 bucket name
-a, --account-id ID Cloudflare account ID
-c, --channel ID Channel ID (from proxy output)
C++ (Windows):
r2agent.exe [options]
Required:
-b, --bucket BUCKET R2 bucket name
-a, --account-id ID Cloudflare account ID
-c, --channel ID Channel ID (from proxy output)
Credentials (flags override env vars):
-k, --access-key KEY R2 API token Access Key ID
-s, --secret-key KEY R2 API token Secret Access Key
Optional:
-v, --verbose Debug logging
काम पूरा होने पर एक चैनल से सभी R2 ऑब्जेक्ट हटाएँ:
python r2socks.py clean -b my-bucket -a <account_id> -c <channel_id>
प्रॉक्सी और एजेंट के बीच साझा बाइनरी पैकेट प्रारूप:
┌──────────┬────────────────────┬────────────┬──────────────────┐
│ CMD (1B) │ ConnectionID (16B) │ Len (4B BE)│ Payload (var) │
└──────────┴────────────────────┴────────────┴──────────────────┘
API कॉल कम करने के लिए कई पैकेट को एक ही R2 ऑब्जेक्ट (4MB तक) में बैच किया जाता है। ऑब्जेक्ट का नाम माइक्रोसेकंड टाइमस्टैम्प के साथ रखा जाता है ताकि क्रम बना रहे, और उपभोग के बाद हटा दिया जाता है।
सभी R2 पेलोड के लिए वैकल्पिक AES-256-GCM एन्क्रिप्शन:
pip install cryptography
# Both sides must use the same password
python r2socks.py proxy -b bucket -a account_id -p "my-secret-password"
python r2socks.py agent -b bucket -a account_id -c channel -p "my-secret-password"
कुंजी PBKDF2-SHA256 का उपयोग करके 600,000 पुनरावृत्तियों के साथ व्युत्पन्न की जाती है।
Visual Studio Developer Command Prompt से:
cl /std:c++17 /EHsc /O2 r2agent.cpp /link ws2_32.lib winhttp.lib bcrypt.lib
प्रॉक्सी और एजेंट दोनों अनुकूली स्लीप अंतराल का उपयोग करते हैं:
यह API कॉल वॉल्यूम के मुकाबले प्रतिक्रियाशीलता को संतुलित करता है। हर 30 सेकंड में आँकड़े लॉग किए जाते हैं जो सक्रिय कनेक्शन, स्थानांतरित ऑब्जेक्ट और स्थानांतरित बाइट्स दिखाते हैं।
SignatureDoesNotMatchw32tm /resync /force (Windows) या sudo ntpdate pool.ntp.org (Linux)RequestTimeTooSkewedw32tm /resync /force
AccessDeniedप्रॉक्सी (Python):
boto3 (आवश्यक)cryptography (वैकल्पिक, एन्क्रिप्शन के लिए)एजेंट (C++):
| कमांड | कोड | दिशा | पेलोड |
|---|
| NEW | 0x01 | Proxy→Agent | ATYP + Address + Port |
| ACK | 0x02 | Agent→Proxy | 1 byte status (0=success) |
| DATA | 0x03 | Bidirectional | Raw TCP data (up to 1MB) |
| CLOSE | 0x04 | Bidirectional | Empty |
| PING | 0x05 | Bidirectional | Empty |