Blog d'un Éternel Geek

Python s'amuse au serveur sur votre PC

http://vivageek.com/data/images/dev/serveur-python4.jpg

 

Dernièrement, je regardais un peu le codage sur python et surtout la partie serveur. Je reste encore stupéfait parfois des possibilités de ce langage et je ne m'étonne plus qu'il concurrence PHP dans son domaine de prédilection la programmation orientée objet (POO).

 

En effet, python est tellement implicite par le fait qu'il ressemble à un langage fait pour écrire des algorithmes.

 

"Très expressive, celle de Python le fait ressembler au pseudo-langage que l'on utilise pour décrire le plus succinctement possible des algorithmes, si bien qu'un programme est quatre ou cinq fois plus court que son équivalent à Java", explique Tarek Ziadé (photo), architecte chez. Emencia.

 

 

Même objectivité, simplicité dans l'écriture et surtout, se fonde dans la logique même du langage algorithmique, si cela ne vous convainc pas, je vous exhorte alors à essayer Ruby qui est encore plus simple, juste plus discret.

 

Si malgré tout, il vous faut des preuves par cinq, essayer le framework Django totalement écrit en python et vous serez rapidement séduit.

 

 

Bref, revenons à notre serveur. En cherchant, je me suis rendu compte qu'avec peu de moyens, on pouvait rapidement créer un mini-serveur, qui nous permet non seulement de partager nos fichiers, mais en plus peut servir de test web.

 

 

Exit Wamp, Xamp, Easyphp et Cie, une ligne de code (si si vous avez bien lu) et c'est fini. En fait, il ne suffit que de 10 secondes pour avoir son serveur maison.

 

Ouvrez un terminale, puis aller (sur Windows) vers le répertoire où est placé votre python puis entrer la commande suivante.

 

Alors voici la fameuse ligne de code :

 

 

python –m http.server 8000

 

 

Pour faire simple, sur cette ligne on demande python (bon on avait compris), ensuite on invoque le module (-m) http.server (Python 3X) et finalement on lui indique un port de sortie 8000.

 

 

http://vivageek.com/data/images/dev/serveur-python1.png

 

 

Cela fonctionne aussi bien sur Windows que sur Linux, c'est cela aussi Python une magnifique portabilité entre tous les OS.

 

De plus il est « chrooté » au répertoire dans lequel vous l’aurez lancé – essayer d’accéder a http://127.0.0.1:8000/../ vous laissera dans le répertoire courant.

 

Pour ne pas en rester la, je vous invite à aller plus loin et voici un script simplissime :

 

#!/usr/bin/python3
# -*-coding:Utf-8 -*
# importation des librairies
import http.server
def start_server(port=8000, bind="", cgi=False):
   if cgi==True:
       http.server.test(HandlerClass=http.server.CGIHTTPRequestHandler, port=port, bind=bind)
   else:
       http.server.test(HandlerClass=http.server.SimpleHTTPRequestHandler, port=port, bind=bind)
start_server() #If you want cgi, set cgi to True e.g. start_server(cgi=True)

 

 

Ce script vous permettra de lancer le serveur, sans besoin d'ouvrir un terminale, juste en lançant le script. Vous pouvez changer le port 8000 par celui que vous désirez.

 

Dans le même esprit celui-ci exécute la même chose, je les récupérais sur apprendre-python et je l'ai légèrement amélioré afin de sélectionner le PORT et le signaler :

 

#!/usr/bin/python3
# -*-coding:Utf-8 -*
import http.server
PORT = int(input ("Tapez le port désirez : "))
server_address = ("", PORT)
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["//"]
print("Serveur actif sur le port :", PORT)
httpd = server(server_address, handler)
httpd.serve_forever()

 

 

Son utilisation est diverse mais surtout attention, car il peut être utilisé pour défier les failles de sécurité et installer des fichiers malveillants sur votre système à l'instar de DNSTEAL.

 

 

Dnsteal est un outil d'exfiltration de données via des requêtes DNS pour envoyer furtivement des fichiers à partir de requêtes DNS. Une fois l'installation et l'exécution avec succès, il agit comme un faux serveur DNS qui vous permet d'extraire des fichiers à partir furtivement de la machine de la victime par le biais de simples requêtes DNS.

 

 

Dans ce cas, il utilise socket et le module request pour infirmer un serveur DNS. Comme quoi tous les chemins sur Python mènent à un serveur.

 

http://vivageek.com/data/images/dev/serveur-python3.png

 

 

python dnsteal.py 127.0.0.1 –z

 

Le script étant essentiellement codé pour v2.7, j'ai recodé une version pour v3.5, si certains sont intéressés je la mettrais sur mon compte.

 

Conclusion

 

Vous avez pu constater la facilité pour avoir son serveur local avec python. De plus, en important par exemple le module CGI et en créant un index.py mêlant du python et de l'HTML, on pourra rapidement créer une page HTML de présentation.

 

 

http://vivageek.com/data/images/dev/serveur-python.png

 

 

Là vous avez un exemple plus avancé travaillé sur de l'HTML5, CSS3 et python le tout dans un dossier placer en l'occurrence dans mon local python.

 

 

J'espère vous avoir fait découvrir une nouvelle façon de parler web différent des standards PHP, SQL, MYSQL. Ce qui est merveilleux avec l'informatique en général, c'est que l'on découvre tous les jours de nouvelles manières de communiquer.

 

 

Mais il est également puissant, car sa portabilité permet de créer des scripts pouvant combiner l'alliance du web et du système et donc par conséquent de détériorer ou infiltrer facilement et rapidement les systèmes.

 

Merci de m'avoir lu, à bientôt.






 Geek me     Je suis un Geek dans l'âme. 18 ans à silloner internet pour récolter des informations afin de comprendre son fonctionnement. Idéalement j'étudie également le comportement humain.

C'est afin de vous partager mes connaissances que j'ai ouvert ce blog alors je vous souhaite une bonne lecture.



À lire également


Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée.

Quelle est la quatrième lettre du mot uxvvs ? :