[javascript] vanaf extern formulier inloggen bij hotmail

Pagina: 1
Acties:

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik heb een soort eigen startpagina gemaakt met een databaseje erachter en heb op de voorkant ook een paar formulieren staan die ik vaak gebruik, zoals google, php.net en.... hotmail.
Sinds een tijdje echter werkt dat hotmail inlog formulier niet meer (goed). Je moet namelijk eerst een cookie gezet zijn voordat je kunt inloggen, wat inhoudt dat je persee eerst naar de pagina van hotmail moet (en je zou dan evt weer terug kunnen gaa naar je eigen formulier en dan inloggen...)

Nou heb ik daar de volgende 2 dingen op bedacht:
1. Zelf dat cookie zetten
2. Alvorens het formulier gesubmit wordt een popupje openen die een framework bevat waarbij in de ene hotmail geladen wordt en in de ander een javascriptje zit dat als hotmail geladen is, het popupje weer afsluit en het formulier submit.

De eerste vind ik uiteraard de mooiste oplossing, echt die wil nog niet helemaal lukken. Ik heb om eerlijk te zijn weinig ervaring met cookies, maar ben eens gaan klooien en dit is daar het resultaat van:

JavaScript:
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
    function unix_stamp()
    {
        Today       = new Date();
        inMili      = Date.parse(Today);
        unixtime    = Math.round((inMili / 1000), 0);
        return(unixtime);
    }
    function getCookieVal (offset)
    {
        var endstr = document.cookie.indexOf (";", offset);
        if (endstr == -1)
            endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
    }
    function SetCookie (name, value, expires, path, domain, secure)
    {
        document.cookie = name + "=" + escape (value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "Never") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
    }
    function GetCookie(name)
    {
        var arg = name + "=";
        var alen = arg.length;
        var clen = document.cookie.length;
        var i = 0;
        while (i < clen)
        {
            var j = i + alen;
            if (document.cookie.substring(i, j) == arg)
                return getCookieVal (j);
            i = document.cookie.indexOf(" ", i) + 1;
            if (i == 0)
                break;
        }
        return null;
    }
    function hotmail_login()
    {
        var name    = 'MSPRequ';
        var value   = 'lt='+unix_stamp()+'&co=1&id=2';
        var path    = '/';
        SetCookie(name, value , false , path, 'login.passport.net', false);
        var een = GetCookie('MSPRequ');
        SetCookie(name, value , false , path, 'loginnet.passport.com', false);
        var twee = GetCookie('MSPRequ');
        alert(een+'\n'+twee);
        // document.forms['passwordform'].submit();
    }
zal er eerlijk bijvermelden dat ik het overgrootte deel van setcookie() en getcookie() van de icq site geripped heb :)

moet 'm trouwens nog even zo aanpassen dat expires bij het argument false op tot einde van de sessie komt te staan, maar goed, dat komt nog

die var value= in de laatste functie genereert de juiste waarde voor het cookie - daar ben ik al achter gekomen. Het enige wat nu nog niet wil lukken is dat login.passport.net en logginnet.passport.com als site bij die cookie komen te staan. En ik wordt er met de tuts niet zoveel wijzer van wat ik fout doe.
Of is dit gewoon niet mogelijk?


btw, voor degene die het willen uitproberen:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    <form name="passwordform" action="https://loginnet.passport.com/ppsecure/post.srf"
     method="POST" target="_top" onsubmit="return false;">
    <table>
    <tr>
     <td>
        Hotmail<br>
        <input type="hidden" name="domain" value="hotmail.com">
        <input type="hidden" name="svc" value="mail">
        <input type="hidden" name="RemoteDAPost" value="https://login.msnia.passport.com/NL/ppsecure/post.asp">
        <input type="hidden" name="rru" value="/cgi-bin/HoTMaiL">
<!--        <input type="submit" name="enter" value="Aanmelden"> //-->
        <input type="button" name="enter" value="Aanmelden" onClick="hotmail_login();">
     </td>
     <td align="left" valign="top">
        <font class="small">Login: <input type="text" name="login" value=""><br>
        <font class="small">Pass: <input type="password" name="passwd" value="">
     </td>
    </tr>
    </table>
    </form>
