Solution de GuillaumeNachury pour A l'envers

intro misc algo

19 décembre 2023

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}