
un tunnel TCP inversé vous permet d'accéder à une cible derrière un NAT ou un pare-feu
shootback est un tunnel TCP inverse qui permet d'accéder à une cible derrière un NAT ou un firewall.
Tunnel TCP inverse permettant d'accéder depuis l'extérieur à une machine du réseau interne située derrière un NAT ou un pare-feu.
Consomme moins de 1% du CPU et 8 Mo de mémoire pour 800 connexions simultanées.
Le slaver est un fichier unique et ne dépend que de la bibliothèque standard de Python (2.7/3.4+).

Prérequis :
Téléchargement : git clone https://github.com/aploium/shootback
(Optionnel) Pour obtenir un fichier slaver.py unique, exécutez python3 build_singlefile_slaver.py
Exécutez ces commandes :
# Le master écoute sur le port :10000 pour le slaver, et sur le port :10080 pour vous
python3 master.py -m 0.0.0.0:10000 -c 127.0.0.1:10080
# Le slaver se connecte au master et utilise example.com comme cible du tunnel
# Remarque : vous pouvez utiliser python2 pour le slaver, pas seulement python3
python3 slaver.py -m 127.0.0.1:10000 -t example.com:80
# Envoi d'une requête au master
curl -v -H "host: example.com" 127.0.0.1:10080
# -- un peu de contenu HTML de example.com --
# -- un peu de contenu HTML de example.com --
# -- un peu de contenu HTML de example.com --
Un exemple plus concret (avec SSL) :
Supposez que votre master soit 22.33.44.55 (comme dans le schéma ci-dessus)
# slaver_local_ssh <---> slaver <--[SSL]--> master(22.33.44.55) <--> Vous
# ---- master ----
python3 master.py -m 0.0.0.0:10000 -c 0.0.0.0:10022 --ssl
# ---- slaver ----
# Remarque : l'option `--ssl` concerne le chiffrement slaver-master, pas SSH
python(ou python3) slaver.py -m 22.33.44.55:10000 -t 127.0.0.1:22 --ssl
# ---- VOUS ----
ssh 22.33.44.55 -p 10022
Exécuter en mode daemon :
nohup python(ou python3) slaver.py -m hôte:port -t hôte:port -q &
ou :
# screen est une commande Linux
screen
python(ou python3) slaver.py -m hôte:port -t hôte:port
# appuyez sur Ctrl+A D pour détacher l'écran
# et, si nécessaire, utilisez "screen -r" pour le rattacher
Tout service utilisant TCP est compatible avec shootback. HTTP/FTP/Proxy/SSH/VNC/...
shootback effectue uniquement le transport, il ne gère pas le chiffrement ni le proxy.
Cependant, vous pouvez utiliser un proxy tiers (par ex. shadowsocks) comme cible du slaver.
Par exemple :
shadowsocks_server<-->shootback_slaver<-->shootback_master<-->shadowsocks_client(socks5)
select.select() dans CPython,
shootback ne peut pas gérer plus de 512 connexions simultanées. Vous pourriez rencontrerValueError: too many file descriptors in select()Pour plus d'aide, veuillez consulter python3 master.py --help et python3 slaver.py --help