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

tofile Messages postés 5 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 9 décembre 2011 - 19 nov. 2011 à 04:07
tofile Messages postés 5 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 9 décembre 2011 - 9 déc. 2011 à 03:44
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

cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
19 nov. 2011 à 22:31
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
0
tofile Messages postés 5 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 9 décembre 2011
20 nov. 2011 à 01:32
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
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 14
20 nov. 2011 à 09:05
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.
0
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
20 nov. 2011 à 11:22
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tofile Messages postés 5 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 9 décembre 2011
21 nov. 2011 à 04:34
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
0
BunoCS Messages postés 15308 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 28 septembre 2022 103
21 nov. 2011 à 09:23
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...
0
tofile Messages postés 5 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 9 décembre 2011
21 nov. 2011 à 19:42
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
0
BunoCS Messages postés 15308 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 28 septembre 2022 103
22 nov. 2011 à 09:23
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...
0
tofile Messages postés 5 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 9 décembre 2011
9 déc. 2011 à 03:44
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
0