Applicazioni a Pagamento anche in Italia con MarketEnabler

Andrea Baccega, 3 maggio 2009 | Categorie: Applicazioni Funzionalità Sviluppo | 58 Commenti »

Attenzione: Questa applicazione permette solamente l’accesso al market a pagamento e non incitiamo in nessun modo l’utilizzo di tale applicazione per scopi illeciti o fraudolenti.

android-market-paid-apps-italyCome preannunciato oggi lanceremo l’applicazione che aiuterà tutti quelli che si ritrovano in una zona del mondo dove non è concesso scaricare applicazioni a pagamento dall’Android market.

Se ci seguite frequentemente ( e se non lo fate forse è il caso di cominciare ;) ) saprete che ieri abbiamo lanciato una preview dell’applicazione e di quello che farà.. Ma rivediamolo anche qui:

Gli Artefici

Partiamo con presentare Tim Strazzere, un amico americano ( in realtà ho scoperto da poco che ha origini siciliane ) , che scrive articoli interessantissimi sul reversing di applicazioni e di sistemi di controllo dentro android. (link al blog)

Il suo articolo bomba fu uno che riguardava il reversing del market..  Contattandolo scoprii che stava lavorando ad uno scraper del market.

A questo punto avvenne il nostro incontro su gtalk .. Io gli rompevo le scatole e lui mi sopportava ;)

L’altro artefice di quest’applicativo sono io Andrea Baccega che si era assolutamente annoiato di chiedere sempre al suo amico d’oltre oceano se poteva procurargli le applicazioni a pagamento da poter recensire.


Il metodo

Io e Tim ci siamo messi al lavoro per trovare il modo di abilitare il market a pagamento anche in italia. Prima di esporvi il metodo e le soluzioni adottate, vorrei farvi capire come siamo arrivati a produrre queste idee di risoluzione.

Per poter mettere mano a quello che il market restituiva bisognava capire come lavora e che tipologia di dati si scambia con i servers di google. Non è bastato un semplice sniff dei pacchetti facendo un semplice MITM.. Come ci si potrebbe aspettare i dati scambiati non sono in  chiaro..

A questo punto, se volevamo capire che cosa si stava dicendo android e google, dovevamo reversare il market e capire esattamente quale funzione si occupava della codifica e quale della decodifica.. Ma cosa ancora più importante era capire che cosa facevano questi due metodi.

Con sorpresa abbiamo scoperto che i metodi di codifica e decodifica utilizzati sono ampiamente documentati ed è la Base64.decodeWebSafe e la Base64.encodeWebSafe .. Entrambi dispobili nelle google data api.

Una volta sniffati e decompressi un buon numero di pacchetti abbiamo trovato essenzialmente alcuni dati che sapevamo di dover cambiare:

  • Nome dell’operatore ( che nel caso mio era Vodafone IT e Strazzere aveva T-Mobile)
  • Numero dell’operatore ( che nel caso mio era 22210 e invece quello corretto era 31026 ) ( Per chi volesse sapere il numero dell’operatore è composto da MCC+MNC )

Secondo le nostre ipotesi infatti, semplicemente cambiando ogni occorrenza di questi valori, avrei potuto leggere il market a pagamento.

Dopo un piccolo BrainStorming abbiamo ipotizzato alcune strade:

  1. Intercettare il pacchetto e cambiarlo onthefly ( Costoso e richiedeva troppo tempo )
  2. Cambiare il core di android che gestisce le chiamate ad internet.
  3. Cambiare il core di android che gestisce il nome e il numero dell’operatore.

Framework.jar

Di primo acchito mi sono subito messo all’opera per ricompilare interamente android e creare una patch che avrebbe dovuto gestire e restituire i valori t-mobile invece di quelli vodafone..

Sebbene questa procedura sia stata lunga e dolorosa lungi da me rompervi con altri dettagli.. Per quei pochi curiosi, ho dovuto cambiare ServiceState ( è facile intuire dove).

Una volta ricompilato android con le modifiche abbiamo incrociato le dita e con qualche sforzo sono riuscito a far girare la mia versione di android su una thedude patchata.

A nostra sorpresa però l’enorme lavoro non è bastato poichè il market non utilizzava solamente la classe ServiceState e infatti metà dati erano italiani e metà americani.. La soluzione perciò era un altra..

Setprop

Nella versione modificata di thedude ho voluto effettuare un ultimo test. Per chi non lo sapesse android ha una lista di (passatemi l’imprecisione) variabili globali che sono nella realtà delle proprietà.

