
Ein Reverse-TCP-Tunnel ermöglicht den Zugriff auf ein Ziel hinter NAT oder Firewall.
shootback ist ein Reverse-TCP-Tunnel, der den Zugriff auf ein Ziel hinter NAT oder Firewall ermöglicht. Reverse-TCP-Tunnel, der es ermöglicht, dass interne Maschinen hinter NAT oder Firewall von außen erreicht werden können. Verbraucht weniger als 1% CPU und 8 MB Speicher bei 800 gleichzeitigen Verbindungen. slaver ist eine einzelne Datei und hängt nur von der Python-Standardbibliothek (2.7/3.4+) ab.

Voraussetzungen:
Herunterladen: git clone https://github.com/aploium/shootback
(optional) Wenn Sie eine einzelne Datei slaver.py benötigen, führen Sie python3 build_singlefile_slaver.py aus
Führen Sie diese Befehle aus:
# 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 --
Ein realeres Beispiel (mit SSL):
Nehmen Sie an, Ihr Master ist 22.33.44.55 (wie im obigen Diagramm)
# 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
Für weitere Hilfe siehe python3 master.py --help und python3 slaver.py --help
Als Daemon ausführen:
nohup python(or python3) slaver.py -m host:port -t host:port -q &
oder:
# 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
Jeder Dienst, der TCP verwendet, ist mit shootback nutzbar. HTTP/FTP/Proxy/SSH/VNC/...
shootback selbst erledigt nur die Übertragung, es handhabt keine Verschlüsselung oder Proxy.
Sie können jedoch einen Drittanbieter-Proxy (z.B. Shadowsocks) als Ziel des Slavers verwenden.
zum Beispiel:
shadowsocks_server<-->shootback_slaver<-->shootback_master<-->shadowsocks_client(socks5)
select.select() kann shootback nicht mehr als 512 gleichzeitige Verbindungen verarbeiten. Sie könnenValueError: too many file descriptors in select() sehen.