Envoie et réception données sur un service web via programme c++

Signaler
Messages postés
5
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 décembre 2011
-
Messages postés
5
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 décembre 2011
-
Bonjour a tous

Je suis en école d'ingénieur et je developpe en ce moment un programme en c++ travaillant sur le serveur interne de l'école .
Le problème est que le serveur est excéssivement protegé et que pour faire simple il faut que je me rende sur le site web de l'école , m'identifie avec mon identifiant et mot de passe , ce qui me donnera un mot de passe temporaire valable 2 jours , que je devrait fournir pour me connecter au serveur local avant de pouvoir executer mon programme .
J'ai donc editer un code pour faire tout cela au début du programme , tout est OK y comprit la partit fournissant le mot de passe temporaire au serveur , mais IMPOSSIBLE de trouver un moyen d'envoyer mes identifiants dans les champs de textes de la page spécifique du site et de récuperer le mot de passe temporaire fournit .
J'ai fait le tour de pas mal de forum mais tous utilise le ftp pour ce type de manipulation , mais bien que cela soit un projet important je ne pense pas que l'école me fournirait les identifiants ftp

Donc si quelqun voit un moyen quelquonque de faire cela , je suis preneur
Merci pour vos idées

Théo

9 réponses

Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Bonjour.

Regarde du côté de curl, notamment libcurl. Tu devrais trouver ton bonheur :)

un moyen d'envoyer mes identifiants dans les champs de textes de la page spécifique du site

Tu n'as pas besoin d'envoyer physiquement des données dans les champs textes, juste de poster (en GET ou POST) les informations nécessaires à la bonne url.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
5
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 décembre 2011

Bonjour
Merci de cette réponse , j'ai cherché un peu mais j'arrive juste a récuperer le code de la page entiere . N'aurait tu pas un exemple basique de code ?

juste de poster (en GET ou POST) les informations nécessaires à la bonne url.


C'est a dire , sachant qu'il y a plusieurs champs comment savoir ou porter l'info ?

Merci bien
Théo
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

Tu peux passer par libcurl pour simuler un trafique HTTP entre ton application et le serveur qui fournit les mots de passe.
Pour avoir une idée des échanges à réaliser, lancer wireshark, faire la procédure de récup de mot de passe à la main, regarder les requêtes qui sont passées sous wireshark.

Autre solution (Notamment si les échanges sont trops compliqués), utiliser l'ActiveX de IE et simuler l'utilisation normale d'un navigtateur via du code.


Quoiqu'il en soit ce n'est pas forcément une très bonne idée de faciliter une tâche mise en place pour la sécurité d'un serveur.
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Sans forcément passer par wireshark, tu peux tout simplement regarder le code source de la page HTML.

Par exemple, si ton formulaire à cette tête là:
<form action="/login.php" method="post">
  
  
  
</form>


Tu peux déjà savoir que tu dois envoyer en post à l'url "www.tonserveur.com/login.php", une variable "login" qui contient ton nom et une variable "pass" qui contient ton mot de passe.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
5
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 décembre 2011

Bonjour,

Mon formulaire est exactement de ce genre , je sait donc quels sont les valeurs a envoyer a URL , mais comment ?

J'ai essayé quelque chose de ce type

#include <cstdlib>
#include <cerrno>

#include "curlpp.hpp"
#include "Easy.hpp"
#include "Option.hpp"
#include <curlpp/Exception.hpp>

int main(int argc, char *argv[])
{
    if(argc < 2) {
        std::cerr << "Example 11: Wrong number of arguments" << std::endl 
        << "Example 11: Usage: example12 url" 
        << std::endl;
        return EXIT_FAILURE;
    }
    
    char *url = argv[1];
    
    try {
        curlpp::Cleanup cleaner;
        curlpp::Easy request;
        
        request.setOpt(new curlpp::options::Url(url)); 
        request.setOpt(new curlpp::options::Verbose(true)); 
        
        std::list<std::string> header; 
        header.push_back("Content-Type: application/octet-stream"); 
        
        request.setOpt(new curlpp::options::HttpHeader(header)); 
        
        request.setOpt(new curlpp::options::PostFields("login"));
        request.setOpt(new curlpp::options::PostFieldSize(5));
        
        request.perform(); 
    }
    catch ( curlpp::LogicError & e ) {
        std::cout << e.what() << std::endl;
    }
    catch ( curlpp::RuntimeError & e ) {
        std::cout << e.what() << std::endl;
    }
    
    return EXIT_SUCCESS;
}


Mais il me manque pleins de header que je suis obligés de telechargés un par un et de plus cela me semble un peu complexe juste pour un envoi de deux variables non ?

Merci de votre aide
Messages postés
15134
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 septembre 2021
99
Hello,
C'est juste moi ou bien je lis "piratage" entre les lignes de la demande?
Pour tout ce qui à attrait au SI de ton école, tes interlocuteurs privilégiés sont plutôt les admin, non?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
5
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 décembre 2011

Salut Bruno
Piratage de Quoi ? De toute manière le login et le mot de passe que je rentre c'est le mien , je cherche juste une manière automatisé de l'envoyer . Donc je ne voit pas en quoi on peut qualifier sa de "piratage" .
De plus je ne voit pas en quoi les admins de mon école pourait m'aider pour cela !

Théo
Messages postés
15134
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 septembre 2021
99
Hello,
De toute manière le login et le mot de passe que je rentre c'est le mien

ça, c'est toi qui le dit...
Bon, ok, passons. C'était juste pour essayer de voir tes motivations: vu que tu es revenu poster, c'esst bon signe
De plus je ne voit pas en quoi les admins de mon école pourait m'aider pour cela !

Bah, jusqu'à preuve du contraire, ce sont les admins qui ont mis en place le SI, et donc ils connaissent les urls à appeler avec le formatage attendu..

Sinon, voici un code pour une requête POST avec curl
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
5
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
9 décembre 2011

Salut a tous ,
désolé je n'avait pas accès a internet ces derniers temps ;

Merci pour le code , mais j'ai pourtant tout bien vérifié j'ai une erreur qui revient en permanance que je n'arrive a pas a comprendre

Apple Match-O linker (ID)Error
Command /Developer/usr/bin/clang++ failed with exit code 1


Quelqu'un aurait-il deja rencontré ce problème ?
Merci pour vos idées !

A+
Théo