NES
Vous vous souvenez sûrement de cette astuce qui permettait de créer un serveur web en une seule ligne de code Python, proposée à l'époque par Crashdump. Et bien sachez que ce dernier nous en présente aujourd'hui une nouvelle. Et ce coup-ci, plus besoin de python car la technique fait tout simplement appel à la commande netcat.

Voici un exemple d'utilisation. Ici, on affiche le contenu d'une page HTML choisi à l'avance. Attention, si votre système d'exploitation utilise la version BSD de Netcat (ex: ubuntu), il faudra supprimer l'argument "-p" :

while true; do nc -l -p 8080 < index.html; done

On pourra ensuite saisir cette adresse pour consulter la page :

http://localhost:8080

Les requêtes des navigateurs seront automatiquement loggées dans le terminal :

GET / HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100330

Bien entendu, à partir de là, il est possible de faire des choses bien plus sophistiquées, comme notamment afficher la liste des processus de façon dynamique :

while true; do echo "<pre>$(ps aux)</pre>" | nc -l 8080; done


11 Commentaires pour "Un serveur web avec la commande Netcat"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Petite correction pour ton deuxième exemple:
    while true; do echo "$(ps aux)" | nc -l -p 8080; done

    Gatien , le 4 mai 2010 à 10:23
  •  

    @Gatien : si tu enlève les balises HTML de pré-formatage, les processus sont affichés sur une seule ligne...

    pti-seb , le 4 mai 2010 à 13:30
  •  

    @pti-seb ça pas l'aire de marcher la commande avec netcat ... et concernant la premier avec python .elle très dangereuse: si tu lance la commande à partir de la racine tu à accès à tout : (/etc/shadow /etc/passwd ... :) un bug ? )

    momito , le 4 mai 2010 à 19:00
  •  

    @momito : oui la commande python comporte un risque, mais c'est pas non plus tout le monde qui va utiliser ce genre d'astuce. Pour netcat, tu doit avoir un problème quelque part chez toi...

    pti-seb , le 4 mai 2010 à 19:19
  •  

    $ netcat -l -p 8080 l'option -p marche pas... assez bizarroïde , il suffit de faire ceci netcat -l 8080

    momito , le 4 mai 2010 à 20:07
  •  

    @momito : oui, c'est ce qui est indiqué dans l'astuce. Si ta distribution utilise la version BSD de netcat, il faut enlever l'argument. Tu utilise qu'elle distribution d'ailleurs ?

    pti-seb , le 4 mai 2010 à 20:19
  •  

    Ubuntu lucid (10.04).

    momito , le 4 mai 2010 à 20:25
  •  

    @momito : ok, je vais rajouter ça en exemple.

    pti-seb , le 4 mai 2010 à 20:47
  •  

    @momito : python n'aura pas accès à tout, puisque tu ne lances pas cette commande en root, n'est-ce pas ? :-)

    toto , le 4 mai 2010 à 22:23
  •  

    @toto : oh que oui , crois moi ! tu a absolument accès à tout

    momito , le 5 mai 2010 à 19:04
  •  

    Hmmm. Intéressant.
    Comment fait-on pour connaître la version de nc qu'on a ?
    Un ldd c'est bon ?

    marc , le 4 janvier 2011 à 21:15

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum