Pod mírně bulvárním názvem tohoto blogpostu nehledejte žádný návod na hákování webů státních institucí. Pouze jsem se snažil vytvořit klienta (v Javě) pro komunikaci s webovými službami nalézajícími se na serveru, který je zajištěn certifikátem vydaným certifikační autoritou PostSignum a aby to nebylo tak jednoduché, tak uživatel je autentikován na základě osobního certifikátu. Každý slušný … Pokračovat ve čtení „Jak se dostat na zabezpečené služby státní správy?“
Pod mírně bulvárním názvem tohoto blogpostu nehledejte žádný návod na hákování webů státních institucí. Pouze jsem se snažil vytvořit klienta (v Javě) pro komunikaci s webovými službami nalézajícími se na serveru, který je zajištěn certifikátem vydaným certifikační autoritou PostSignum a aby to nebylo tak jednoduché, tak uživatel je autentikován na základě osobního certifikátu.
Každý slušný člověk začne nejprve googlením, kdy najde nejeden příklad navazování spojení pomocí https (řekněme HTTP over TLS), další googlení potom poodkryje další příklady, tentokrát jak použít klientský certifikát. Na tomto základě už je možné začít stavět, nejprve tedy metoda pro získání ssl socket factory, kterou použijeme pro kontrolu identity:
Tato factory se předá do vytvářeného zabezpečeného spojení, kdy je tímto způsobem poskytnut údaj pro autentikaci uživatele na straně serveru. Tedy metoda vracející toto spojení:
[code lang=“java“]
public HttpsURLConnection getConnection() throws …{
URL url = new URL("https://server:844/");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
Teď je možné se pomocí zavolání connect() připojit, ale protože nejsou v úložišti důvěryhodných certifikátů vložené certifikátu serveru, snaha o připojení skončí s výjimkou:
[code]
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[/code]
což však nevedlo nikam, potřeboval jsem konkrétní certifikáty konkrétního stroje a s tím mi pomohla utilitka InstallCert (zdrojový kód, takže je to důvěryhodné ;-)). Vytvořený soubor jssecacerts je vlastně původní cacerts s přidanými certifikáty požadovaného serveru, takže je možné jej nakopírovat na odpovídající místo, pomocí keytool -list se podívat, jestli je vše v pořádku a opět vyzkoušet spojení.
Spojuje se, ale to je tak celé, takže se teď zabývám následujícími odkazy:
Tak nějak jsem se naučil, že nejzajímavější a nejpoužívanější jsou ty úplně nejjednodušší aplikace, o kterých by člověk při návrhu nějakého sofistikovaného systému (aka švýcarského nože) řekl, že jsou úplně na nic. Před časem jsme vymysleli úplně dokonalý tajný projekt, který měl mít množství funkcí a měl být napsaný hned a hned vržen do světa. … Pokračovat ve čtení „PlantATree“
Tak nějak jsem se naučil, že nejzajímavější a nejpoužívanější jsou ty úplně nejjednodušší aplikace, o kterých by člověk při návrhu nějakého sofistikovaného systému (aka švýcarského nože) řekl, že jsou úplně na nic. Před časem jsme vymysleli úplně dokonalý tajný projekt, který měl mít množství funkcí a měl být napsaný hned a hned vržen do světa. Napsal jsem množství prototypů, které teˇd samostatně živoří bez frontendu a defakto bez vzájemné propojenosti. Proč? Možná je toho na jednoho člověka hodně, nebo spíš je to hrozně rozprostřené do šířky a něco takového poskládat dohromady, nedejbože udržovat a upravovat…fuj! Proto jsem si to soukromě (potají) ořezal, pouze na části základní funkčnosti a už to bylo lepší, prototypy se začaly skládat dohromady jako skládačka. Ovšem lepidla je málo (času – přece jenom když člověk dělá na několika rozdílných projektech, z nichž na některé se soustředí více, na některé pouze ve zbytcích času, potom zjistí, že se ve větší míře pouze seznamuje s tím, co že to před těmi čtrnácti vlastně udělal a čím by teˇd měl pokračovat). Proto jsem to ořezal ještě více a stvořím jenom drobnost, kterou budu vidět, že funguje a na jádro budu moct postupem času lepit další kousky. Drobnost, která nebude potřebovat moc lepidla, protože nebude mít téměř žádné funkce a dohromady nebude dělat téměř nic. Takže se, drahý světe, nechej překvapit, tímhle blogpostem jsem si dal jakýsi závazek, tak to budu muset udělat :-).
A cožeto? Geolokační hříčka – nebo spíš platforma postavená na SpringMVC, která bude nabízet RESTful rozhraní pro jistý druh „checkinů“. K tomu spytlíkuju Android aplikaci a celé to poběží na CloudFoundry, které bych tímto projektem rád vyzkoušel. GAE asi definitivně hážu za hlavu díky nemožnosti ukládání polymorfů :-).
Dneska jsem si byl v krámu vyzvednout novou hračku – netbook s Tegrou a běžícím Androidem. Chvála a vlastnosti je možné se dočíst všude možně po webu, já bych s dovolením shrnul některé moje první dojmy (teda funkční, nebudu se tu rozplývat, jak je to tenké, lehké a nehlučné :-)). První dojmy jsou takové … Pokračovat ve čtení „Toshiba AC100“
Dneska jsem si byl v krámu vyzvednout novou hračku – netbook s Tegrou a běžícím Androidem. Chvála a vlastnosti je možné se dočíst všude možně po webu, já bych s dovolením shrnul některé moje první dojmy (teda funkční, nebudu se tu rozplývat, jak je to tenké, lehké a nehlučné :-)).
ToshibaAC100
První dojmy jsou takové rozporuplné, nějak tam nic nefunguje. Zvyk z dotykového ovládání mě pořád nutí se dotýkat displeje, touchpad pořád zůstává opomenut, protože ta myš je taková nějaká…prostě divná, takže používám k ovládání především kurzorové klávesy, ale i tak se to chová jinak, než normální systém (checkboxy se neoznačují mezerníkem, ale enterem, klávesa tab neskáče na další prvek formuláře…ale to chce zvyk a cvik). Netbook byl dodán s Eclairem (2.1), ale po chvíli laborování (především s hledáním, kde potvrdit EULU a TOS, aby mě to vůbec pustilo dálo, protože to hned po startu celé spadlo) mi byl nabídnut update na Froyo (2.2) tak updatuju a mezitím hledám informace, jak tam dostat googleApps a píšu tenhle post :-). Stávající Camangi market mě přinutil se zaregistrovat, ale nedokáže se spustit – ihned po přihlášení padne na hubu a zkouší se spustit znovu, takže kdybych nebyl několikaletý androiďák, asi bych tahal ven baterku. Další věc, která mě zpočátku zarazila, je občasné vypnutí displeje (po patřičném timeoutu samozřejmě), jak je zvykem – nejprve se intenzita svitu zmenší na polovinu, pár vteřin počká a potom zhasne. Ovšem když pohasne a já hýbu myší a třískám do klávesnice, tak stejně zdechne (naštěstí jen občas). Další nedoladěností je zobrazení neexistence datového připojení v horní liště. (Po update na 22 je to ok) Mám verzi pouze s wifi, takže bych čekal, že si výrobce dá práci a upraví image, aby se tam nezobrazovalo to, co nemá. Ale tak co už, ničemu to nevadí.
Nyní bych si dovolil v několika krocích sepsat postup pro nahrání googleApps, protože nalezené howto je takove nějaké necelistvé (bez odkazů a konkrétních informací). Vycházím z návodu pro dodání googleApps do emulátoru v rámci SDK, který jsem absolvoval o víkendu a zadařil se.
Prvním krokem budiž update na 2.2 pomocí Toshiba Service Station, jak je vidět na screenshotu, já již mám oněch cca 200MB skoro staženo.
Průběh aktualizace
Zatímco se instaluje aktualizace bych doporučil projít můj starý blogpost, bude se nemálo hodit.
Také by asi bylo vhodné zmínit následující: podle tohoto návodu by měl postupovat ten, kdo alespoň trochu ví, co dělá. Je vhodné si jej nejprve projít, aby se předešlo nejasnostem, a až teprve poté postupovat krok za krokem. Také předesílám, že nechci nést (a ani neponesu) následky za možné způsobené problémy způsobené aplikováním níže uvedených postupů.
No a protože potřebujeme roota, bude nutné to nějak provést, takže je vhodné začít na XDA developers a pořídit si SuperOneClick (mělo by to fungovat i pod Linuxem, ověřím v dalším kroku, teď instaluju mono). (Nefunguje)
Tak z jiného soudku, asi bude potřeba root, čili návod zde. (nefunguje)
Ok, tak po hlavě do toho konečně, už to mám týden rootnuté a pořad nemám dopsaný tenhle blogpost. Nvidia taky odstranila Linux4Tegra projekt z jejich downloadů, spálil jsem si obličej a mnohé další radosti, jako třeba objevení důvodu zřejmého blbnutí předchozího návodu – kvůli oprávněním, takže to zkouším jinak:
Stáhnout balík s Froyem pro devBoard Tegra 250 ze stránek nvidie, rozbalit a nainstalovat, bude potřeba aplikace nvflash,
stáhnout upravený bootloader – fastboot.stock.bin od Ilya Petrova z repozitáře na GitHubu,
stáhnout aktualizovanou implementaci wpa2 – wpa_supplicant včetně konfiguračního souboru, také z GitHubu,
V tomto okamžiku již není potřeba nic dalšího stahovat, takže můžeme flashnout bootloader a stáhnout osmou partition, což je /system. Je nutné zařízení nastartovat v recovery režimu, takže vypnout Toshibu, napíchnout USB kabelem, přidržet Ctrl+Esc a podržet power na pár vteřin, power po chvíli pustit a když se rozsvítí LEDka power, pustit i zbytek. Nic víc se nerozsvítí, obrazovka zůstane mrtvá. (v tomto okamžiku předpokládám bezproblémovou komunikaci zařízení a počítače, jak jsem uváděl výše, dle starého blogpostu) Pro následující kroky je potřeba být rootem, takže pod sudem 🙂 nejprve flashneme nový zavaděč a potom přečteme onu osmou osudovou:
Získanou partition je teď možné přes loop připojit a začít kopírovat (přepisovat):
do adresáře /app přijde Term.apk, Superuser.apk, Vending.apk a GoogleServicesFramework.apk (dvě poslední z cyanogen gapps balíku). Je vhodné překontrolovat vlastníka – ve všech případech by to měl být root:root;
v balíku od Cyanogena jsou ještě adresáře etc, framework a lib, je vhodné je kompletně zkopírovat na odpovídající místo a nastavit všude opět vlastníka root:root (řeč je pouze o těchto adresářích, v žádném případě ne o kompletním adresáři app!!);
teď je na řadě wpa_supplicant, doporučuji si původní včetně konfiguráku zazálohovat (lokálně – *.bak), zálohu původního image 8. partition pokládám za samozřejmost. Ve staženém balíku se soubor nachází oba soubory nacházejí v podadresáři wifi – takže binárka do /bin a konfigurák do /etc/wifi, opět pozor na vlastníka a práva – mělo by to vypadat nějak takhle: [sourcecode language=“plain“]-rwxr-xr-x 1 root 2000 337656 2011-03-21 23:18 wpa_supplicant
[/sourcecode]
zkopírovat do adresáře /bin binárku su ze stejného balíku, ve kterém se nacházel Superuser.apk. Tady ovšem pozor na oprávnění, bude potřeba SUID (pro stručnost řekněme chmod 6755) s výsledkem:[sourcecode language=“plain“]-rwSr-sr-t 1 root 2000 26264 2011-03-29 12:51 su[/sourcecode]
A je nakopírováno, takže je možné odmountnout image a přenést jej zpátky do zařízení, opět pomocí utility nvflash:
[sourcecode language=“plain“]shmoula tegra_froyo_20110207 # LD_LIBRARY_PATH=. ./nvflash -r –download 8 part8.img
Nvflash started
[resume mode]
sending file: part8.img
/ 314572800/314572800 bytes sent
part8.img sent successfully[/sourcecode]
Hotovo, teď je možné Toshibu vypnout (podržet power), odpojit usb kabel a provést wipe (tovární nastavení): takže podržet tlačítko home a power a v objevivším se menu vybrat první volbu (aka zmáčknout klávesu 1). Chvilku to potrvá a potom se systém sám restartuje a naběhne úvodní Toshibácké nastavení data, wifi… takže ponastavovat a po připojení je možné v menu spustit market a pomocí průvodce se přihlásit do svého googleAccountu.
Zjištěné problémy:
Market je stabilní asi jako jistý známý systém jisté známé firmy, spíše ještě méně, ale aspoň funguje 🙂
Občas bývají problémy s připojením k neznámé wifi, proto přímo v zařízení existuje vytvořená kopie wpa_supplicant.bak, příkaz su a možnost remountnutí /system partition pro rw
Terminal.apk v některých (neznámých) případech nefunguje, je nutné jej nainstalovat z marketu