Journal Notre ami Windows

Posté par  (site web personnel) .
Étiquettes : aucune
0
13
juin
2008
Recette de cuisine :

Prenez votre tit compilateur java et compilez ceci :


package test;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;



public class test {
public static void main(String[] args) throws Throwable {

ServerSocket ss = new ServerSocket(80);
Socket sc = ss.accept();
InputStream in = sc.getInputStream();
while (in.available()>0) {
System.out.print((char)in.read());
}
sc.close();
}


Notre ami Souhail, auteur de cette superbe idée, obtient :


GET /ADSAdClient31.dll?GetAd=&PG=IMSFRF&AP=1007 HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

Accept-Language: en-gb

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)

Host: rad.msn.com

Connection: Keep-Alive

Cookie: ANON=A=CF913843612DEA578DFC67A5BFFFFFFFF&E=6a7&W=3; NAP=V=1.7&E=669&C=kGnDtOefhf_iJSC-y0FBk7Y86deypRj5Lh1yC8rv3rfHH9eeyL7l5A&W=4; MC1=V=3&GUID=f6ca2df261ffe48bace5912798df8420; MUID=E61F9D7499CE4E60985A13F6BF7883A0


Dégustez !
  • # Décryptage

    Posté par  (site web personnel) . Évalué à 9.

    Le monsieur/madame a fait un serveur web écoutant sur le port 80. Le reste, il faut décrypter :

    L'hôte étant rad.msn.com, je suppose qu'il a redirigé (/etc/hosts) cette adresse vers localhost. Je suppose aussi qu'il a lancé son serveur en root (80/tcp) et utilisé msn. J'ai bon ?

    Dans ces hypothèses, on peut ainsi supposer que les informations suivantes sont transmises à MSN ?


    ANON=A=CF913843612DEA578DFC67A5BFFFFFFFF
    E=6a7
    W=3;NAP=V=1.7
    E=669
    C=kGnDtOefhf_iJSC-y0FBk7Y86deypRj5Lh1yC8rv3rfHH9eeyL7l5A
    W=4; MC1=V=3
    GUID=f6ca2df261ffe48bace5912798df8420; MUID=E61F9D7499CE4E60985A13F6BF7883A0


    Mais pourquoi "User-Agent: Mozilla/4.0" ?
    • [^] # Re: Décryptage

      Posté par  (site web personnel, Mastodon) . Évalué à 7.

      Ma première impression est qu'il faisait simplement un serveur écoutant sur le port 80 d'une machine pour montrer à quel point les botnets tentent de se connecter un peu partout et tentent d'accéder aux machines compromises.

      Mais le rad.msn.com soutient plus ta théorie.

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Décryptage

        Posté par  . Évalué à 2.

        C'est simplement le host envoyé par le client dans l'entête HTTP non ?

        Je suppose que ce domaine ne pointe pas réellement sur cette machine, donc ce bot indique rad.msn.com dans le host alors qu'il devrait indiquer l'IP ou le domaine réel de la machine.

        Mais peut-être que cette requête vient de localhost ?
    • [^] # Re: Décryptage

      Posté par  . Évalué à 6.

      Internet Explorer s'identifie comme Mozilla/4.0, c'était utilisé à l'époque ou Netscape était en vogue et que certains sites bloquaient l'accès aux autres navigateurs ou proposer une version "simplifiée" de leurs pages.
    • [^] # Re: Décryptage

      Posté par  (site web personnel) . Évalué à 2.

      Le monsieur/madame n'a pas fait de serveur web sur son poste, il utilise bêtement le MSN fourni avec windows :-)

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

      • [^] # Re: Décryptage

        Posté par  (site web personnel) . Évalué à 2.

        Ce bout de code implémente bien un serveur web, non ? Je ne suis pas très familier avec les socket Java, mais j'ai dû arrêter mon serveur web avant de lancer ce programme.

        J'ai eu une sortie texte par ce programme après avoir accédé à http://localhost avec mon navigateur.

        D'où ma question : pourquoi MSN cherche-t-il un serveur web local ? Tu n'aurais pas détourné l'adresse de rad.msn.com ?
        • [^] # Re: Décryptage

          Posté par  (site web personnel, Mastodon) . Évalué à 2.

          Salut,

          en fait ce bout de code n'implémente pas de serveur web dans le sens où il ne fait aucun traitement. Pour un serveur web, il faudrait que le programme connaisse 2 langages: le protocole de communication http (interpréter les commandes qui lui sont envoyées, par ex ici la commande GET qui demande d'obtenir une "page") et le langage de structuration html (générer ou au moins transmettre des pages html et les fournir à travers http). Ici il ne fait ni l'un ni l'autre.

          Néanmoins il écoute les communications sur le port 80. Or ce port est tout bêtement le port habituel (celui qui a été normé) pour les communications web. Comme 2 langages ne peuvent pas simultanément écouter sur un port (pas à ce niveau de socket en tous cas, bien qu'il existe d'autres moyens d'espionner des communications sur un port en cours d'utilisation), tu as été obligé d'arrêter ton serveur web pour langer ce programme de test.

          Quoiqu'il en soit, tout ce que fait ce programme, c'est écouter donc sur le port 80 et rendre ce qu'il lit de façon brute, sans aucune interprétation. Par contre pour ce qu'on est sensé déduire du résultat... comme beaucoup d'autres gens dans cette page, je reste perplexe...
          'lus.

          Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

    • [^] # Re: Décryptage

      Posté par  (site web personnel) . Évalué à 5.

      Bien vu ! On en a discuté, et effectivement, c'est bien ça, il a bien modifié son hosts pour virer la pub , et ça c'est donc la pub demandée par le client MSN.

      On s'est demandé ce que ça ferait si on le redirigeait sur le broadcast

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • # lapin compris

    Posté par  . Évalué à 10.

    --> []
  • # Hotmail avec Mozilla

    Posté par  (site web personnel) . Évalué à -1.

    C'est pour utiliser Hotmail avec Firefox ?

    Mickaël

  • # Pour ceux qui voudrait tester

    Posté par  (site web personnel) . Évalué à 1.

    Il manque une accolade fermante à la fin du code source.
    Pour compiler: javac test.java
    Pour lancer sudo java test
  • # Heuuuuuuu ...

    Posté par  . Évalué à 7.

    Ontologia, ca aurait été pas mal une petite explication, parce que là, je pense ne pas être le seul à ne pas avoir capté ton post ...
    (ps: t'aurais pu mettre le lien source aussi)
    • [^] # Re: Heuuuuuuu ...

      Posté par  (site web personnel) . Évalué à 3.

      C'est juste mon collègue qui est à 1,5m derrière moi qui m'a montré ça. Pas de lien, juste un bout de code pour montrer ce qui passe sur le port 80 d'un windows sur lequel on trouve un client MSN.

      C'est tout :)

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

      • [^] # Re: Heuuuuuuu ...

        Posté par  (site web personnel) . Évalué à 3.

        Le client MSN se connecte sur localhost:80 en invoquant "rad.msn.com" ?!

        Quelle utilité ?
        • [^] # Re: Heuuuuuuu ...

          Posté par  . Évalué à 4.

          rad.msn.com ca doit sans doute etre le serveur utilisé pour afficher les pubs de microsoft. Après il a peu etre rajouté rad.msn.com en 127.0.0.1 dans le fichier hosts pour qu'il se connecte sur localhost.
          Bref, rien de vraiment passionnant.
      • [^] # Re: Heuuuuuuu ...

        Posté par  . Évalué à 10.

        et ?

        Vraiment je ne comprends pas. Le code java oui, comme beaucoup d'autres personnes, mais l'intérêt de ton poste je ne vois pas.

        En plus de ne pas expliquer dans ton journal, quand on te demande des explications dans les commentaires tu n'en donnes pas vraiment....
        J'ai l'impression d'avoir à faire à un informaticien ;) (que je suis aussi)
        • [^] # Re: Heuuuuuuu ...

          Posté par  . Évalué à 10.

          J'ai l'impression d'avoir à faire à un informaticien ;) (que je suis aussi)

          Voyons, il explique qu'il est sous Windows, tu ne peux donc pas avoir à faire à un informaticien !
          • [^] # Re: Heuuuuuuu ...

            Posté par  . Évalué à 1.

            euh... on ne choisit pas toujours son environnement de travail... mais bonne remarque :D

            ------------------------------
            informaticien sous XP
      • [^] # Re: Heuuuuuuu ...

        Posté par  . Évalué à 10.

        Et en plus simple sous unix :
        nc -l -p 80
        Java c'est l'avenir, hein ....
        • [^] # Re: Heuuuuuuu ...

          Posté par  (site web personnel) . Évalué à 1.

          plus plus plus :D
        • [^] # Re: Heuuuuuuu ...

          Posté par  (site web personnel, Mastodon) . Évalué à 3.

          Je dirais même :

          nc -l 80

          Extrait de `man 1 nc' :

          -l Used to specify that nc should listen for an incoming connection
          rather than initiate a connection to a remote host. It is an
          error to use this option in conjunction with the -p, -s, or -z
          options. Additionally, any timeouts specified with the -w option
          are ignored.
          • [^] # Re: Heuuuuuuu ...

            Posté par  . Évalué à 2.

            Marrant, moi dans le help de nc, j'ai ça (J'ai pas le man) :
            Basic usages
            […]
            listen for inbound: nc -l -p port [options] [hostname] [port] ...


            En fait, chez moi,
            nc -l 80 n'écoute pas sur le port 80 (un port aléatoire ?).

            Peut-être est-ce dépendant de la version (ou de l'origine) de nc.
            % nc -V
            netcat (The GNU Netcat) 0.7.1
            Copyright (C) 2002 - 2003 Giovanni Giacobbi
            […]
            • [^] # Re: Heuuuuuuu ...

              Posté par  (site web personnel, Mastodon) . Évalué à 2.

              netcat (The GNU Netcat) 0.7.1

              Ah ben oui, mais non : le message originel de benoar disait « sous Unix », donc pas GNU !
              • [^] # Re: Heuuuuuuu ...

                Posté par  . Évalué à 3.

                Bon, j'avoue que c'est une approximation de ma part, car je suis sous Debian, mais je n'ai pas le netcat de GNU ... pour moi, j'ai toujours utilisé l'option -p pour préciser le port. Je ne savais même pas qu'il existait une version GNU avec des options différentes ... D'ailleurs sur ma Debian, le netcat-traditional est déprécié pour sa version opendbsd, mais pas une trace de la version GNU .... bizarre.
  • # oui et ?

    Posté par  . Évalué à 7.

    Un programme qui écoute sur le port 80 et affiche ce qu'il recoit sur la 1ere connection.
    Oui, et alors ? Quel interet ?

    Et puis il n'y a pas besoin d'écrire un programme pour ca, il suffit d'utiliser netcat ou autre.
  • # Tout çà pour çà !

    Posté par  . Évalué à 10.

    Prenez votre tit compilateur java et compilez ceci :

    Hint : dis à ton pote que nc -l 80, c'est beaucoup plus simple ! :-)
    • [^] # Re: Tout çà pour çà !

      Posté par  (site web personnel, Mastodon) . Évalué à 10.

      Non mais tu as affaire à un programmeur Java.
      - Un code de 20 lignes qui demande une compilation alors qu'une simple commande suffit
      - Aucune explication du pourquoi, du comment mais un étonnement que personne ne le comprenne
      - Si demandé d'expliquer ce qu'il fait, il répond évasivement et esquive les questions parce que c'est tellement évident.
      - Un titre (ou un nom de classe/projet) qui n'a absolument rien à voir avec le reste.

      On a échappé à l'usage extensif d'accronymes. (Les 20 lignes de code du journal s'appellent en fait MOUFFLES, c'est le *truc* pour faire une écoute de port en utilisant un BEAN de type EJFL dans le framework STANZA).

      Un truc qui marche très bien pour rigoler un coup : expose ton problème à un programmeur J2EE. Demande lui une architecture de solution. Dans sa solution, il y aura JBoss (c'est certain, 100% de réussite de mon côté). À cet instant, demande lui ce qu'est JBoss (réponse garantie : un serveur d'applications avec un air un peu étonné par la question). Et là, en avant pour une bonne tranche de rigolade, prononce le fatidique : "C'est quoi un serveur d'applications ?".

      Après quelques minutes (ou heures, au choix) d'explications embrouillées qui se mordent la queue, assène le coup final :

      "Ok. Mais en quoi est-ce qu'un serveur d'applications est utile pour mon problème ?"


      J'avoue avoir fait ce coup là une bonne dizaine de fois et ça marche toujours aussi bien.

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Tout çà pour çà !

        Posté par  . Évalué à 2.

        programmeur java... mauvais programmeur java !!!

        Avant même de rentrer dans l'algo:
        public class test {


        Si il y a des conventions de nommage ce n'est pas pour rien
        http://www.loribel.com/java/normes/nommage.html#classes
        • [^] # Re: Tout çà pour çà !

          Posté par  . Évalué à 10.

          C'est vrai. Ça sert à permettre au chef de faire des reproches au programmeur même lorsque le code est irréprochable. Il n'y a que comme ça que l'on maintient hiérarchie et discipline ! :-)
          • [^] # Re: Tout çà pour çà !

            Posté par  . Évalué à 1.

            héhé, mais si le code est irréprochable, il respecte les conventions ;)

            Sans blague, ce n'est pas dur et ça améliore la lisibilité.
            La majuscule aux classes, ok, ce n'est pas vraiment "important", mais quand je lis du code avec des variables qui commencent par une majuscule ça me gène.
      • [^] # Re: Tout çà pour çà !

        Posté par  . Évalué à -2.

        "webcam -> youtube", comme on dit :-)
  • # Pourquoi en Java ?

    Posté par  . Évalué à 10.

    C’est pas faisable en Lisaac ?

    sifflotant ⟶[]
    • [^] # Re: Pourquoi en Java ?

      Posté par  . Évalué à 2.

      C'est faisable en bash avec /dev/tcp ...
      • [^] # Re: Pourquoi en Java ?

        Posté par  . Évalué à 4.

        Non, car bash ne peut que se connecter, pas écouter les connexions. Au contraire, zsh permet les 2, et n'est pas limité à une connexion par hôte et port :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.