Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tupas testaus

Sivun loppuun

Sebu [24.06.2009 16:52:08]

#

Tarkoitus olis testata OP:n tupas tunnistautumista. OP:n sivulla on ohjeet mutta mites noita oikein sovelletaan käytännössä?

https://www.op.fi/op?cid=150294058&srcpl=3

Grez [25.06.2009 00:11:26]

#

Teet tupas-speksin mukaisen tunnistuspalvelun, jonka palveluntuottajatunnus on "Esittelymyyja" ja tarkisteavain on "Esittelykauppiaansalainentunnus". Sitten vaan tunnistaudut ihan normaalisti, mutta omien pankkitunnusten asemesta syötät käyttäjätunnukseksi 123456 ja salasanaksi 7890 ja avainluvuksi minkä tahansa nelinumeroisen luvun.

lrp [29.06.2009 16:34:51]

#

Kokeilin äkkiä tällaista

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title></title>
    </head>
    <body>
<FORM METHOD="POST" ACTION=https://kultaraha.op.fi/cgi-bin/krcgi>
<INPUT NAME="A01Y_ACTION_ID" TYPE="hidden" VALUE=701>
<INPUT NAME="A01Y_VERS" TYPE="hidden" VALUE=0003>
<INPUT NAME="A01Y_RCVID" TYPE="hidden" VALUE=Esittelymyyja>
<INPUT NAME="A01Y_LANGCODE" TYPE="hidden" VALUE=FI>
<?php date_default_timezone_set ('Europe/Helsinki');
setlocale(LC_TIME, "fi_FI");
?>
<INPUT NAME="A01Y_STAMP" TYPE="hidden" VALUE=<?php echo strftime("%Y%m%d%H%M%S");
echo date(u);?>>
<INPUT NAME="A01Y_IDTYPE" TYPE="hidden" VALUE=02>
<INPUT NAME="A01Y_RETLINK" TYPE="hidden" VALUE=https://www.xxxx/tilausvahvistus.html>
<INPUT NAME="A01Y_CANLINK" TYPE="hidden" VALUE=https://www.xxxx/keskeytys.html>
<INPUT NAME="A01Y_REJLINK" TYPE="hidden" VALUE=https://www.xxxx/virhe.html>
<INPUT NAME="A01Y_KEYVERS" TYPE="hidden" VALUE=0001>
<INPUT NAME="A01Y_ALG" TYPE="hidden" VALUE=01>
<INPUT NAME="A01Y_MAC" TYPE="hidden" VALUE=>
<INPUT name="submit" type="submit">
</FORM>
    </body>
</html>
</FORM>

Tuon submit-nappulan lisäsin itse kun en keksinyt muuta keinoa lähettää lomaketta. Kenttään A01Y_MAC en löytänyt ohjetta miten testata. Se lasketaan avaimella jonka saa kun tekee diilin pankin kanssa.

Grez [29.06.2009 17:56:20]

#

lrp kirjoitti:

Kenttään A01Y_MAC en löytänyt ohjetta miten testata.

Muodostamistapa lukee tupasin speksissä. Ilmeisesti olet sen lukenut, kun tiedät, että:

lrp kirjoitti:

Se lasketaan avaimella jonka saa kun tekee diilin pankin kanssa.

Ja kuten edellisessä viestissä kerroin, niin testattaessa tarkisteavain on "Esittelykauppiaansalainentunnus".

lrp [29.06.2009 21:57:50]

#

Innostuin kokeilemaan...
Server Error kun koitan tätä eli kultaraha

