Les sockets et le protocole HTTP

Les sockets et le protocole HTTP

Bon, nous allons commencer par la base 😀

Les sockets

Un socket est un flux de communication entre deux objets que nous nommerons “Client” et “Serveur” dans le cadre du projet. Le Client va demander un droit de crĂ©er un canal de communication avec le Serveur, puis, si celui ci accĂšpte, le Client et le Serveur pourront communiquer.
En C++, C#, Java, etc… les fonctions sont quasi-identiques. Cela consiste :

  • CrĂ©er un objet Socket
  • Le paramĂ©trer (TCP, Internet, etc… et le Host, le port)
  • Lancer la demande pour le client ou se mettre en “Listen” pour le serveur
  • Les fermer et les dĂ©truires

Le mode listen est le mode du Serveur qui consiste Ă  attendre une demande de connection d’un Client. Celle ci est souvent bloquante bien que certaines alternatives avec CallBack ou Non bloquante existe.
Le socket est la base d’internet comme du rĂ©seau local…
Voici un Client – Serveur de chat simple sur Developpez.com :http://stephaneey.developpez.com/tutoriel/dotnet/sockets/

Le protocole HTTP

Le protocole HTTP, si vous passez outre la partie rĂ©seau s’avĂšre assez simpliste. Voici une version du RFC de l’ancien salemioche.net : http://www.iprelax.fr/http/1945tm.php
En quoi consiste la petite partie du protocole qui nous intéresse pour notre projet ? Voici ce que doit faire notre programme :
Une fois connecté, lui envoyer une demande de page en envoyant tout simplement une string avec

GET NomDeLaPage HTTP/1.1
host: alphablog.org
(Double retour chariot pour finir)

et la réponse est du style

HTTP/1.1 200 OK
Date: Thu, 20 Dec 2001 17:11:50 GMT
Server: Apache/1.3.19 (Unix) PHP/4.0.6
Last-Modified: Thu, 20 Dec 2001 16:36:22 GMT
ETag: "2cb9e7-61c-3c221386"
Accept-Ranges: bytes
Content-Length: 1564
Connection: close
Content-Type: text/html
X-Pad: avoid browser bug
<html><head>
...(Suite et fin)

Enfin nous rĂ©cupĂ©rons le code renvoyĂ© par le Serveur, nous le parsons et nous en extrayons les cookies, les sessions, les liens html etc…
Je vous laisse le plaisir de dĂ©couvrir les joies d’extraire tout ces petits champs et si le malheur s’abat sur vous, la chance de dĂ©couvrir les “serveurs caches”.
Autre difficultĂ©, trouver dans le RFC les “nomenclatures” de fin de paquet par exemple, de sĂ©paration entre paquet systĂšme et paquet utile (entre le “HTTP/1.1 200 OK…” et le “<html>…”) et aussi la mĂ©thode d’envoie des paramĂštres POST et GET qui ne sont pas si compliquĂ©s.

Application a Ogame

But de la manoeuvre : faire croire a Ogame qu’on joue… Pour cela, rien de plus simple, on va :
– Se connecter Ă  lui
– RĂ©cupĂ©rer des pages et envoyer des demandes pour :
— Simuler une identification et rĂ©cupĂ©rer les Session gĂ©nĂ©rĂ©s par php
— GĂ©nĂ©rer les paquets d’affichage des pages, les rĂ©cupĂ©rer et les parser.
– Fermer proprement la session et enfin le socket.

Outils utiles (indispensables)

Les plugins de firefox qui affichent/modifient les paquets ou un bon sniffer avec décryptage de paquet HTTP (gzip entre autre).
Un peu de patiente.
Si vous avez des questions, postez Ă  la suite une question consise et complĂšte et je tacherais d’y rĂ©pondre.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *