Au chapitre 56, nous avons vu l’utilisation des sockets en
32 bits pour accéder à une page sur Internet. A l’aide des tests des fonctions
système du chapitre précédent, nous allons voir la même utilisation en 64 bits.
Dans le programme rechMeteo64.s, nous lançons un thread pour exécuter la commande Linux ping pour récupérer l’adresse IP du site de méteoFrance.
En effet, dans le container 64 bits de la version Buster que j’utilise, la
commande Linux host n’existe pas, j’ai donc du utiliser la commande ping pour récupérer l’adresse.
Comme nous l’avons vu au chapitre précedent l’execution de
la commande au travers de execve, ne retourne pas dans le programme appelant. Il
nous faut donc dupliquer la sortie Sysout vers un fichier tampon à l’aide des
appels system pipe (code 59) et dup3(code 24). Ce qui nous permet de récuperer
l’adresse IP dans un buffer et de la convertir pour créer la socket.
Comme en 32 bits, dans la routine envoiRequeteP80 nous ouvrons
la socket (code 198) créons la connexion avec le site (code 203) envoyons la
requête de lecture (code 206) après avoir calculé sa longueur puis lu la
réponse avec le code 207. La lecture s’effectue dans une boucle pour récuperer
tout le contenu de la page.
Vous remarquerez que l'utilisation des instructions cinc et csel permettent de résoudre le remplacement des instructions conditionnelles du type incne ou moveq.
Vous remarquerez que l'utilisation des instructions cinc et csel permettent de résoudre le remplacement des instructions conditionnelles du type incne ou moveq.
Le reste du programme concerne l’analyse et l’extraction des
données qui nous intéressent.
Attention, ce programme ne concerne que les pages des sites
accessibles en http. Pour les sites accessibles en https, il faudra utiliser la
librairie openSSL comme je l’avais fait en 32 bits.
Aucun commentaire:
Enregistrer un commentaire