<FORM METHOD="POST" ACTION="https://kultaraha.op.fi/cgi-bin/krcgi">
<INPUT NAME="A01Y_ACTION_ID" TYPE="hidden" VALUE="701">
<INPUT NAME="A01Y_VERS" TYPE="hidden" VALUE="0003">
<INPUT NAME="A01Y_RCVID" TYPE="hidden" VALUE="Esittelymyyja">
<INPUT NAME="A01Y_LANGCODE" TYPE="hidden" VALUE="FI">
<?php date_default_timezone_set ('Europe/Helsinki');
setlocale(LC_TIME, "fi_FI");
?>
<INPUT NAME="A01Y_STAMP" TYPE="hidden" VALUE="<?php echo strftime("%Y%m%d%H%M%S");
echo "123456";?>">
<INPUT NAME="A01Y_IDTYPE" TYPE="hidden" VALUE="02">
<INPUT NAME="A01Y_RETLINK" TYPE="hidden" VALUE="https://www.xxx.com/tilausvahvistus.php">
<INPUT NAME="A01Y_CANLINK" TYPE="hidden" VALUE="https://www.xxx.com/tup_keskeytys.php">
<INPUT NAME="A01Y_REJLINK" TYPE="hidden" VALUE="https://www.xxx.com/tup_virhe.php">
<INPUT NAME="A01Y_KEYVERS" TYPE="hidden" VALUE="0001">
<INPUT NAME="A01Y_ALG" TYPE="hidden" VALUE="01">
<INPUT NAME="A01Y_MAC" TYPE="hidden" VALUE="Esittelykauppiaansalainentunnus">
<INPUT name="submit" type="submit">
</FORM>

Nordea vastaa, että Turvatarkiste ei vastaa pankissa laskettua. (V2008007)

<FORM METHOD="POST" ACTION="https://solo3.nordea.fi/cgi-bin/SOLO3011">
<INPUT NAME="A01Y_ACTION_ID" TYPE="hidden" VALUE="701">
<INPUT NAME="A01Y_VERS" TYPE="hidden" VALUE="0002">
<INPUT NAME="A01Y_RCVID" TYPE="hidden" VALUE="87654321">
<INPUT NAME="A01Y_LANGCODE" TYPE="hidden" VALUE="FI">
<?php date_default_timezone_set ('Europe/Helsinki');
setlocale(LC_TIME, "fi_FI");
?>
<INPUT NAME="A01Y_STAMP" TYPE="hidden" VALUE="<?php echo strftime("%Y%m%d%H%M%S");
echo "123456";?>">
<INPUT NAME="A01Y_IDTYPE" TYPE="hidden" VALUE="02">
<INPUT NAME="A01Y_RETLINK" TYPE="hidden" VALUE="https://www.xxx.com/tilausvahvistus.php">
<INPUT NAME="A01Y_CANLINK" TYPE="hidden" VALUE="https://www.xxx.com/tup_keskeytys.php">
<INPUT NAME="A01Y_REJLINK" TYPE="hidden" VALUE="https://www.xxx.com/tup_virhe.php">
<INPUT NAME="A01Y_KEYVERS" TYPE="hidden" VALUE="0001">
<INPUT NAME="A01Y_ALG" TYPE="hidden" VALUE="01">
<INPUT NAME="A01Y_MAC" TYPE="hidden" VALUE="LEHTI">
<INPUT name="submit" type="submit">
</FORM>

S-pankki päästi pisimmälle, heitti ilmoittamalleni virhesivulle.

<FORM METHOD="POST" ACTION="https://online.s-pankki.fi/service/identify">
<INPUT NAME="A01Y_ACTION_ID" TYPE="hidden" VALUE="701">
<INPUT NAME="A01Y_VERS" TYPE="hidden" VALUE="0002">
<INPUT NAME="A01Y_RCVID" TYPE="hidden" VALUE="SPANKKITUPAS">
<INPUT NAME="A01Y_LANGCODE" TYPE="hidden" VALUE="FI">
<?php date_default_timezone_set ('Europe/Helsinki');
setlocale(LC_TIME, "fi_FI");
?>
<INPUT NAME="A01Y_STAMP" TYPE="hidden" VALUE="<?php echo strftime("%Y%m%d%H%M%S");
echo "123456";?>">
<INPUT NAME="A01Y_IDTYPE" TYPE="hidden" VALUE="02">
<INPUT NAME="A01Y_RETLINK" TYPE="hidden" VALUE="https://www.xxx.com/tilausvahvistus.php">
<INPUT NAME="A01Y_CANLINK" TYPE="hidden" VALUE="https://www.xxx.com/tup_keskeytys.php">
<INPUT NAME="A01Y_REJLINK" TYPE="hidden" VALUE="https://www.xxx.com/tup_virhe.php">
<INPUT NAME="A01Y_KEYVERS" TYPE="hidden" VALUE="0001">
<INPUT NAME="A01Y_ALG" TYPE="hidden" VALUE="01">
<INPUT NAME="A01Y_MAC" TYPE="hidden" VALUE="SPANKKI">
<INPUT name="submit" type="submit">
</FORM>

