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 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 avecGET 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.Original article available at http://www.alphablog.org
Aucun commentaire:
Enregistrer un commentaire