dit formulier kun je gebruiken
Het handige is dat je dan gelijk in je inbox terecht komt

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:22

crisp

Devver

Pixelated

Natuurlijk kan je geen cookies zetten voor een ander domein, dat zou een behoorlijk security-risk inhouden. Ik denk dat je toch richting de 2e optie moet gaan. Eventueel zou je een hidden iframe kunnen gebruiken. Probleem is echter dat je nooit precies weet wanneer die klaar is met laden (is vanwege dezelfde security ook niet op te vragen)

Intentionally left blank


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
crisp schreef op 11 augustus 2003 @ 18:41:
Natuurlijk kan je geen cookies zetten voor een ander domein, dat zou een behoorlijk security-risk inhouden.
jah...dat dacht ik al...maarja. in princiepe kun je ze wel met de hand aanpassen in je browser, dus ik hoopte dat er toch een oplossing voor was om dat op 1 of andere manier te doen. (Misschien dat ik m'n cookie anders wel gewoon 1x door hotmail laat ophalen en daarna handmatig op Never (expire) zet).
btw, maar waar is die optie 'domein' dan goed voor, als je 'm niet kan zetten?
Ik denk dat je toch richting de 2e optie moet gaan. Eventueel zou je een hidden iframe kunnen gebruiken. Probleem is echter dat je nooit precies weet wanneer die klaar is met laden (is vanwege dezelfde security ook niet op te vragen)
Dat had ik me ook al zitten te bedenken.
wat ik misschien wel kan doen is een while-loopje laten lopen die controleert op het bestaan van het inlogformulier van hotmail in het andere frame. dat zou toch mogelijk moeten zijn?

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

crisp schreef op 11 augustus 2003 @ 18:41:
Natuurlijk kan je geen cookies zetten voor een ander domein, dat zou een behoorlijk security-risk inhouden. Ik denk dat je toch richting de 2e optie moet gaan. Eventueel zou je een hidden iframe kunnen gebruiken. Probleem is echter dat je nooit precies weet wanneer die klaar is met laden (is vanwege dezelfde security ook niet op te vragen)
Daar is ook wel makkelijk omheen te hax0ren. je zou bijv. door een setInterval telkens kunnen kijken of er een </html> in de bron van de iframe staat

viez, maar het werkt wel :)

Stop uploading passwords to Github!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:22

crisp

Devver

Pixelated

marty schreef op 11 augustus 2003 @ 18:50:
[...]

jah...dat dacht ik al...maarja. in princiepe kun je ze wel met de hand aanpassen in je browser, dus ik hoopte dat er toch een oplossing voor was om dat op 1 of andere manier te doen. (Misschien dat ik m'n cookie anders wel gewoon 1x door hotmail laat ophalen en daarna handmatig op Never (expire) zet).
btw, maar waar is die optie 'domein' dan goed voor, als je 'm niet kan zetten?
ja, ik bedenk me nu dat je serverside ook wel cookies met een ander geldigheidsdomein kan zetten; ik heb daar echter nog nooit mee hoeven stoeien; wel is denk van belang wat er in dat cookie staat. Ik vermoed dat hotmail een soort challenge systeem op basis van sessies of zo heeft ingebouwd, dan kan je wel een cookie zetten met hotmail als domein, maar dan klopt uiteindelijk de inhoud niet en wordt je login alsnog gereject.
Dat had ik me ook al zitten te bedenken.
wat ik misschien wel kan doen is een while-loopje laten lopen die controleert op het bestaan van het inlogformulier van hotmail in het andere frame. dat zou toch mogelijk moeten zijn?
nee, je kan met javascript niets doen met externe pagina's, niet eens dingen uitvragen.

Als hotmail daadwerkelijk met challenges werkt zal optie 2 echter ook niet werken, je login formulier stuurt immers het cookie van hotmail niet mee in zijn request.
Papa Eend schreef op 11 August 2003 @ 19:30:
[...]


Daar is ook wel makkelijk omheen te hax0ren. je zou bijv. door een setInterval telkens kunnen kijken of er een in de bron van de iframe staat

viez, maar het werkt wel :)
Nope, je krijgt een dikke vette security error als je dat probeert op de inhoud van een frame die van een ander domein afkomstig is :Y)

