GithubHelp home page GithubHelp logo

tunneling's Introduction

TUNNELING

Usage example

+ Maison : sudo python3 maison.py localhost 80 9800
           ssh localhost 9800
+ Entreprise : python3 entreprise.py

Bonnes info http://www.binarytides.com/python-socket-programming-tutorial/

Web côté maison

Connection avec le serveur

Lance un serveur qui écoute sur le port 80 tous les packets venant de l'addresse IP de l'entreprise Lorsqu'il reçoit une requette, il accepte la demande de connection et initialise une connection TCP avec le serveur

Lancement de commande SSH

Le script python écoute sur le port ssh 22 du localhost et "copie" les instructions et les encapsule dans en tant que data dans une requette POST de http Il les envoit ensuite vers l'ip

Web côté entreprise

Connection à la maison

Envoit d'une requette SYN à interval régulié vers l'ip/l'adresse de la maison Lorsqu'une connection a été accepté, il envoit son identifiant (ip, nom de machine etc...)

Lancement de commande SSG

Le script écoute ensuite sur le port 22 du localhost et renvoit les réponse de ssh dans un POST Lorsque le script reçoit des POST, il récupère le contenu du message body et effectue un requette ssh sur le port 22 de locahost

Chaque requette doit avoir une expiry date de quelques millisecondes/dans le passé si possible

Formation des paquets

Pour éviter que le proxy ne garde la page en cache

response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
response.headers["Pragma"] = "no-cache" # HTTP 1.0.
response.headers["Expires"] = "0" # Proxies.

Le content sera en text/html

Content-Type:text/html

Il faudra utiliser la taille de contenu

"Content-Length:" TailleDuContenu 

Test

Depuis la racine

python3 -m unittest

Lancement

Attention, a l'heure qu'il est aucuns tests fonctionnels n'ont été réalisés. Tout ce qui suit suppose donc que ca marche.

Il faut bien lancé les scripts sur des machines distinctes car on ne peut pas ouvrir 2 fois le même port (le port 80)

L'envoie d'une requète au client à partir de l'entreprise n'est pas géré.

Sur le poste de l'entreprise il faut lancer : $ python3 servEntreprise.py

Sur le poste du client : $ python3 clientHouse.py

A ce stade, si tout va bien il faut initialiser la connection avec : $ ssh localhost -p 8888 (cf clientHouse.py:155 : listen_port)

Pour éviter la demande des privilèges, le port du serveur http est pour l'instant 8081 cf clientHouse.py:8 : server_port ; servEntreprise.py:97 )

La suite est encore inconnue...

tunneling's People

Contributors

remipouillard avatar rkouere avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.