Archive for » October, 2012 «

Hirnzellen knacken beim Möbelpacken

Wer braucht schon Sudoku?

Also ehrlich. Wer braucht schon diese Rätselheftchen, die man im Kiosk für knapp 2 Franken kaufen kann.
Wer seine Gehirnmasse trainieren will, der kann uns das nächste Mal beim Zügeln helfen 🙂

Da gibts nämlich die kniffligsten Aufgaben

Wo waren schon wieder diese IKEA Anleitungen…?

  • Aah, da sind sie ja. Wo sind aber die 64 Schrauben für die Schranktüren?
  • Warum musste ich mir einen überdimensionierten Schrank kaufen. Das Zeug kann man ja nur in senkrechter Position aufbauen.
  • Zwischen den Lippen finden 13 Schrauben Platz (Anzahl kann je nach Grösse der Klappe variieren)

Wie transportiere ich ein Sofa mit dem Lift?

  • Gar nicht! Blöder Pythagoras. Die Rechnung ging gar nicht auf.

Das Bett heisst Hopen, quietscht aber beim Poppen. Schlage IKEA vor diesen Namen zu ändern.

Ah ja, die Lampen. Kein Problem, kaufen wir doch neue. So energiesparende. Sind ja momentan ganz im Trend:

  • Ähm… ja. Energiesparlampe, stromsparende Halo Eugen Lampe, LED, Leuchtröhre.
  • 11 Watt entspricht 68 Watt. 764.4657 Lumen, kalt, warmweiss, blau, gelb (ist ja ein ganzer Farbkasten hier)
  • Leuchtet sofort 100%, manche erst nach 30 Sekunden (als ich sie anschloss leuchteten sie gar nicht)
  • Hält 2 Jahre, 6 Jahre, sogar 25 Jahre (will mal sehen wer so lange die Garantie aufbewahrt)

Strom und so

  • Phasenprüfer: Egal ob der Schalter auf ON oder OFF ist, der blöde Prüfer leuchtet andauernd.
  • Holen wir ein Multimeter: Wieso fliessen 78 Volt wenn der Schalter auf OFF ist?
  • Bohrmaschine läuft nicht wenn die Sicherungen draussen sind.
  • Sind diese Handschuhe gegen Stromschläge gedacht?
  • Im Wohnzimmer fehlt ein Draht. Man kann keine Lampe mit einem Draht anschliessen. Oder haben wir Wireless Strom verpasst?
  • 650 Watt Bohrmaschine reicht nicht um Löcher in die Decke der Küche zu bohren. Liebe Nachbarn: Wir bitten um Entschuldigung für die 40 Minuten um drei Löcher zu bohren.
  • Der Null-Leiter ist der blaue Draht, bei alten Systemen der braune Draht. Bei Conforama Lampen anscheinend der rote Draht.

Hausratversicherung

  • Befindet sich in der Nähe von 100 Metern ein Hydrant? Was weiss ich?!? Die Feuerwehr ist grad um die Ecke, reicht das?

Was ist der maximale Winkel beim Verlegen vom Netzwerkkabel, damit die Elektronen nicht aus der Kurve schiessen?

Wieviel 20 Räppler brauche ich um die Kochwäsche vollständig durchlaufen zu lassen?

Die absolute Knacknuss?

100 Punkte gehen an die gekaufte Lampe von Thailand.
Ich brauchte 1:20h um eine 30-teilige Lampe zusammenzubauen. Hey, immerhin eine halbe Stunde weniger als beim Lucerne Marathon.
Und ohne Fehler, musste nie von vorne anfangen. Hab mir auch schön viel Zeit genommen bzw. nehmen müssen.
Mein räumliches Denkvermögen hat sich vermutlich um 687% verbessert.

Seht aber am Besten selbst wie das Kunstwerk nun aussieht.

Category: Fun  Tags: ,  2 Comments

Debug- und Testcode haben nichts im Release zu suchen

Jaja, da hab ich mir doch die Sunrise Mein Konto App von Google Play runtergeladen. Mit der App kann man unter sein eigenes Sunrise Konto zugreifen und dabei laufende Kosten, Inklusivleistungen und Rechnungen der eigenen Produkte einsehen. Es ist wirklich eine gute App, teilweise umständlich zu navigieren aber ansonsten ist alles ersichtlich was man an Kontoinformationen braucht.

Und Windows Phone 7?

Da dachte ich mir doch: Hey, eine solche App muss ich auf dem Windows Phone 7 auch haben. Aber leider Fehlanzeige. Für WP7 gibts von Sunrise noch keine App.
Ja gut, dann schreib ich doch selber eine Sunrise Mein Konto App fürs WP7.