POSTin mukana lähtee submit, olisiko siitä riesaa? Miten siitä pääsee eroon?

Grez [29.06.2009 22:31:43]

#

Siitä pääsee eroon jättämällä name parametrin pois, joskaan tuskin se on ongelman ydin.

Ja sitä avainta ei todellakaan lähetetä selväkielisenä, kuten noissa testeissäsi teet, vaan tupas-speksin mukaisena tiivisteenä.

Ohje on vieläpä hyvin yksinkertaisella suomenkielellä:

lainaus:

3.3 Varmennepyynnön MAC-tarkisteen (A01Y_MAC) muodostaminen

Palveluntarjoaja muodostaa kunkin pankin painiketta varten oman pankki-
kohtaisen Varmennepyynnön, joka suojataan MAC-tarkisteella. Tarkiste las-
ketaan pankkikohtaisen pyynnön FORM-tietoryhmästä ko. pankin palvelun-
tarjoajalle antamalla tarkisteavaimella.

Laskennan aluksi muodostetaan merkkijono FORM-tietoryhmän kaikkien
tarkistetta edeltävien tietokenttien (kentät 1 - 11) VALUE-arvoista ja palve-
luntarjoajan tarkisteavaimesta. Tiedot yhdistetään merkkijonoksi järjestyk-
sessä niin, että kenttien täytemerkkeinä olevat blankot jätetään pois. Merkki-
jonon tietoryhmät erotetaan toisistaan "&" -merkillä. Viimeisen tiedon (kent-
tä 11) ja tarkisteavaimen väliin sekä tarkisteavaimen loppuun laitetaan ö&ö-
merkki. ö&ö-merkit otetaan sanoman MAC-tarkisteen laskentaan mukaan.
Tieto on yhtenä rivinä. "&#8629;" -merkki näyttää tässä dokumentissa olevan rivin-
vaihdon.

A01Y_ACTION_ID&A01Y_VERS&A01Y_RCVID­&A01Y_LANGCODE&&#8629;
A01Y_STAMP&A01Y_IDTYPE&A01Y_RETLINK&A01Y_CANLINK­&&#8629;
A01Y_REJLINK&A01Y_KEYVERS&A01Y_ALG&tarkisteavain­&

Laskettu MAC muutetaan heksadesimaaliseen esitysmuotoon, jossa A–F esi-
tetään isoilla kirjaimilla. Heksadesimaalinen tiivisteen arvo viedään Tarkiste-
kenttään.

Sanoisin, että testi onnistui silti erinomaisesti, tulos: tupas-systeemisi ei toimi oikein.

lrp [29.06.2009 22:52:18]

#

Mäkin luin vähän tarkemmin niitä palvelunkuvauksia.
Nordean sain toimimaan näin:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title></title>
    </head>
    <body>