[ Voor 14% gewijzigd door crisp op 11-08-2003 19:34 ]

Intentionally left blank


  • drecaise
  • Registratie: December 2000
  • Laatst online: 12-06 17:02
ideetje: vergeet die cookies zetten....
Zoek uit wat variabelen zijn die er in komen en of je die zelf te voorschijn kan toveren. Vervolgens gooi je de cookie over naar hotmail via http (m.a.w.: aap je browser na!). Als je browser die pagina kan openen moet jij dat, als je die functionaliteit inbouwt ook kunnen, dunkt mij zo...


probeer eens of je in die richting opschiet...

pizzaguys get all the pussy


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
crisp schreef op 11 August 2003 @ 19:32:
[...]

ja, ik bedenk me nu dat je serverside ook wel cookies met een ander geldigheidsdomein kan zetten; ik heb daar echter nog nooit mee hoeven stoeien; wel is denk van belang wat er in dat cookie staat. Ik vermoed dat hotmail een soort challenge systeem op basis van sessies of zo heeft ingebouwd, dan kan je wel een cookie zetten met hotmail als domein, maar dan klopt uiteindelijk de inhoud niet en wordt je login alsnog gereject.
Als hotmail daadwerkelijk met challenges werkt zal optie 2 echter ook niet werken, je login formulier stuurt immers het cookie van hotmail niet mee in zijn request.
Nou, de inhoud van dat cookie is niet zo heel ingewikkeld. Da's gewoon een combinatie van een unix_timestamp met wat andere tekens (ik heb een paar keer hotmail bezocht, cookie bekeken, browser afgesloten en hotmail weer bezocht en die unix timestamp is het enige wat telkens verschilt - zie ook m'n stukje code bovenaan) . Ik denk dat daar het probleem niet ligt. Wat ik namelijk al getest heb is het volgende:
- Ik open m'n startpagina
- Ik doe CTRL+N en ga in dat nieuwe browservenster naar Hotmail
- Als de hotmail pagina geladen is sluit ik dat venster weer
- Ik log in op hotmail met m'n eigen inlogformulier die nog steeds open staat.
en dat werkt. (als je bovenstaande snippets in een html pagina paste kun je het testen als je twijfelt :) )
nee, je kan met javascript niets doen met externe pagina's, niet eens dingen uitvragen.
da's balen

Kan iemand me met zekerheid vertellen of een cookie setten op een ander domein mogelijk is met javascript?
en me dan ook vertellen wat ik fout doe :) :)

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
drecaise schreef op 11 August 2003 @ 19:41:
ideetje: vergeet die cookies zetten....
Zoek uit wat variabelen zijn die er in komen en of je die zelf te voorschijn kan toveren. Vervolgens gooi je de cookie over naar hotmail via http (m.a.w.: aap je browser na!). Als je browser die pagina kan openen moet jij dat, als je die functionaliteit inbouwt ook kunnen, dunkt mij zo...


probeer eens of je in die richting opschiet...
ik snap niet helemaal wat je bedoelt......
als dat cookie niet gezet is geeft hotmail gewoon keihard een foutmelding dat je browser geen cookies ondersteunt en dat je daarom niet kan inloggen . Dus die heb je zowiezo nodig anders is het einde oefening.

oh....misschien dat ik het snap. jij suggereert die cookie waardes in een GET of POST mee te sturen. Dat gaat niet lukken. Hotmail was vroeger nog zo naïef daar niet op te letten maar dat zit tegenwoordig wel dicht hoor :)

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
kickje O-)

Er is toch vast wel iemand die weet hoe dat met die cookies zit in javascript? :)
(zie eenna laatste post) (nu tweena laatste ;))
Pagina: 1