(Français) Solutions challenges Vortex OverTheWire

Sorry, this entry is only available in French.

Je continue avec les “challenges” du site OverTheWire. Une fois les exercices bandits (les plus simples selon le site du Club*Nix) de finis, je commence les challenges Vortex.

Challenges Vortex

Niveau 0 -> 1
Pour ce connecter à la machine de challenge il est pour cet exercice nécessaire d’obtenir le mot de passe. On nous informe qu’un serveur écoute sur le port 5842 à l’adresse vortex.labs.overthewire.org. Lors d’une connexion sur ce port, le serveur nous renvoie 4 Unsigned Integer. Pour obtenir les identifiants de connexion, il faut lui renvoyer la somme de ces 4 nombres. Il est nécessaire ici de programmer un petit peu. J’ai donc programmé en python (le python étant à mon goût plus adapté pour résoudre ce type de problème) de la manière suivante.
Créer la socket, se connecter à l’hôte, une boucle pour recevoir les données que l’on extrait avec unpack, la somme et l’envoi de la réponse que l’on borne à un Unsigned Integer.

Code du programme


#!/usr/bin/python

import sys
import struct
from socket import *
serverHost = sys.argv[1]
serverPort = int(sys.argv[2])
s = socket(AF_INET, SOCK_STREAM)
s.connect((serverHost, serverPort))
sum = 0
numb = 0
for i in range(4):
        data = s.recv(4)
        numb = struct.unpack("<I",data)[0]
        print "Number recv: %d" % numb
        sum+=numb
print "Sum equal to: %d" % sum
s.send(struct.pack("<I",sum & 0xFFFFFFFF))
print s.recv(1024)
s.close()

Retour d’exécution


 root@raspberrypi:~/overthewire/vortex ./vortex0.py vortex.labs.overthewire.org 5842
Number recv: 513251643
Number recv: 1067957473
Number recv: 1980372285
Number recv: 1569784930
Sum equal to: 5131366331
Username: vortex1 Password: Gq#qu3bF3