Doch so einfach ist das nicht: Die Verbindung zwischen App und Server ist mit SSL gesichert. Ich habe keine Ahnung welche Services (REST, SOAP?) an welchen Endpunkten aufgerufen werden. Was für Daten und in welcher Form (JSON, XML?) diese übertragen werden. Wie läuft der Login Vorgang, HTTP Authentication, GET/POST Variablen, selbstgemachtes Gemüse? Hier wurden die Hausaufgaben gut gemacht, der Datenverkehr ist verschlüsselt.

Aber ich möchte dennoch herausfinden was so vor sich geht. Machen wir doch eine Man in the Middle Attacke mit dem Emulator. Dafür werde ich meine persönlichen Login Daten opfern müssen.
Das Übliche halt:

  • Meinen PC als Proxy dazwischenschalten, am Besten mit Charles Web Debugging Proxy
  • Lokales Zertifikat erstellen wo www1.sunrise.ch als Common Name eingetragen ist
  • Das “Sunrise” in den Zertifikatsspeicher des Emulators oder eines echten Android Gerätes (Root Zugriff erforderlich) installieren
  • Applikation auf Emulator oder Android Gerät laufen lassen und mit LogCat zugleich noch den Output der App aufzeigen

Aber ich bin gerade auf Wohnungssuche, habe also keine Zeit und brauche eine schnellere Lösung 😉

Hey App, lass mich rein, ich bin Entwickler

Meine Faulheit muss ja bekanntlich belohnt werden. Und das wurde ich auch. 😀
Ich wollte sehen ob die App irgendwelchen Debug Output an LogCat sendet und habe die offizielle App von Google Play runtergeladen. Der Output war jedoch minimal. Einige Standardmeldungen wie “Login successful” kamen heraus aber nichts Auffschlussreiches über die Internals der App.

Also habe ich mich etwas am APK File zu schaffen gemacht. Mit dem APK MultiTool die App dekompiliert, und anschliessend das AppManifest.xml in Klartext geöffnet.
Folgendes ist mir aufgefallen:

  1. android:debuggable=”true” ist nicht gesetzt. Ist auch gut so, ist ja schliesslich ein Release und keine Debug Version.
  2. Eine Activity mit Namen Administration ist registriert. Lässt vermuten, dass es irgendwo in der ofiziellen App einen ServiceDialog o.ä. gibt.
Also schön das Debug Flag setzen und die XML Datei speichern. Mit dem APK MultiTool die “modifizierte” Applikation wieder in ein APK File builden und anschliessend noch erneut signieren.

Oh, ich bin ja schon drin

Und wer hätte das gedacht: Die Debug Statements wurden alle schön brav mit in die ofizielle App kompiliert. LogCat spuckte fröhlich alle möglichen Statements raus. JSON Objekte und Inhalt, Hostnamen und Pfade der jeweiligen Services, Login Infos uvm.

LogCat Output

Debug Infos im LogCat Output

Nun gut, aber was ist mit der registrierten Administration Activity? War nicht schwer herauszufinden. Sobald man im Login Screen ist, einfach mal den “Search” Button drücken (F5 im Emulator) und schon kommt man ins Service Menü, oder sollte ich besser sagen in den Test Dialog? Das neue APK File auf mein Android Gerät installiert. Übrigens: Die App lässt sich auch installieren, wenn “Installation von Nicht-Market Anwendungen zulassen” deaktiviert ist.

Fazit

Service Dialog

Service Dialog

Es ist nichts sensitives ans Tageslicht gerückt. Ich habe weder Zugriff auf vertrauliche Kundendaten erhalten oder sonstige Hinweise auf sicherheitskritische Bereiche. Da haben die Entwickler der App gute Arbeit geleistet.

Aber dennoch sollte man darum bemüht sein Debug Informationen, Testdaten, Testabläufe und sonstige interne Informationen nicht in den offiziellen Release zu veröffentlichen. Solche Daten verschwenden nicht nur zusätzlichen Speicher auf dem Phone, sondern sie können sicherheitskritische Informationen an jedermann preisgeben.

Testabläufe sollten auch möglichst mithilfe von Tools und Unit Tests vorgenommen werden und nicht mit echten Testern, welche auf Test Screens mit den Fingern herumdrücken. Solche Tests sind nicht immer einfach. Dies resultiert auch oft daraus, dass eine Entkopplung vom User Interface und der Business Logic nicht einfach zu bewerkstelligen ist. Ein guter Ansatz um eine gute Entkopplung zu erzielen und somit die Applikation “testbarer” zu machen wäre das Model View ViewModel (MVVM) Pattern.

Ich persönlich freue mich sehr über die ganze Sache. Dadurch habe ich genug Einblicke bekommen um meine Windows Phone App zu entwickeln. Die Authentisierung läuft über HTTP POST. Die Session wird mittels eines Login Keys, welcher vom Server zugewiesen wird, identifiziert und die Daten werden im JSON Format vom Server zurückgesandt.

Category: android, Coding  Tags: , ,  Leave a Comment