Solutions challenges Vortex OverTheWire

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