Po kilku próbach udało mi się odpalić Token GSM jako oryginalną aplikację Java ME (midlet). Opisane tutaj próby (konwersja aplikacji przy pomocy getAPK) zawiodły, ponieważ mam standardową wersję oprogramowania w fonie i na razie nie planuje jej zmieniać: Samsung I5700 (GT-I5700), 2.1-update1, i570EXXJC1, XXJCE
Na czym polega sztuczka? Przy pomocy programu CatLog znalazłem w logach taki oto stacktrace:
12-02 17:28:21.223 W/JkFile ( 4753): file not found to read/write: eurobank / Wheel Sp. z o.o.TokenGSM0
12-02 17:28:21.278 E/JkFile ( 4753): java.io.FileNotFoundException: /data/data/jp.aplix.midp/files/RMS/eurobank / Wheel Sp. z o.o.TokenGSM0
12-02 17:28:21.278 E/JkFile ( 4753): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
12-02 17:28:21.278 E/JkFile ( 4753): at java.io.RandomAccessFile.<init>(RandomAccessFile.java:145)
12-02 17:28:21.278 E/JkFile ( 4753): at com.jblend.android.internal.JkFile.<init>(JkFile.java:324)
12-02 17:28:21.278 E/JkFile ( 4753): at com.jblend.android.internal.JkFile.open(JkFile.java:49)
12-02 17:28:21.278 E/JkFile ( 4753): at com.jblend.android.MidpView.nativeStartMidpApp(Native Method)
12-02 17:28:21.278 E/JkFile ( 4753): at com.jblend.android.MidpView.access$200(MidpView.java:47)
12-02 17:28:21.278 E/JkFile ( 4753): at com.jblend.android.MidpView$MidpThread.run(MidpView.java:732)
Fix polega na modyfikacji pobranego z banku tokena a dokladnie pliku MANIFEST.MF w pliku jar. Zamiast linii
MIDlet-Vendor: eurobank / Wheel Sp. z o.o.
powinno być
MIDlet-Vendor: eurobank
Najwyraźniej JBlend nie potrafi sobie pradzić ze spacjami oraz znakiem / w nazwach katalogów.
Instrukcja krok po kroku:
1. przekładamy kartę SIM do innego telefonu (u mnie zadziałało z SE K750i),
2. dzwonimy do banku po nowy token i zamawiamy go na żądany numer telefonu,
3. na telefon powinien przyjść SMS. Wybieramy informacje, tak aby zobaczyć jego treść. Powinniśmy zobaczyć link w stylu
http://token.eurobank.pl/TokenGSM-hexhexhex.jad
4. przepisujemy (bolesne) link do przeglądarki na komputerze. Zamiast pliku jad pobieramy plik jar
http://token.eurobank.pl/TokenGSM-hexhexhex.jar
5. otwieramy plik jar (ja użyłem do tego file-rollera z Gnoma; jar to zwykły plik zip),
6. edytujemy plik META-INF/MANIFEST.MF
7. linie MIDlet-Vendor modyfikujemy na “MIDlet-Vendor: eurobank”
8. zapisujemy plik jar,
9. kopiujemy plik jar na kartę pamięci telefonu. Odpalamy aplikacje “Aplikacje Java” (JBlend), opcje - skanuj kartę pamięci, dodaj aplikacje Token GSM,
10. odpalamy token (działa!) i wpisujemy kod aktywacyjny, który powinniśmy dostać na maila,
11. logujemy się do banku.
W moim przypadku nie zadziałało przegranie starej aplikacji Token z poprzedniego telefonu (wspomnianego SE). Stary plik jar różni się od nowego rozmiarem, więc najprawdopodobniej aplikacje te są lekko modyfikowane lub istnieje pewna pula różniących się od siebie aplikacji. Po zmodyfikowaniu MIDlet-Vendor aplikacja uruchomiła się normalnie, zaakceptowała kod przysłany z banku lecz do serwisu online zalogować się nie dało - komunikat “zła wartość tokena”. Poza tym, wydaje mi się, że wszystko by zadziałało poprawnie, gdybyśmy wysłali token na inny numer. Grunt to odczytać link z SMSa i pobrać jarka na zwykłym komputerze. Jestem przekonany, że model telefonu oraz IMEI nie mają tutaj najmniejszego znaczenia. Nie wiem jak numer telefonu. Może być tak, że w zależności od sumy kontrolnej numeru telefonu przypisywana jest nam odpowiednia aplikacja z puli. Trudno powiedzieć, trzeba by spróbować. Mnie się już nie chce 🙂
Powodzenia!