Alcune di queste proprietà sono scrivibili mentre altri sono solamente readOnly. Attraverso alcuni comandi di bash abbiamo scoperto che la mia modifica non cambiava alcune proprietà e dovevano essere cambiate manualmente atraverso la shell..

Dopo alcuni tentativi ci siamo riusciti… E io vedevo le applicazioni a pagamento!!!.. A questo punto Tim mi dice:

“Vuoi vedere che senza la tua patch di framework.jar e solamente utilizzando opportunamente setprop riesci ad avere il market a pagamento?”

Presto fatto, ho scaricato l’ultima versione di android dell’intramontabile JesusFreke e l’ho flashata sopra a tutto il lavoro che avevo appena fatto ( ovviamente facendo un bel nandroid backup ) ..

Apro la jf faccio il login, effettuo tutti i comandi di setprop e provo il market… … … Funziona!!!

Il risultato di questa scoperta è che tutte le idee che ci eravamo fatti, tutto il brainstorming operato è stato inutile, la soluzione ai nostri problemi era così semplice che nessuno dei due ci aveva  pensato .. Almeno non fino alla fine :P

Inoltre, questa ultima soluzione permette di non essere firmware dipendenti.. Se fosse stata necessaria la patch a framework.jar la soluzione sarebbe stata applicabile solamente ad alcuni firmware.

L’applicazione

Bando alle ciance e parliamo dell’applicazione , del suo utilizzo e del disclaimer.

Disclaimer

  • Come al solito, io non sono responsabile dell’utilizzo che ne farete, la mia applicazione vuole solo essere un Proof Of Concept e abilitare la possibilità ( Ancora limitata ) di vedere le applicazioni a pagamento.. Anche in Italia.
  • Se utilizzando l’applicazione combinerete qualche casino non mi ritengo responsabile.
  • L’applicazione sarà a breve rilasciata sotto GPL ( appena trovo 10 minuti per sincronizzare eclipse. )
  • Attenzione: Questa applicazione permette solamente l’accesso al market a pagamento e non incitiamo in nessun modo l’utilizzo di tale applicazione per scopi illeciti o fraudolenti.

Come utilizzare l’applicazione

L’applicazione ha solamente 2 bottoni ;) uno a destra e uno a sinistra..

  • Il Bottone di Sinsitra abilita il market.
  • Il bottone di destra ripristina i valori normali ( in caso qualche applicazione riscontri dei problemi dopo la modifica al market ).

Più facile di così ;)

Nota: Ad ogni riavvio bisogna aprire la applicazione per abilitare la prima volta il market.

Download di Market Enabler

L’applicazione può essere scaricata da qui.

Installazione dell’applicazione

Per installare l’applicazione dovrai semplicemente lanciare il comando

adb install MarketEnabler.apk

o dal browser di android visitate questo link : http://tinyurl.com/marketenabler

Per problemi con la applicazione, riferitevi al nostro forum!

Donazioni: Le donazioni sono sempre ben accette! Pubblicheremo inoltre al più presto un elenco di tutti i donatori che credono nel nostro lavoro.

Per donare (anche 1€), clicca qui.

CopyRight

Potete copiare o prendere spunto da quest’articolo e ridistribuire l’app ( che verrà presto ridistribuita in GPL ) purchè venga citata la fonte dell’articolo e che il download link non venga cambiato.

English: You could copy/translate this post or redistribute the app ( which will be soon released under GPL )  but you’ve to cite this post and do not change the download link of the app.

Nota

Per utilizzare il market a pagamento dovrete registrarvi un account su google checkout. Google Checkout è una piattaforma di pagamento sicuro simile a paypal.

Per farlo usate il browser del vostro pc e puntatelo qui. Le istruzioni di google vi guideranno passo passo ;)

English Version of this Post

Probably androidiani.com Staff will release an english version of this post.. Otherwise, if Tim Strazzere will do it, we will cite them.  So stay Tuned ;)

Tag: , , , ,

Riguardo l'autore di quest'articolo Andrea Baccega

Altri articoli su Android interessanti:

