
نفق TCP عكسي يسمح لك بالوصول إلى الهدف خلف NAT أو جدار ناري
shootback هو نفق TCP عكسي يسمح لك بالوصول إلى الهدف خلف NAT أو جدار الحماية
نفق TCP عكسي، يتيح للأجهزة الداخلية خلف NAT أو جدار الحماية الوصول من الشبكة الخارجية.
يستهلك أقل من 1% من وحدة المعالجة المركزية و8 ميغابايت من الذاكرة تحت 800 اتصال متزامن.
slaver هو ملف واحد ويعتمد فقط على مكتبة بايثون القياسية (2.7/3.4+).

المتطلبات:
تحميل git clone https://github.com/aploium/shootback
(اختياري) إذا كنت بحاجة إلى ملف slaver.py واحد، قم بتشغيل python3 build_singlefile_slaver.py
قم بتشغيل هذه الأوامر
# master listen :10000 for slaver, :10080 for you
python3 master.py -m 0.0.0.0:10000 -c 127.0.0.1:10080
# slaver connect to master, and use example.com as tunnel target
# ps: you can use python2 in slaver, not only py3
python3 slaver.py -m 127.0.0.1:10000 -t example.com:80
# doing request to master
curl -v -H "host: example.com" 127.0.0.1:10080
# -- some HTML content from example.com --
# -- some HTML content from example.com --
# -- some HTML content from example.com --
مثال أكثر واقعية (مع SSL):
افترض أن master الخاص بك هو 22.33.44.55 (تمامًا كما في الرسم البياني أعلاه)
# slaver_local_ssh <---> slaver <--[SSL]--> master(22.33.44.55) <--> You
# ---- master ----
python3 master.py -m 0.0.0.0:10000 -c 0.0.0.0:10022 --ssl
# ---- slaver ----
# ps: the `--ssl` option is for slaver-master encryption, not for SSH
python(or python3) slaver.py -m 22.33.44.55:10000 -t 127.0.0.1:22 --ssl
# ---- YOU ----
ssh 22.33.44.55 -p 10022
للمزيد من المساعدة، يرجى الاطلاع على python3 master.py --help و python3 slaver.py --help
التشغيل في الخلفية:
nohup python(or python3) slaver.py -m host:port -t host:port -q &
أو:
# screen is a linux command
screen
python(or python3) slaver.py -m host:port -t host:port
# press ctrl-a d to detach screen
# and if necessary, use "screen -r" to reattach
أي خدمة تستخدم TCP يمكن استخدامها مع shootback. HTTP/FTP/Proxy/SSH/VNC/...
shootback نفسه يقوم فقط بمهمة النقل، ولا يتعامل مع التشفير أو الوكيل.
ومع ذلك يمكنك استخدام وكيل تابع لجهة خارجية (مثل shadowsocks) كهدف لـ slaver.
على سبيل المثال:
shadowsocks_server<-->shootback_slaver<-->shootback_master<-->shadowsocks_client(socks5)
select.select() في CPython،
لا يمكن لـ shootback التعامل مع أكثر من 512 اتصال متزامن، قد تواجهValueError: too many file descriptors in select()