IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Encapsuler une requete http dans dns


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Encapsuler une requete http dans dns
    Bonjour,

    Je voudrai savoir comment encapsuler une requete http dans un paquet DNS-j’espère que j'ai bien utilisé les bons termes -
    Tout cela bien évidement en C++ ou en C.

    Est ce que qqn a une idée

    Merci d'avance.

    Je donne déjà deux liens, un pour la req http et l'autre pour le DNS, si cela va aider, en tt cas c'est tout ce que j'ai pour le moment comme piste

    DNS: http://www.binarytides.com/dns-query...-with-winsock/
    Http: http://www.iprelax.fr/http/http_prog8.php

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hi,

    Je pense que tu veux dire envoyer une requête http en upd (protocole utilisé par dns) ?
    Non c'est pas possible http fonctionne en tcp. (Bien que le port 80 en udp soit réservé pour http, mais, à ma connaissance ça n'a jamais été utilisé).

  3. #3
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Si c’est bien pour faire de l’ip over dns, regarde du côté de nstx. C’est en C, par contre.

    Cela dit, si tu n’es pas sûr des termes, et que c’est vraiment ça, je te déconseille de continuer : familiarise toi d’abord avec le fonctionnement réseau, sur des projets plus académiques, et une fois que tu auras bien compris le rôle de chaque couche, qui intervient à quel niveau, tu pourras travailler sereinement là-dessus.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Non c'est pas ce que je veux dire

    Ce que je veux faire c'est l'encapsulation d'une req http comme celle-ci:

    GET /index.html HTTP/1.1\r\n"
    "Host: www.monsite.com\r\n"
    "Accept: image/gif, image/x-xbitmap, image/jpeg,"
    " image/pjpeg, image/png, */*"
    "\r\n\r\n"

    Dans un paquet DNS comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    typedef struct
    {
    unsigned short qtype;
    unsigned short qclass;
    } QUESTION;
     
     
    typedef struct
    {
    unsigned short type;
    unsigned short _class;
    unsigned int ttl;
    unsigned short data_len;
    } R_DATA;
     
     
    typedef struct
    {
    unsigned char *name;
    R_DATA *resource;
    unsigned char *rdata;
    } RES_RECORD;
     
    typedef struct
    {
    unsigned char *name;
    QUESTION *ques;
    } QUERY;
     
    /set up the header
     
    dns->id = (unsigned short)htons(GetCurrentProcessId());
     
    dns->qr = 0; //This is a query
     
    dns->opcode = 0; //This is a standard query
     
    dns->aa = 0; //Not Authoritative
     
    dns->tc = 0; //This message is not truncated
     
    dns->rd = 1; //Recursion Desired
     
    dns->ra = 0; //Recursion not available! hey we dont have it (lol)
     
    dns->z = 0;
     
    dns->ad = 0;
     
    dns->cd = 0;
     
    dns->rcode = 0;
     
    dns->q_count = htons(1); //we have only 1 question
     
    dns->ans_count = 0;
     
    dns->auth_count = 0;
     
    dns->add_count = 0;
     
    //point to the query portion
     
    qname =(unsigned char*)&buf[sizeof(DNS_HEADER)];
     
    ChangetoDnsNameFormat(qname,host);
     
    qinfo =(QUESTION*)&buf[sizeof(DNS_HEADER) + (strlen((const char*)qname) + 1)];
     
     
     
    //fill it
     
    qinfo->qtype = htons(1); //we are requesting the ipv4 address
     
    qinfo->qclass = htons(1); //its internet

    Mon souci maintenant c'est que je sais pas quel champ va contenir la req http qui n'est qu'un String

    Merci encore une fois

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    @ white_tentacle
    Ok je vais prendre votre conseil en compte mais j'ai un projet a rendre tres bientot donc ce sera pas possible maintenant

    cela dit, je pense que le terme : "ip over dns" donne deja qqch important sur google, c'est l’idée de mon projet.

    Reste le p'tit souci que j'ai cité tt en haut dans mon commentaire

  6. #6
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Je connais pas du tout mais ça à l'air intéressant comme "truc" du coup.
    Je vais suivre le thread avec attention. ^^

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Je connais pas du tout mais ça à l'air intéressant comme "truc" du coup.
    Je vais suivre le thread avec attention. ^^
    Ca permet de contourner certaines restrictions mise en place sur certains réseaux. Ceci dit, ça demande une infrastructure idoine en face (certains serveurs DNS vont tout simplement balancer le paquet voir blacklister l'adresse source parce que potentiellement abusif si tu essaies de communiquer avec eux par ce biais) et ce n'est pas très performant. De plus, les performances sont un peu pauvrettes...
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  8. #8
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par Kirikou12 Voir le message
    @ white_tentacle
    Ok je vais prendre votre conseil en compte mais j'ai un projet a rendre tres bientot donc ce sera pas possible maintenant
    C’est quoi ton projet exactement ?

    Parce que pour ce genre de trucs, il faut un serveur dns traficoté pour pouvoir interpréter le paquet. Si le but est juste de faire transiter un peu de données http via dns et que le serveur réponde, tu peux effectivement encapsuler directement du http plutôt que de l’ip, ce qui est plus simple. Tu dois trouver où dans ton paquet dns il y a de la place utilisable, et ensuite, côté serveur, récupérer ces données qui ne sont pas du dns mais qui sont encapsulées dedans.

    Ça implique bien sûr de découper correctement ta requête http, et de rajouter du contrôle / gestion d’erreurs puisque tu peux t’attendre à des pertes de paquets.

    De plus, les performances sont un peu pauvrettes...
    En fait, c’est étonnamment pas si pire que ça (j’ai déjà vu du 60ko/sec en ip sur dns).

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    En fait, c’est étonnamment pas si pire que ça (j’ai déjà vu du 60ko/sec en ip sur dns).
    Tu m'aurais dit "600ko", ou "6Mo", j'aurais dit "ah oui, c'est pas si pire". Mais tu parles d'une vitesse équivalente à une ligne ADSL de 512kbis/s.

    Ensuite, sur les réseaux radio (3G, WiFi), tu va vraiment sentir le problème - avec les paquets perdus, le nombre de requêtes DNS va exploser, et la bande passante va se réduire comme peau de chagrin
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/10/2010, 18h31
  2. fournir un user/mdp dans une requete https get
    Par buzuck dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 19/11/2007, 15h54
  3. Réponses: 1
    Dernier message: 24/08/2006, 21h07
  4. Réponses: 2
    Dernier message: 20/06/2005, 14h57
  5. [http] comment faire une requete http
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo