giovedì 23 ottobre 2008

AriaDSL Autologin /2

Segue da AriaDSL Autologin /1.

Visto che la funzione che esegue l'hash MD5 è scritta in Javascript e visto che non avevo assolutamente voglia di convertirla decisi di adottare Windows Scripting Host per automatizzare la procedura, con la consapevolezza che in seguito un (eventuale) porting su Linux sarebbe stato difficoltoso, ma anche curioso di imparare a usare questo strumento. L'idea generale è rappresentata dal corpo dello script:

var strURL = "http://login.ariadsl.it/login"
var strPopupTitle = "Connessione ad AriaDSL";

autoConnect();

function autoConnect()
{
    // 1. scarica la pagina di login
    var strLoginPageBody = getPage(strURL);
   
    // 2. estrae la 'password' generata dal sistema e ne fa l'hash MD5
    var strPassword = extractPassword(strLoginPageBody);
   
    var charStringPassword = convertToCharString(strPassword);
    var strMD5 = hexMD5(charStringPassword);
   
    var strUsername = "ariadsl";
   
    // 3. prepara la chiamata alla pagina di login con i parametri
    var strParms = "";
    strParms = buildParametersList(strParms, "username", strUsername);
    strParms = buildParametersList(strParms, "password", strMD5);
    strParms = buildParametersList(strParms, "popup", "true");
    strParms = buildParametersList(strParms, "dst", "");
   
    // 4. invia la richiesta
    var resultPage = postPage(strURL, strParms);
   
    var WshShell = WScript.CreateObject("Wscript.Shell");
   
    // 5. visualizza un messaggio di successo/fallimento
    if (resultPage.indexOf("You are logged in")<0)
    {
        intButton = WshShell.Popup("Problema con la connessione!", 60, strPopupTitle, 21);
        if (intButton==4)
        {
            autoConnect();
        }
        else
        {
            intButton = WshShell.Popup("Connessione non effettuata!", 10, strPopupTitle, 16);
        }
    }
    else
    {
        intButton = WshShell.Popup("Connessione effettuata con successo", 5, strPopupTitle, 64);
    }
}

Le funzioni invocate verranno descritte in un post successivo (continua)

Nessun commento: