پروژه ی زفیر (Zephyr) یک راهکار پیشرفته و بهینهسازی شده برای تونل کردن ترافیک شبکه (SOCKS5) از طریق پلتفرمهای ذخیرهسازی ابری مانند گوگل درایو است. این ابزار با بهرهگیری از ترافیک قانونی API، امکان ارتباط مطمئن و پنهان در محیطهای محدود شده را فراهم میکند.
پروژه اصلی: تمامی اعتبارات مربوط به ایده، پروتکل و معماری اصلی این سیستم متعلق به پروژه FlowDriver است. Zephyr با الهام مستقیم از این کار ارزشمند و با هدف بهینهسازی و توسعه بیشتر پیادهسازی شده است.
این پروژه صرفاً برای استفاده شخصی و اهداف تحقیقاتی در نظر گرفته شده است. لطفاً از آن برای مقاصد غیرقانونی استفاده نکنید و در محیطهای عملیاتی (Production) از آن استفاده نشود. نویسندگان هیچ مسئولیتی در قبال سوء استفاده از این ابزار ندارند.
نحوه عملکرد Zephyr به این صورت است که از یک پوشه در فضای ابری به عنوان یک صف دادههای پرسرعت استفاده میکند:
۱. کلاینت: درخواستهای SOCKS5 محلی را دریافت، آنها را تجمیع (Multiplex) و در قالب یک پروتکل باینری با فشردهسازی Zstd بستهبندی میکند. این «بستههای» باینری در یک پوشه خاص در گوگل درایو آپلود میشوند.
۲. سرور: به طور مداوم پوشه درایو را پایش (Poll) میکند. با یافتن درخواست جدید از کلاینت، آن را دانلود کرده، یک اتصال TCP واقعی به مقصد برقرار میکند و نتیجه را در قالب فایلهای پاسخ فشرده به درایو بازمیگرداند.
پروژه Zephyr اکنون به دو روش میتواند ترافیک شما را از سد محدودیتها عبور دهد:
۱. مود script: استفاده از Google Apps Script (GAS). سرعت بالاتر، تاخیر کمتر، و بدون اشغال حجم Google Drive.
۲. مود driver: استفاده از آپلود مستقیم در Google Drive. بسیار امن و پنهان.
(نکته: سرور به صورت هوشمند و بدون نیاز به تنظیمات، همزمان هر دو روش را شنود میکند!)
- زبان Go (نسخه ۱.۲۵ یا بالاتر)
- فایل اعتبارنامه (OAuth2): به یک فایل
credentials.jsonاز Google Cloud Console نیاز دارید.
۱. فعالسازی API: به Google Cloud Console بروید، یک پروژه بسازید و Google Drive API را فعال کنید.
۲. تنظیم صفحه رضایت (Consent Screen): به بخش "APIs & Services" > "OAuth consent screen" بروید. نام برنامه و ایمیل پشتیبانی را وارد کنید.
۳. ساخت اعتبارنامه: به بخش "Credentials" > "Create Credentials" > "OAuth client ID" بروید. نوع برنامه را Desktop App انتخاب کنید.
۴. دانلود فایل JSON: فایل کلاینت سکرت (Client Secret) را دانلود کرده و نام آن را به credentials.json تغییر دهید.
۵. انتشار برنامه (پیشنهادی): اگر وضعیت برنامه روی "Testing" باشد، توکن شما هر ۷ روز منقضی میشود. در صفحه OAuth consent screen روی دکمه "Publish App" کلیک کنید تا دسترسی برای اکانت شما دائمی شود.
go build -o bin/client ./cmd/client
go build -o bin/server ./cmd/serverاگر قصد استفاده از مود سریع (script) را دارید، باید کد موجود در پوشه apps_script را در حساب گوگل خود مستقر کنید:
۱. به Google Apps Script بروید و روی New Project کلیک کنید.
۲. محتویات فایل apps_script/Code.gs را کپی کرده و در ادیتور گوگل پیست کنید.
۳. در خط اول اسکریپت، آدرس IP سرور خود را در متغیر SERVER_URL جایگزین کنید:
const SERVER_URL = 'http://YOUR_SERVER_IP:1080/push';۳. پیکربندی (Zero-Config)
قابلیت "پیکربندی صفر": اگر مقدار google_folder_id را در فایلها خالی ("") بگذارید، کلاینت در اولین اجرا خودش پوشه Zephyr-Data را در گوگلدرایو شما میسازد و کُد آن را در فایل تنظیمات ذخیره میکند!
شما میتوانید با تغییر مقدار mode بین دو حالت جابجا شوید:
برای حالت (Google Apps Script):
سمت کلاینت (client_config.json):
{
"listen_addr": "127.0.0.1:1080",
"mode": "script",
"gas_ids": [
"YOUR_SCRIPT_ID"
],
"gas_key": "YOUR_GAS_KEY",
"google_folder_id": "",
"transport": {
"TargetIP": "216.239.38.120:443",
"SNI": "www.google.com",
"HostHeader": "www.googleapis.com",
"InsecureSkipVerify": false
}
}
(اگر حالت driver را میخواهید، کافیست مقدار mode را به "driver" تغییر دهید).
برای حالت (Google Drive):
سمت کلاینت (client_config.json):
{
"listen_addr": "127.0.0.1:1080",
"mode": "driver",
"gas_ids": [],
"gas_key": "",
"google_folder_id": "YOUR_FOLDER_ID",
"transport": {
"TargetIP": "216.239.38.120:443",
"SNI": "www.google.com",
"HostHeader": "www.googleapis.com",
"InsecureSkipVerify": false
}
}
سمت سرور (server_config.json):
{
"listen_addr": ":1080",
"gas_key": "YOUR_GAS_KEY",
"google_folder_id": "YOUR_FOLDER_ID"
}
استفاده از چندین اسکریپت آیدی :
{
"gas_ids": [
"YOUR_SCRIPT_ID_1",
"YOUR_SCRIPT_ID_2"
]
}
پروژه از سیستم امنیتی OAuth2 "3-Legged" استفاده میکند. این کار را فقط یک بار روی کامپیوتر خودتان انجام میدهید:
۱. کلاینت را اجرا کنید: ./bin/client -c client_config.json -gc credentials.json
۲. یک لینک طولانی در ترمینال ظاهر میشود. آن را در مرورگر خود باز کنید.
۳. وارد حساب گوگل خود شوید و اجازه دسترسی را بدهید.
۴. مرورگر شما را به آدرسی مثل http://localhost/?code=4/1AX... هدایت میکند (خطای عدم بارگذاری صفحه طبیعی است).
۵. کل لینک را از نوار آدرس کپی کرده و در ترمینال Paste کنید و Enter بزنید.
۶. تبریک! یک فایل .token در کنار فایل credentials.json ساخته شد. از این پس استارتآپ کاملاً سایلنت و خودکار خواهد بود.
سرور شما برای اجرا نیازی به مرورگر ندارد و از توکنی که شما ساختید استفاده میکند:
۱. فایل credentials.json و فایل .token که در مرحله قبل ساخته شد را به سرور منتقل کنید.
۲. کلاینت خود را روی سیستم محلی یک بار خاموش و روشن کنید تا پوشه را در گوگل بسازد. فایل client_config.json را باز کنید؛ میبینید که فیلد google_folder_id با یک شناسه (مثلاً 1A2b3C...) پر شده است!
۳. آن شناسه را کپی کرده و دقیقاً داخل server_config.json روی سرور قرار دهید.
۴. سرور را اجرا کنید: ./bin/server -c server_config.json -gc credentials.json
۵. سرور بلافاصله و به صورت همزمان روی درگاه GAS (پورت 1080) و درایو شروع به شنود میکند. کار تمام است!