Skip to content

patterniha/QS-Tunnel

Repository files navigation

QS-Tunnel

Send data with DNS-Query, Receive data with IP-Spoofing

آموزش موقت

خب قبل از اینکه برنامه اندروید هم آماده شه و یه آموزش کامل قرار بدم بنابر درخواست های زیادی که بود گفتم یه آموزش موقت قرار بدم تا با نحوه برقرای تونل آشنا بشین. برای اندروید موقت میتونید کد پایتون رو مستقیم با termux اجرا کنید. کد کامل تست شده و بدون مشکل در حال حاضر کار میکند فقط اپ اندرویدی و قرار دادن log و موارد اینچنینی باقی مانده وگرنه عملکرد کد تکمیل شده. پیدا کردن سرور خارج قابل اسپوف و همچنین dns مناسب از چالشهایی هست که بعدا سعی میکنم راهنمایی های بیشتری در این مورد داشته باشم. قبل از هر چیز اگه این برنامه بهتون کمک کرد که به اینترنت آزاد دسترسی داشته باشین ممنون میشم اگه در توانتون هست حمایت مالی هم انجام بشه تا برای پروژه های بعدی که در پیش دارم (sni-spoofing و ...) انگیزه بیشتری داشته باشم.

USDT (BEP20): 0x76a768B53Ca77B43086946315f0BDF21156bF424

این تونل صرفا یک udp-forwarder هست و برای دسترسی به اینترنت شما نیاز به یک reliable data transfer over udp مثل hysteria یا xhttp-h3 یا مثلا wireguard دارید.

توضیحات بیشترش در readme پروژه QQ-Tunnel داده شده و من دیگه مواردی که اونجا توضیح داده شده رو نمیگم.

https://github.com/patterniha/QQ-Tunnel

خب برنامه دو حالت داره:

۱. حالت تونل (تک کلاینت):

ابتدا توجه کنید که سرعت اپلود برای هر کلاینت پایین میباشد (حدود ۱ مگابیت) و بنابراین کاربران زیادی را نمیتوان در حالت تونل پشتیبانی کرد. برای تعداد کاربران بالا باید از حالت مستقیم استفاده کرد تا هر کاربر سرعت اپلود مجزای خود را داشته باشد. در حالت تونل سمت کلاینت در یک سرور ایران اجرا میشه و mode رو در هر دو طرف باید "1-1" قرار بدین. پنل کاربری روی سرور ایران باید نصب شه و برای ارتباط بین کاربران و سرور ایران از هر پروتوکلی میتونید استفاده کنید و فقط برای اوتباند به جای مستقیم باید اوتباند پروکسی (hysteria/xhttp-h3/wireguard) که مثالهاشم در examples قرار داده شده رو قرار بدید (توجه کنید ادرس پروکسی باید به h_in_address اشاره کند).

در سمت سرور نیز فقط باید کد سمت سرور اجرا شه و h_out_address به اینباند پروکسی اشاره میکنه.

۲. حالت مستقیم (چند کلاینت):

ابتدا توجه کنید که حالت مستقیم روی اینترنتهای همراه (که پشت cgnat هستند و سورس پورت را تغییر میدهند) قابل اجرا نیست و فقط روی اینترنتهای خانگی قابل اجراست. در این حالت نیازی به سرور ایران نمیباشد و کاربر مستقیم (البته با واسطه ی dns-resolver برای اپلود) به سرور خارج وصل میشود. در هر دو سمت mode باید برابر "n-1" باشد. اینباند پنل و همچنین اوتباند کاربر باید hysteria/wireguard/xhttp-h3 باشد (مثالهاش در فولدر examples قرار داده شده)

همچنین در اندروید مثلا اگر از v2rayNG استفاده میکنید باید برنامه ای که کد پایتون را اجرا میکند را exclude کنید (همچنین ادرس پروکسی باید به h_in_address اشاره کند)

///

برای تست dns اسکنرهای زیادی وجود دارد و دیگه من اسکنر جدایی فعلا ننوشتم توجه کنید که طول بیشتر dns ها به 99/101/151 برای بعضی از query-type ها محدود شده است بنابراین باید یا حداکثر طول دامنه رو کم قرار بدید یا query_type رو عوض کنید (A=1,NS=2,...).

برای تست ip-spoofing نیز میتونید از spoof_udp_test.py استفاده کنید (اگر سمت کلاینت پشت nat قرار دارد باید قبلش nat_keep_alive_test.py رو در سمت کلاینت اجرا کرده باشین).

ای پی (و پورتی) که قرار است از سمت سرور اسپوف شود را خود کاربر در سمت کلاینت تعیین میکند و به سرور اطلاع میدهد (fake_send_ip و fake_send_port) همچنین info_encryption/decryption_pass باید در هر دو سمت یکسان باشد و فقط برای رمز کردن اطلاعاتی که کاربر به سمت سرور میفرستد (شامل ip و port که قرار است اسپوف شود و ip پابلیک کاربر و portی که قرار است اطلاعات از سمت سرور به ان ارسال شود) استفاده میشود.

کاربر میتواند ip پابلیک خود را به صورت دستی وارد کند و یا اینکه مقدار my_public_ip را برابر یکی از مقادیر "ezping" , "ipnumberia" , "ipmyp" قرار دهد تا از سرویسهایی با همین نام برای بدست اوردن ip پابلیک استفاده شود.

سایر موارد کانفیگ در QQ-Tunnel توضیح داده شده است و در نهایت در سمت کلاینت بعد از جای گزاری مقادیر در config_client.json دستور python main_client.py را اجرا کنید و در سمت سرور نیز پس از جایگزاری مقادیر در config_server.json دستور python main_server.py را اجرا کنید (برای اجرا نیاز به پایتون حداقل 3.12 میباشد همچنین سمت سرور نیاز به کتابخانه numba دارد و سمت کلاینت نیز در صورت استفاده از "سرویسهای تعیین ip پابلیک" نیاز به کتابخانه aiohttp دارد)

حمایت فراموش نشود به امید روزهای روشن.

https://t.me/projectXhttp

https://t.me/patterniha

About

Send data with DNS-Query, Receive data with IP-Spoofing

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages