Showing posts with label android emulator. Show all posts
Showing posts with label android emulator. Show all posts

Tuesday, December 6, 2011

Tak for kaffe ... Statoil

Statoil har lagt en reklame app ud i market. Egentlig synes jeg den virker ganske gennemarbejdet, specielt hvis man sammenligner den med andre apps der ikke rigtig har andet formål end at reklamere for brands.

Kaffekortet
Men en sjov feature appen har er dette her klippekort.

 

Tanken er naturligvis at man skal trykke på en kop og give telefonen til personalet man handler med, for så at unlocke en kop af gangen - indtil man har købt 10 kopper kaffe.

Koden til at unlocke en kop kan man af gode grunde ikke vide, app'en spørger en statoil server ude i verden efter om det man har indtastet er korrekt og den svare selvfølgelig ugyldig kode, med mindre man er statoil ekspedient ... formentlig :)


Det er jo i bund og grund som det skal være, og man tænker ved sig selv - endelig nogen som har lavet det som det bør være - Men nææh nej! :)

Af en eller anden grund har udviklerne af app'en valgt at lade tælleren ligge ude på telefonen, hvilket betyder at snydere i praksis bare kan sætte et 10 tal ind i en xml fil - og så tror applikationen ellers blindt på denne tæller.

Hvis man tager et hurtigt kig ned i mappen /data/data/statoil.denmark/shared_prefs finder man 2 xml filer, som formentlig oprettes via androids Shared Preferences API.

backedUpPreferences.xml indeholder tælleren - så kan den ellers bare skiftes ud med adb push og en tilsvarende fil med tæller med en værdi efter ejet ønske. Dette kræver dog at telefonen er rooted, eller at man som jeg selv - blot leger med applikationerne i android emulatoren.

Og wupti - en gratis kop kaffe:

Nu får jeg nok selv svært ved at forklare en eventuel Statoil ekspedient at den er go nok og at jeg altid har min android emulator med mig når jeg handler kaffe, men ikke destomindre vil jeg da synes det er en halv problematisk implementering for Statoil.

Ud fra deres navngivning af filen backedUpPreferences.xml antager jeg at det er fordi at de ønsker at tage backup til folks google konti med android frameworket, men jeg kan ikke forstå hvorfor de ikke bare tager backup af den unikke device key de alligevel genere og gemmer i GLOBAL_PREFERENCES.xml og så ligger tælleren i en database hos dem selv sammen med deviceid'et. Og så selvfølgelig kun ligger +1 til når der angives en korrekt kontrol kode samt at applikationen så spørger deres "Mobile Application Backend" om hvormange kopper der er købt, i stedet for at stole blindt på en lokal tæller.

Skulle brugeren midste sin telefon og købe en ny - burde den unikke nøgle blive restored når han installere applikationen igen.

Update 19. 04. 2012 Se Historien om en kop kaffe

Monday, November 14, 2011

Danske Banks udokumenterede smartphone API

Halløj

Nu hvor jeg har fået sat min android emulator op så jeg kan læse krypteret ssl trafik mellem emulatorens applikationer og internettet, har jeg været ved at rode med Danske Banks Mobilbank app for at hitte ud af hvordan den snakker med banken, så jeg selv kan snakke med banken! Jubii.

Grundene til det er mange, men mest af alt lysten til at lære hvordan de har lavet kommunikationen også tilfredsstille personlige krav som f.eks:

  1. At have adgang til mine egne bank data, og gøre med dem hvad jeg vil.
  2. Lave et vækkeur der donere penge når man sover over
  3. Android widgets der viser ens balance eller måske 3-4 sidste transaktioner.
  4. Dashboard widgets med balance og transaktioner.
  5. Lave et stort led display til lejligheden der viser fælleskontoens balance - Så man let kan finde ud af om man skal gå ud og spise eller lave noget selv, desværre er de halv dyre, så det ender nok med at blive et meget lille lcd display :)
Der er flere tools der tilbyder at lave mitm attacks, wireshark, fiddler (desværre kun til windows) og så vidre, jeg har dog fundet Charles web proxy meget let at gå til specielt på mac'en, men hvis der er tale om andet end http(s) trafik er wireshark formentlig at fortrække. 


Oven over ses et pr screenshots af hvordan det forgår, man starter først Charles op og enabler SSL proxying, starter sin emulator med parameteren -http-proxy fra dokumentationen og derefter sender den alt tcp trafik igennem charles. 

Efter at ha luret lidt på hvordan den snakker med banken, lavede jeg mit eget lille terminal app som en slags proof of concept ... ting.

Appen er implementeret i php og skulle kunne køre direkte fra en hver Mac. (Eller andet grej med PHP 5.3 eller højere).
Kildekoden findes her: mobilbank.php og DanskeBank.php

Lad mig endelig høre om spændende brug af api'et :)