یک لانچر ساده و آماده برای اجرای Psiphon over MITM روی ویندوز
📣 جهت دریافت اطلاعات و نکات بیشتر به کانال تلگرامی من مراجعه کنید: @B3hnamR.
⭐ اگر این پروژه براتون مفید بود، Star یادتون نره.
این پروژه برای وقتی ساخته شده که میخوای Psiphon را با یک upstream proxy محلی اجرا کنی، اما آن upstream خودش از تکنیک MITM-DomainFronting استفاده کند. خیلی سادهتر بگم: به جای اینکه Psiphon مستقیم تلاش کند وصل شود، اول درخواستش را به یک Xray محلی میدهد؛ Xray با کانفیگ مخصوص Patterniha مسیرهای لازم را باز میکند، بعد Psiphon از همان مسیر جلو میرود.
اسم درست معماری این حالت:
Psiphon over MITM
چون Psiphon روی MITM سوار میشود، نه برعکس.
این پروژه قرار نیست کل اینترنت را جادویی باز کند. هدفش این است که یک helper تمیز و قابلمدیریت برای اجرای کانفیگ psiphon-helper@patterniha.json روی ویندوز داشته باشی؛ با Start و Stop ساده، لاگ قابلفهم، certificate خودکار و خروجی واضح برای تنظیمات Psiphon.
هسته اصلی ایده، کانفیگها و روش MITM-DomainFronting متعلق به Patterniha است.
لطفاً ریپوی اصلی را ببینید و از پروژه اصلی حمایت کنید:
https://github.com/patterniha/MITM-DomainFronting
این ابزار فقط یک بستهبندی ویندوزی و لانچر سادهتر برای اجرای همان معماری در حالت مخصوص Psiphon است.
- اجرای یککلیکی Psiphon helper: فایل
psiphon-helper@patterniha.jsonمستقیم با Xray داخلی اجرا میشود. - Certificate خودکار طبق آموزش Patterniha: اگر
mycert.crtوmycert.keyوجود نداشته باشند، باcertificate_generator.batنسخه v14 ساخته میشوند. - نصب امن certificate روی Local Machine: فقط
mycert.crtبه Trusted Root اضافه میشود؛mycert.keyخصوصی میماند. - پورت آماده برای Psiphon: خروجی نهایی بهت میگوید در Psiphon چه upstream proxy بزنی.
- لاگ مرحلهای: هر مرحله داخل کنسول و فایل
PsiphonOverMITM.logنوشته میشود. - بدون دستکاری Windows Proxy: این پروژه برای upstream proxy سایفون است، نه set system proxy ویندوز.
- Stop تمیز: PID ذخیره میشود و Stop فقط همان Xray مربوط به این پروژه را میبندد.
مسیر کلی این شکلیه:
Psiphon
-> Upstream Proxy: 127.0.0.1:20808
-> Xray local mixed inbound
-> MITM tunnel / TLS repack
-> Akamai / Fastly fronting routes
-> Psiphon connection
یعنی Psiphon فکر میکند دارد از یک proxy محلی استفاده میکند. آن proxy محلی همان Xray است که با کانفیگ psiphon-helper@patterniha.json بالا آمده. Xray درخواستهای TLS را میگیرد، با certificate شخصی شما MITM میکند، بعد طبق routeهای داخل کانفیگ، ترافیک را با SNI/Front مناسب به مقصد قابل دسترس میفرستد.
پس اگر بخوای خیلی کوتاه توضیح بدی:
Psiphon first connects to local MITM, then MITM helps Psiphon reach its network.
| فایل / فولدر | توضیح |
|---|---|
Run-PsiphonOverMITM.bat |
فایل اصلی اجرای ویندوزی |
PsiphonOverMITM.ps1 |
اسکریپت اصلی مدیریت Start / Stop / Status |
psiphon-helper@patterniha.json |
کانفیگ مخصوص Psiphon از Patterniha |
xray/xray.exe |
هسته Xray داخلی پروژه |
xray/mycert.crt |
certificate عمومی شخصی شما |
xray/mycert.key |
private key شخصی شما، نباید به کسی داده شود |
MITM-DomainFronting-14/Xray-config/certificate_generator.bat |
generator رسمی مورد استفاده برای ساخت certificate |
runtime/ |
فایلهای runtime، pid، config موقت و لاگهای اجرای Xray |
PsiphonOverMITM.log |
لاگ قابل خواندن مراحل اجرای اسکریپت |
برای رفقایی که نمیخوان با ترمینال درگیر بشن، مسیر استفاده اینه:
- پروژه را Extract کن.
- روی
Run-PsiphonOverMITM.batراستکلیک کن. - گزینه Run as administrator را بزن.
- از منو گزینه
[1] Startرا انتخاب کن. - صبر کن تا پیام نهایی را ببینی.
اگر همهچیز درست باشد، خروجی شبیه این میشود:
PsiphonOverMITM is active.
Set Psiphon upstream proxy to: 127.0.0.1:20808
حالا داخل Psiphon در بخش upstream proxy بزن:
Host: 127.0.0.1
Port: 20808
نکته مهم: اگر ویندوز روی سیستم تو اجازه bind روی 20808 ندهد، اسکریپت خودش پورت جایگزین میدهد. در آن حالت حتماً همان پورتی را که اسکریپت چاپ کرده داخل Psiphon وارد کن.
بعد از اجرای فایل bat این منو را میبینی:
[1] Start
[2] Stop
[3] Status
[0] Exit
همهچیز را آماده میکند:
- Xray را چک میکند.
- پورت local upstream را آماده میکند.
- کانفیگ runtime را از
psiphon-helper@patterniha.jsonمیسازد. - certificate شخصی را میسازد یا اگر وجود دارد همان را نگه میدارد.
mycert.crtرا در Local Machine Trusted Root نصب میکند.- Xray را با کانفیگ Psiphon helper اجرا میکند.
- در آخر آدرس و پورت لازم برای Psiphon را چاپ میکند.
Xray مربوط به همین پروژه را stop میکند و PID runtime را پاک میکند.
وضعیت را نشان میدهد:
PsiphonOverMITM: running
Proxy: 127.0.0.1:20808 reachable=True
Log: ...\PsiphonOverMITM.log
اگر reachable=False بود، یعنی Psiphon هنوز نمیتواند به helper وصل شود. اول Stop بزن، بعد دوباره Start کن و پورت چاپشده را دقیق وارد کن.
طبق آموزش Patterniha، برای MITM نیاز به یک certificate شخصی داری. این پروژه دقیقاً همان روند را خودکار میکند.
وقتی Start میزنی:
- اگر
xray/mycert.crtوxray/mycert.keyوجود داشته باشند، همانها استفاده میشوند. - اگر وجود نداشته باشند، اسکریپت از این فایل استفاده میکند:
MITM-DomainFronting-14/Xray-config/certificate_generator.bat
و دو فایل میسازد:
xray/mycert.crt
xray/mycert.key
بعد فقط mycert.crt داخل ویندوز نصب میشود:
Local Machine -> Trusted Root Certification Authorities
mycert.key نصب نمیشود. این فایل private key توست و باید فقط روی سیستم خودت بماند.
هشدار خیلی مهم:
mycert.crt را از کسی نگیر.
mycert.key را به هیچکس نده.
اگر certificate/key را از جای نامطمئن بگیری، عملاً به آن شخص اجازه دادی ترافیک TLS تو را جعل و inspect کند.
نه. این certificate به یک کانفیگ خاص مثل Netlify یا Psiphon قفل نشده. این یک Root CA شخصی برای MITM است. هر کانفیگی که داخل Xray از این دو فایل استفاده کند:
mycert.crt
mycert.key
میتواند certificateهای جعلی لازم را برای MITM تولید کند. برای همین نصب چند certificate مختلف بدون دلیل خوب نیست. این پروژه اگر certificate قبلی وجود داشته باشد، دوباره certificate جدید نمیسازد؛ همان را نگه میدارد و فقط trusted بودنش را چک میکند.
دو دلیل اصلی دارد:
- نصب
mycert.crtداخلLocal Machine Trusted Rootنیاز به دسترسی Administrator دارد. - اجرای تمیز و قابلاعتماد Xray و مدیریت PID روی ویندوز بهتر است با دسترسی کامل انجام شود.
اگر بدون Administrator اجرا کنی، برنامه بهت هشدار میدهد و ادامه نمیدهد.
چون این پروژه مخصوص Psiphon است. ما نمیخواهیم کل سیستم را proxy کنیم. فقط میخواهیم Psiphon در تنظیمات خودش از این upstream استفاده کند.
تنظیم درست داخل Psiphon:
Upstream proxy host: 127.0.0.1
Upstream proxy port: 20808
یا هر پورتی که برنامه بعد از Start چاپ کرد.
لاگ اصلی:
PsiphonOverMITM.log
لاگهای runtime Xray:
runtime/PsiphonOverMITM.out.log
runtime/PsiphonOverMITM.err.log
اگر اتصال Psiphon fail شد، اول Status را بزن. بعد فایلهای log را چک کن. معمولاً مشکل یکی از اینهاست:
- پورت را داخل Psiphon اشتباه وارد کردی.
- به جای
127.0.0.1چیز دیگری زدی. - helper خاموش است.
- ویندوز اجازه استفاده از
20808نداده و برنامه پورت جایگزین داده. - certificate نصب نشده یا با دستکاری دستی خراب شده.
- Psiphon هنوز روی upstream proxy قبلی مانده.
| خطا | معنی ساده | راهحل |
|---|---|---|
reachable=False |
helper روی آن پورت گوش نمیدهد | Start بزن و پورت چاپشده را وارد کن |
Administrator access is required |
فایل را عادی اجرا کردی | Run as administrator بزن |
Certificate generation failed |
generator نتوانسته cert بسازد | وجود xray/xray.exe و فایل generator را چک کن |
Xray config validation failed |
JSON یا نسخه Xray مشکل دارد | Xray 26.4.25 و فایل helper درست را استفاده کن |
Upstream Proxy Error در Psiphon |
Psiphon به helper وصل شده ولی مسیر جواب نداده یا پورت غلط است | Status بزن، پورت را چک کن، Psiphon را restart کن |
اگر میخوای از صفر تست بگیری:
- Stop بزن.
- اگر لازم بود فقط فایلهای runtime را پاک کن.
- فایلهای
mycert.crtوmycert.keyرا فقط وقتی پاک کن که واقعاً میخوای certificate جدید بسازی. - دوباره
Run-PsiphonOverMITM.batرا با Administrator اجرا کن. - Start بزن.
- پورت چاپشده را داخل Psiphon وارد کن.
برای استفاده معمولی لازم نیست هر بار certificate را پاک کنی. یک بار ساخت و نصب کافی است.
MITM یعنی یک Root CA شخصی روی سیستم نصب میشود. این کار برای این روش لازم است، ولی باید دقیق و تمیز انجام شود. این پروژه تلاش میکند فقط certificate شخصی خودت را بسازد و نصب کند. با این حال مسئولیت نگهداری فایلهای certificate با خودت است.
فایل زیر را خصوصی نگه دار:
xray/mycert.key
اگر این فایل دست کسی بیفتد، دیگر آن certificate امن نیست.
- MITM-DomainFronting method and configs: Patterniha
- Windows helper and packaging: @b3hnamrjd
- Telegram Channel: B3hnamR
اگر بخوام خیلی ساده بگم:
Run-PsiphonOverMITM.bat را با Administrator اجرا کن.
Start بزن.
در Psiphon بزن 127.0.0.1 و پورتی که برنامه چاپ کرده.
وصل شو.
همین.