<?php
date_default_timezone_set ('Europe/Helsinki');
setlocale(LC_TIME, "fi_FI");
$eka='701';
$toka='0002';
$kolmas='87654321';
$neljas='FI';
$viides=strftime("%Y%m%d%H%M%S").'123456';
$kuudes='02';
$seiska='https://www.xxx.com/tilausvahvistus.php';
$kasi='https://www.xxx.com/tup_keskeytys.php';
$ysi='https://www.xxx.com/tup_virhe.php';
$kymppi='0001';
$yytoo='01';
$macstring=$eka.'&'.$toka.'&'.$kolmas.'&'.$neljas.'&'.$viides.'&'.$kuudes.'&'
.$seiska.'&'.$kasi.'&'.$ysi.'&'.$kymppi.'&'.$yytoo.'&LEHTI&';
$kaatoo=md5($macstring);
$kaatoo=strtoupper($kaatoo);
echo $kaatoo;
?>
<FORM METHOD="POST" ACTION="https://solo3.nordea.fi/cgi-bin/SOLO3011">
<INPUT NAME="A01Y_ACTION_ID" TYPE="hidden" VALUE="<?php echo $eka?>">
<INPUT NAME="A01Y_VERS" TYPE="hidden" VALUE="<?php echo $toka?>">
<INPUT NAME="A01Y_RCVID" TYPE="hidden" VALUE="<?php echo $kolmas?>">
<INPUT NAME="A01Y_LANGCODE" TYPE="hidden" VALUE="<?php echo $neljas?>">
<INPUT NAME="A01Y_STAMP" TYPE="hidden" VALUE="<?php echo $viides?>">
<INPUT NAME="A01Y_IDTYPE" TYPE="hidden" VALUE="<?php echo $kuudes?>">
<INPUT NAME="A01Y_RETLINK" TYPE="hidden" VALUE="<?php echo $seiska?>">
<INPUT NAME="A01Y_CANLINK" TYPE="hidden" VALUE="<?php echo $kasi?>">
<INPUT NAME="A01Y_REJLINK" TYPE="hidden" VALUE="<?php echo $ysi?>">
<INPUT NAME="A01Y_KEYVERS" TYPE="hidden" VALUE="<?php echo $kymppi?>">
<INPUT NAME="A01Y_ALG" TYPE="hidden" VALUE="<?php echo $yytoo?>">
<INPUT NAME="A01Y_MAC" TYPE="hidden" VALUE="<?php echo $kaatoo?>">
<INPUT name="submit" type="submit">
</FORM>
    </body>
</html>

Vastauksesta saa revittyä tiedot näin

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title></title>
    </head>
    <body>
Tilausvahvistus
<?php
foreach ($_GET as $key => $value){
    echo $key." ".$value."<br>";
}
?>
    </body>
</html>

Grez [29.06.2009 23:58:20]

#

Ihanan hirvee :D No, lähinnä noi superkuvaavat muuttujanimet $eka - $kaatoo...

Itse oon tehnyt sen näin: http://grez.info/tupas/

Lähdekoodit:
http://grez.info/tupas/index.phps
http://grez.info/tupas/return.phps

lrp [30.06.2009 10:54:49]

#

Saat paremmat tyylipisteet. Eikö noi vois julkaista GNU-lisenssillä koodivinkki-osiossa? Ei varmaan eka eikä vika kerta kun joku pohtii tupaksen toteuttamista.

lrp [30.06.2009 13:50:46]

#

Tuli mieleen, että miten on vastausviestin väärentämisen laita? Kaikki tieto tulee url:n mukana

http://grez.info/tupas/return.php?=&B02K_VERS=0002&B02K_TIMESTMP=2002009063013440795&B02K_IDNBR=43185475&B02K_STAMP=20090630134430&B02K_CUSTNAME=NORDEA+%2F+DEMO&B02K_KEYVERS=0001&B02K_ALG=01&B02K_CUSTID=220100-123D&B02K_CUSTTYPE=01&B02K_MAC=D28E4FEE5E8F89FBC6F1A10FD51A03A5

Eikö tuon url:n voi rakentaa mieleisekseen ja laittaa selaimen osoiteriville?

Grez [30.06.2009 14:26:48]

#

lrp kirjoitti:

Eikö tuon url:n voi rakentaa mieleisekseen ja laittaa selaimen osoiteriville?

Nyt putosin kyllä kärryiltä, että miten se, tuleeko tieto osoiterivillä vai POST datana tms. vaikuttaa tilanteeseen.

Mutta toki voit rakentaa mieleisesi sanoman, kun tiedossasi kerran on tuo jaettu salaisuus (Nordean testin tapauksessa LEHTI). Normaaliympäristössä vain pankin ja palveluntarjoajan pitäisi sopia heidän kesken sovittu jaettu salaisuus. Ilman sitä tuon MAC:n generoiminen on jossain määrin haastavaa.

Kokeile vaikka muokata tuosta jotain ja katsoa mitä se sivu sanoo.

lrp [30.06.2009 15:47:40]

#

Se kaiketi tulee GET-datana urlin mukana. Mutta tarkistussumman väärentäminen on tosiaan hankala juttu jos ei tiedä avainta.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta