Table des matières
Objectif
Renvoyer une chaine de caractères dans l’ordre inverse. La chaine est fournie par un serveur distant avec lequel nous pouvons interagir / envoyer des messages.
Solution
- Création d’une socket pour se connecter au serveur.
- À la reception de données identifier et extraire la chaine qu’il faut inverser.
- Envoyer au serveur la chaine inversée + un retour à la line pour obtenir de nouvelles valeurs de la part du serveur.
Fichier solution.js
:
const net = require('net');
const client = new net.Socket(); // creation de la socket
client.setEncoding('UTF8'); // echange de textes
client.connect(4000, 'localhost', () => console.log('connected')); // connection au serveur distant
client.on('data', function(data){ //lors qu'on recoit des données
const line = data.split('\n').filter(l => l.indexOf('>>>') === 0)[0]; // on cherche une ligne qui commence par '>>>'
if(line){ // si une ligne est trouvée
client.write(line.substring(4).split("").reverse().join("")+'\n'); // on extrait juste le texte, on fait l'inversion et on transmet au serveur
}
console.log(data) // on affiche les valeurs du serveur
});
Execution
$ node solution.js
>>> ANSSI
Well done, continue!
>>> Agence
Well done, continue!
>>> nationale
[............]
Well done, continue!
>>> OMghTQCW7Yd5siwGln8VfXQqDWhjjsJx
Well done, continue!
Congratulations!! Here is your flag:
FCSC{7b20416c4f019ea4486e1e5c13d2d1667eebac732268b46268a9b64035ab294d}