Ti piacerebbe scrivere un articolo per androidiani?
Visita questa pagina e scopri come diventare un nostro blogger!!
  • http://androidandme.com/ androidandme

    +1 for English version.

  • http://androidandme.com androidandme

    +1 for English version.

  • 65paul

    ho appena comprato “documents to go”.
    Grandi Ragazzi!!!

  • 65paul

    ho appena comprato “documents to go”.
    Grandi Ragazzi!!!

  • ducati

    bravi jesolani! me piase

  • ducati

    bravi jesolani! me piase

  • Pingback: strazzere.com » Blog Archive » Purchase applications outside of the “authorized” zones

  • http://www.strazzere.com/blog/ Tim

    English version is up andrea!

    http://strazzere.com/blog/?p=255

  • http://www.strazzere.com/blog/ Tim

    English version is up andrea!

    http://strazzere.com/blog/?p=255

  • Pingback: Androidiani: Android paid apps now available worldwide with MarketEnabler and Androidiani.com | android, android market

  • Pingback: MarketEnabler: Activa las aplicaciones de pago en el Market | EsferaAndroid

  • 65paul

    scusate, ma comprare dal market è lecito o si può solo osservare senza comprare nulla?

  • 65paul

    scusate, ma comprare dal market è lecito o si può solo osservare senza comprare nulla?

  • Giovanni

    Grazie mille ragazzi per il vostro lavoro… Siete bravissimi!!!

    Una domanda stupida… ma i soldi se li prendono dall’account di google o dalla scheda?

  • Giovanni

    Grazie mille ragazzi per il vostro lavoro… Siete bravissimi!!!

    Una domanda stupida… ma i soldi se li prendono dall’account di google o dalla scheda?

  • DeeDeND

    Complimenti per questa applicazione!

  • DeeDeND

    Complimenti per questa applicazione!

  • http://emuboy.homelinux.com/ emuboy

    Ho segnalato l’articolo inglese ad hackaday.com , direi che merita :)

  • http://emuboy.homelinux.com emuboy

    Ho segnalato l’articolo inglese ad hackaday.com , direi che merita :)

  • http://www.androidiani.com/ Sebastiano

    @65paul: non si sa se sia lecito o meno, però è google che fa affari così :)

    @emuboy: tnx :) speriamo ci linkino lol

  • Pingback: Market Enabler geeft toegang tot betaalde Android-applicaties > Nieuws > Androidplanet.nl

  • http://www.androidiani.com Sebastiano

    @65paul: non si sa se sia lecito o meno, però è google che fa affari così :)

    @emuboy: tnx :) speriamo ci linkino lol

  • Vesponauta

    Davvero un’applicazione unica, sono fiero che sia partita dal caro Andrea!

  • Vesponauta

    Davvero un’applicazione unica, sono fiero che sia partita dal caro Andrea!

  • Pingback: Androidmanija » Blog Archive » Nuo šiol Android Market mokamos programos prieinamos visiems

  • http://www.araneum.it/android/ Rolando Ramieri

    Ciao a tutti, vi seguo da quando ho cominciato a lavorare con la piattaforma Android, e mi sembrava assurdo che non fosse possibile utilizzare il market in Italia!
    Grazie a questa applicazione, il problema sembra bypassato, complimenti a tutti.
    Approfitto per dirvi, se ne avete voglia, di dare uno sguardo alla pagina web (http://www.araneum.it/android/) che illustra le funzionalità dell’applicazione che ho sviluppato, basata sulla gestione degli onomastici.
    L’applicazione è acquistabile sul market e si chiama “Name Day” (Onomastici) al costo di 2 US$.

    Grazie dell’ospitalità

    Rolando Ramieri

  • http://www.araneum.it/android/ Rolando Ramieri

    Ciao a tutti, vi seguo da quando ho cominciato a lavorare con la piattaforma Android, e mi sembrava assurdo che non fosse possibile utilizzare il market in Italia!
    Grazie a questa applicazione, il problema sembra bypassato, complimenti a tutti.
    Approfitto per dirvi, se ne avete voglia, di dare uno sguardo alla pagina web (http://www.araneum.it/android/) che illustra le funzionalità dell’applicazione che ho sviluppato, basata sulla gestione degli onomastici.
    L’applicazione è acquistabile sul market e si chiama “Name Day” (Onomastici) al costo di 2 US$.

    Grazie dell’ospitalità

    Rolando Ramieri

  • http://www.2030.tk/ rac

    Hy Tim
    I would be interested to extend this hack to the german market.
    Would be cool to have an app that could switch between different markets.
    You wrote that you will publish your code as GPL, are you still going to do that?

    regards rac

  • http://www.2030.tk rac

    Hy Tim
    I would be interested to extend this hack to the german market.
    Would be cool to have an app that could switch between different markets.
    You wrote that you will publish your code as GPL, are you still going to do that?

    regards rac

  • http://www.androidiani.com/ Andrea

    rac, i’m sorry … I’m andrea not Tim. And I developed the app named MarketEnabler..

    Tim is a co-worker on the idea behind.

    Plus, the app will work fine on the german market too. Bye

  • http://www.androidiani.com Andrea

    rac, i’m sorry … I’m andrea not Tim. And I developed the app named MarketEnabler..

    Tim is a co-worker on the idea behind.

    Plus, the app will work fine on the german market too. Bye

  • http://www.2030.tk rac

    Sorry Andrea… I meant you… was reading both posts at the same time and messed up the Authors ;-)

    First, thank you a lot for your effort… I’m from CH and there we dont have market access so I had to install pirated apps :-/
    But with your hack I actually could buy all this apps so developer will be pleased from your app too ;-)

    As I understood the market takes some values (MCC, MNC, …) and makes a client footprint with it to identify the target market… your application just changes this values that the market gets a footprint from a US T-Mobile and opens the US/UK Market.
    What my question was about is about:
    Certain apps are just on german market, as example RadAlert wich is protected but free app on german market.
    My idea was that your app could be extended to fake a DE T-Mobile footprint to get access to local apps.

    regards rac

  • http://www.2030.tk/ rac

    Sorry Andrea… I meant you… was reading both posts at the same time and messed up the Authors ;-)

    First, thank you a lot for your effort… I’m from CH and there we dont have market access so I had to install pirated apps :-/
    But with your hack I actually could buy all this apps so developer will be pleased from your app too ;-)

    As I understood the market takes some values (MCC, MNC, …) and makes a client footprint with it to identify the target market… your application just changes this values that the market gets a footprint from a US T-Mobile and opens the US/UK Market.
    What my question was about is about:
    Certain apps are just on german market, as example RadAlert wich is protected but free app on german market.
    My idea was that your app could be extended to fake a DE T-Mobile footprint to get access to local apps.

    regards rac

  • http://www.2030.tk/ rac

    Just saw the post from tim about manually doing it… will write you the german values when I have it ;-)

  • http://www.2030.tk rac

    Just saw the post from tim about manually doing it… will write you the german values when I have it ;-)

  • http://www.2030.tk/ rac
  • http://www.2030.tk rac
  • Pingback: Project 2030

  • http://www.2030.tk/android rac

    small bug in your code:

    gsm.operator.alpha and setprop gsm.sim.operator.alpha will stay with US on reset in the app but restored on reboot

  • http://www.2030.tk/android rac

    small bug in your code:

    gsm.operator.alpha and setprop gsm.sim.operator.alpha will stay with US on reset in the app but restored on reboot

  • http://www.androidiani.com/ Andrea

    Are you sure rac?… This is strange because it’s working for me…

  • http://www.androidiani.com Andrea

    Are you sure rac?… This is strange because it’s working for me…

  • Pingback: Esclusiva Market Enabler : come abilitare il market a pagamento in Italia e acquistare un applicazione! | Tecnophone, tecnologia e cellulari per tutti i gusti!!

  • http://www.2030.tk/android rac

    I didn’t checked every time (just once) but on reboot the values are ok so nevermind but still strange.
    Maybe some shell command you dropp of didn’t return well?
    Anyway, I wrote a little shell script to select different markets, you can find it on my site.

  • http://www.2030.tk/android rac

    I didn’t checked every time (just once) but on reboot the values are ok so nevermind but still strange.
    Maybe some shell command you dropp of didn’t return well?
    Anyway, I wrote a little shell script to select different markets, you can find it on my site.

  • http://www.androidiani.com/ Andrea

    Yes rac, Probably i don’t get the correct values..

    This is strange…

  • http://www.androidiani.com Andrea

    Yes rac, Probably i don’t get the correct values..

    This is strange…

  • http://www.2030.tk/android rac

    with my sh script its working fine so I guess Dalvik VM somehow terminates the command…

    with the script it always done in 2 sec but with your app it depends… sometimes 2 sec and sometimes I waited a minute and if I had luck it didn’t force close.
    How are you dropping the shell commands?
    I think it must hang in there somewhere

  • http://www.2030.tk/android rac

    with my sh script its working fine so I guess Dalvik VM somehow terminates the command…

    with the script it always done in 2 sec but with your app it depends… sometimes 2 sec and sometimes I waited a minute and if I had luck it didn’t force close.
    How are you dropping the shell commands?
    I think it must hang in there somewhere

  • Giovanni

    Raga ma è uscita la nuova versione? Perchè aTrackDog mi dice che c’è la versione 2.0

    Dove la trovo?