Reverse engineering sul servizio MMS via Web di Vodafone.it

Ormai da qualche tempo il servizio MMS via Web di Vodafone.it è stato sospeso. Ne è la riprova il fatto che sul sito non esiste più il link che ci consentiva di accedere all’interfaccia per l’invio degli MMS.

Nonostante ciò non mi sono dato per vinto ed ho iniziato ad esaminare il file VodafoneMMS.py di MoioSMS. Grazie a questa analisi ho individuato la URL che identifica l’interfaccia per l’invio degli MMS, ovvero:

http://mmsviaweb.net.vodafoneomnitel.it/WebComposer/web/mms.jsp

Inolte, per poter visualizzare tale pagina è necessario che prima vi logghiate sul sito della Vodafone, in modo da salvare in un cookie l’ID della sessione (JSESSIONID).

 

mms.jpg

Per quanto mi riguarda, però, il problema non è stato risolto. Infatti utilizzavo tale servizio per monitorare alcuni server (gli alert mi arrivavano direttamente sul telefonino sottoforma di MMS). Il client che mi permetteva di inviare i messaggi da bash era MoioSMS (come avrete certamente intuito), progetto open source realizzato da Silvio Moioli e non più mantenuto. Fatto sta che da qualche settimana gli alert hanno cessato di arrivare sul mio telefono cellulare, indi per cui ho deciso di realizzare uno scrip che svolge le stesse funzioni del client menzionato in precedenza.

Ecco lo scrip:

#!/bin/bash

echo "Inserisci il destinatario:"

read destinatario

echo "Inserisci l'oggetto del messaggio:"

read oggetto

echo "Inserisci il testo del messaggio:"

read testo

echo "$testo" > text

sed -e "s/ /%20/g"  text > encoded

enc=$(cat encoded)

curl -c cookiev.txt -F "username=vostrousername" -F "password=vostrapassword" https://www.vodafone.it/190/trilogy/jsp/login.do 2&>1
curl -b cookiev.txt --data "recipient=$destinatario&subjecttosend=$oggetto&SmilName=&TextName=$enc&ImageName=&AudioName=&nextPage=/web/servletresult.html" http://mmsviaweb.net.vodafoneomnitel.it/WebComposer/web/elaborapop.jsp | grep -o -E '"s*(.*)>(.*)"' > out

sed -n '2p' out > out1

sed -e s/"//g out1 > out2

sed -e "s/ /+/g" out2 > out3

url="http://mmsviaweb.net.vodafoneomnitel.it"

url1=$(cat out3)

url2=$(echo "$url$url1")

curl -b cookiev.txt $url2 2&>1

rm out*

rm cookiev.txt

rm text

rm encoded

exit 0

Come potete notare lo scrip prevede un minimo di interattività, ovvero richiede l’inserimento del numero del destinatario (munito di prefisso +39), l’oggetto del messaggio ed il testo.

Affinchè il messaggio possa essere inviato correttamente, è necessario che il testo venga sottoposto ad url-encoding. Inoltre, poichè trattasi di uno scrip versione alfa, ho previsto l’url-encoding solo per gli spazi. La riga di codice che svolge tale funzione è la seguente:

sed -e "s/ /%20/g"  text > encoded

A questo punto, grazie a cURL ho proceduto con l’invio delle credenziali per il login sul sito della Vodafone:

curl -c cookiev.txt -F "username=vostrousername" -F "password=vostrapassword" https://www.vodafone.it/190/trilogy/jsp/login.do 2&>1

Una volta loggato (e salvate le info necessarie all’interno di un apposito cookie), ho inoltrato l’MMS vero e proprio:

curl -b cookiev.txt --data "recipient=$destinatario&subjecttosend=$oggetto&SmilName=&TextName=$enc&ImageName=&AudioName=&nextPage=/web/servletresult.html" http://mmsviaweb.net.vodafoneomnitel.it/WebComposer/web/elaborapop.jsp | grep -o -E '"s*(.*)>(.*)"' > out

E qui viene il bello. Infatti cURL non supporta javascrip, quindi ogni qualvolta cercavo di inviare un MMS mi beccavo una pagina Web del tipo:

<html><head><title>302 Moved Temporarily</title></head>
<body bgcolor="#FFFFFF">
<p>This document you requested has moved temporarily.</p>
<p>It's now at <a href="/WebComposer/web/invia.jsp?SmilName=x1321909087221&recipient=345*******&subjecttosend=prova">/WebComposer/web/invia.jsp?SmilName=x1321909087221&recipient=345*******&subjecttosend=prova</a>.</p>
</body></html>

ovvero un fantastico redirect HTTP.

Bhè, alla fine non si è rivelato essere un ostacolo insormontabile, è bastato infatti dare in pasto la pagina precedente a grep, in modo da estrapolare il contenuto delle virgolette (“”) mediante regex:

grep -o -E '"s*(.*)>(.*)"' > out

Il file out aveva il seguente contenuto:

"#FFFFFF"
"/WebComposer/web/invia.jsp?SmilName=x1321909004082&recipient= 39345*******&subjecttosend=prova"

Fortunatamente sed è venuto nuovamente in mio aiuto:

sed -n '2p' out > out1

sed -e s/"//g out1 > out2

sed -e "s/ /+/g" out2 > out3

Ovvero ho rispettivamente:

1) ricavato la seconda riga del file out, per poi inserirla in out1;

2) rimosso le virgolette;

3) sostituito l’unico spazio vuoto con il carattere + (per il prefisso internazionale).

A formattazione dei dati completata, ho eseguito l’invio definitivo dell’MMS:

curl -b cookiev.txt $url2 2&>1

dove $url2 non è altro che la concatenazione tra le variabili stringa $url ed $url1:

url="http://mmsviaweb.net.vodafoneomnitel.it"

url1=$(cat out3)

url2=$(echo "$url$url1")

Infine, ho rimosso tutti i file temporanei generati durante l’esecuzione dello scrip.

Per poter eseguire lo scrip dovete salvarlo in un file testuale, chiamandolo, ad esempio, autovodafone:

nightfly@nightbox:~$ sudo nano autovodafone

Rendete eseguibile il file appena creato:

nightfly@nightbox:~$ sudo chmod +x autovodafone

Generate un file di log (vuoto) nella directory /var/log:

nightfly@nightbox:/var/log$ sudo touch autovodafone.log

Ed avete finito.

Adesso abbiamo il nostro piccolo client bash per l’invio degli MMS Vodafone.

A presto.

PS: tempo permettendo estenderò lo scrip, realizzando l’URL-encoding di tutti i caratteri speciali e procedendo con l’implementazione di alcuni meccanismi di controllo per identificare l’esito dell’invio.

Reverse engineering sul servizio MMS via Web di Vodafone.itultima modifica: 2011-11-22T20:27:21+01:00da nazarenolatella
Reposta per primo quest’articolo