Upload
zet
View
215
Download
0
Embed Size (px)
Citation preview
7/26/2019 LO14-Linux-TD-6
1/1
LO14
TD N6: NETCAT, le couteau suisse du rseau
1/La commande netcat tablit une connexion avec
un serveur. Tout ce quil lit sur son entre standard,il lenvoie au serveur, et tout ce que le serveur lui
envoie, il lcrit sur sa sortie standard.
netcat offre aussi une fonctionnalit serveur. Dansce mode dutilisation, netcat attend sur un port quunclient se connecte, puis tout ce quil lit sur son entre
standard il lenvoie au client, et tout ce que le client
lui envoie, il lcrit sur sa sortie standard. Le mode
listen est slectionn grce loption -l ; il fautaussi loption -p suivi du numro de port sur lequel
couter.Dans un terminal, lancer netcat en mode serveur surle port 8080 :
netcat -l -p 8080
Dans un autre terminal, lancer un client qui seconnecte ce serveur :
netcat localhost 8080
Maintenant, les lignes que vous entrez dans leterminal serveur apparaissent aussi sur le terminalclient et toutes les lignes que vous entrez dans leterminal client apparaissent aussi sur le terminalserveur.
2/Nous allons raliser un serveur grce un scriptbash.
Etudiez le code du script serveur pour le
comprendre.
Pour pouvoir interagir avec le client, il faut pouvoirlire la sortie standard de netcat pour obtenir lesrequtes du client, et pour chaque requte on veutenvoyer une rponse sur lentre standard de netcat
pour quil la transmette au client.
On peut rsoudre une partie de notre problme enutilisant un tube :
interaction | netcat -l -p PORT
o interaction est une fonction qui crit des rponsessur sa sortie standard.
On veut galement que cette fonction reoive sur sonentre standard les requtes du client: c'est dire ce
qui est crit sur la sortie standard de netcat. Il fautfaire une sorte de boucle pour connecter la sortiestandard du netcat sur la droite lentre standardd'interaction sur la gauche. Ceci peut tre ralisgrce un tube nomm. Le tube nomm est cr parla commande mkfifo. Supposons que $FIFO soit lechemin d'un tube nomm, alors on peut l'utiliser pourrediriger la sortie de netcat dans l'entred'interaction:
interaction < "$FIFO" | netcat -l -p PORT >"$FIFO"
Notez que lorsque "interaction" se termine, lentrestandard de netcat est alors ferme, mais netcat neclos pas pour autant la connexion internet. Pourforcer netcat clore cette connexion ds que sonentre standard est ferm, il faut ajouter l'option -c:
interaction < "$FIFO" | netcat -c -l -p PORT >"$FIFO"
3/2 fonctions sont dj crites (la fonction commande-non-comprise et la fonction quit )
Vous devez crer une nouvelle fonction convert qui transforme un texte en majuscule. Quand le clientenvoie la commande convert avec un argument,largument sera converti en majuscule (utiliser lacommande tr ).
Vous testerez ce serveur en vous y connectant grce netcat. Si vous installez votre serveur sur unemachine distante, il suffit de remplacer localhost dans la commande netcat du client en lui donnantladresse du serveur.