Bystroushaak's blog / Czech section / Programování / Cracking telefonních karet
📂

Cracking telefonních karet

Někdy v roce 2007 jsem ležel v posteli a přemýšlel, jak vlastně uplatnit svoje zkušenosti. Pár let předtím jsem se naučil programovat v Pascalu, právě jsem se učil PHP, C++ a Python. Stále jsem navštěvoval střední školu, obor mechanik elektronik, a chtěl jsem něco, kde bych využil všechny svoje nově nabyté zkušenosti. Něco co by kombinovalo jak elektroniku, tak programování, a zároveň to bylo zajímavé a unikátní.

Tou dobou jsem měl za sebou pár desítek programovacích projektíků, které jsem si psal jen tak pro radost. Už mě ovšem unavovalo se věnovat pořád tomu samému a nemít nic zajímavého, co by pro mě byla skutečná výzva nad rámec prostého přečtení si nějaké učebnice.

Nevím už přesně jak jsem připadl zrovna na crackování telefonních karet. Vím že o pár let dřív jsem někde viděl články na tohle téma a tenkrát mě to vůbec nezaujalo. Tou dobou už několik let skoro nikdo telefonní automaty nepoužíval, všichni měli mobily a představa, že by to bylo k něčemu praktickému byla směšná.

Když jsem se však rozhodl ze zájmu najít si ten starší článek jak na to, zjistil jsem že vlastně nikdo nevyřešil jak cracknout novější telefonní karty, které používají mikročip s kryptografií a aktivně se brání útokům na sebe.

Postupně jsem se nějak rozhodl tomuhle tématu věnovat. Prvně jsem si postavil čtečku, a napsal o tom článek. Byl to první článek co jsem kdy v životě napsal, a je to na tom docela hodně vidět. Pak jsem napsal program pro komunikaci s kartou skrz arduino.

Následoval článek o tom jak karta vlastně funguje. V něm jsem nakreslil jedno z prvních blokových schémat svého života a dneska mě zpětně překvapuje, jak vysokoúrovňové to vlastně bylo. Například se tam počítá s evaluaátorem programových instrukcí a genetickými rekombinacemi, které se snaží vypěstovat odpovídající algoritmus.

Jako další jsem publikoval pokročilejší program pro komunikaci s kartou, který se snažil používat challenge/response protokol.

Celé jsem to pak zakončil článkem o odkrytování a analýze silikonového substrátu čipu na telefonní kartě, ohledně čehož jsem udělal několik desítek pokusů. Cesta mě zavedla mimo jiné například na vysokoškolské přednášky o vývoji hardware, které jsem si dobrovolně zapsal, a také na exkurzi do továrny na výrobu mikročipů IHP.

Zpětně musím říct, že rozhodnutí zabývat se telefonními kartami bylo správné. Zavedlo mě to do zpočátku naprosto nepředpokládaných míst a cest k probádání, k desítkám odkazů a článků na téma decapování čipů a side-channel analýzy.

Vůbec nejdůležitější ale bylo, že to přede mě prezentovalo problém, jehož řešení nebylo kde nalézt. Musel jsem prvně zmapovat stavový prostor, udělat si představu o technologiích, možnostech směrů, kterými se jde ubírat, a pak se jimi hlavně vydat. Vůbec poprvé v životě jsem byl nucený kreativně řešit netriviální zadání a tohle samotné mě naučilo a vybavilo pro práci programátora jako málo co jiného.

Bohužel, tak jako všechno, i tenhle příběh má svůj konec. Když jsem skončil vysokou školu a začal pracovat, najednou jsem na tohle neměl ani moc nálady, ani energie, ani prostor, kde bych mohl podobně expermentovat. Přestěhoval jsem se do malé garsonky, dny trávil v první a také velmi náročné práci. Věci skončily v krabicích, kde jsem je teď skoro o deset let později našel.

Od té doby se ovšem mnohokrát opakovala stejná situace; vzal jsem si projekt, kde jsem na začátku neměl ani nejmenší představu jak ho řešit. Postupně jsem se do něj zakusoval víc a víc, až jsem ho najednou buď vyřešil, nebo se na něm naučil tolik, že vlastní samotný původní záměr se zpětně jevil jako naivní a nadále nepotřebný.

Až někdy budete v podobné situaci, můžu vám jen doporučit se zakousnout a nepustit. Samotná cesta je cíl, a vždy se toho naučíte tolik, že se to jednoznačně vyplatí.

Become a Patron