Jak generovat kód inkarty na PC

Jak generovat kód inkarty na PC
« kdy: 05. 01. 2022, 16:28:08 »
Ahoj,

Tablet můj odvěký už neunese tíhu moderny. Ač stále chrabře běhá, Android 4.4 už současné vývojáře nezajímá a tak je tablet odsouzen k odchodu do věčných křemíků, jednosuše proto že už na něj nic nenainstaluji.

Mě stačí můj laptop s Debianem. Můj Vlak ale na PC nejede. Nainstaloval jsem si tedy Anbox a do něj nainstaloval MůjVlak a wow ono to teda jede. Přihlásil jsem se a inkarta ukazuje svůj divoce rotující QR kód.

Na to abych průvodčímu ukázal legitimaci přeci nepotřebuji LXC a kdo ví co. Předpokládám že bych mohl kód generovat sám. Tož, softit umím, ale co je v tom kódu? Na první pohled něco binárního. Vyfocený QR kód jsem přečetl pomocí zbarimg. Z hex dumpu svítí WEBPVP8 a RIFF. To by mohlo něco znamenat. Že by přes QR kód posílali mojí fotku? Číslo in karty by tam mělo být také...

Předpokládám že jsou data nějak podepsaná, klíče by měla mít aplikace, protože to funguje i offline, klíče tedy musí být nějak dostupné z mého profilu.

Pokud není známá specifikace kódu, je tu nějaký binary hacker? Tohle by mohla být pěkná utilitka pro fíky jako já - bez "chytrých" zařízení.

Díky


alex6bbc

  • *****
  • 1 431
    • Zobrazit profil
    • E-mail
Re:Jak generovat kód inkarty na PC
« Odpověď #1 kdy: 05. 01. 2022, 17:45:00 »
soukrome data ziskane z qr kodu se ti tu asi nechce davat, co?
obecne kdyz se louskaji nejake binarni data, tak se nejprve hledaji otevrene stringy, cele to muze byt taky zasifrovane
a pak je to na prd.
pripadne porovnat s daty jineho uzivatele, zda se daji vystopovat nejake stejne kusy dat.
dobre jsou hexa editory, ktere dokazou zobrazovat hodnoty od daneho offsetu jako short, int, long, float, dlouble
apod.
a chce to zkouset ruzne base64, md5 a podobne.

Re:Jak generovat kód inkarty na PC
« Odpověď #2 kdy: 06. 01. 2022, 09:51:10 »
dojdi na si nádraží vyzvednout kartu a nemusíš řešit žádnou aplikaci

Re:Jak generovat kód inkarty na PC
« Odpověď #3 kdy: 06. 01. 2022, 12:08:25 »
a nemusíš řešit

Tohle je trochu off-topic, ale budiž. Díky za radu. Nakupuji jízdenky on-line na fakturu a skrze digitální inkartu jsou tam i ty mé nákupy. S vytištěnou kartou bych stejně musel vytahovat jízdenky. Kouzlo karty na PC spočívá v tom že ve vlaku stejně na PC pracuji, stačí tedy jen otočit na průvodčího. Funguje to s anbox - ověřeno v praxi.

Re:Jak generovat kód inkarty na PC
« Odpověď #4 kdy: 06. 01. 2022, 12:16:45 »
soukrome data ziskane z qr kodu se ti tu asi nechce davat, co?

Výroba fake digitální inkarty jde přes můj vlak asi zadarmo. Trochu to ale vázne přes anbox kvůli fotce. Když se podaří, nasdílím. Díky za podněty.


Re:Jak generovat kód inkarty na PC
« Odpověď #5 kdy: 06. 01. 2022, 12:44:16 »
nechapu.. fyzickou inkartu proste pridas do appky. to cele vidis i v eshopu. pokud mas problem, ze nemas mobil co zvladne tu appku tak si porid plastovou kartu. tu si pruvodci "čipne" a jinak je vse stejne jako s tou virtualni (vidi tam tve jizdenky, vidi tam pripadne aplikaci na slevy atd).
Děkuji za možnost editace příspěvku.

Re:Jak generovat kód inkarty na PC
« Odpověď #6 kdy: 06. 01. 2022, 13:27:55 »
nechapu..

Díky, o to mi teď nejde. Zajímá mě ten QR kód.

Re:Jak generovat kód inkarty na PC
« Odpověď #7 kdy: 06. 01. 2022, 13:50:54 »
Pokud by ta data byla podepsaná aplikací v mobilu, bude to celkem k ničemu – nikomu by nebránilo udělat to samé, o co se pokoušíte vy, ale vložit si tam své údaje.

Otázka ale je, zda se vyplatí do toho investovat čas – ten formát je interní, může se klidně každých pár měsíců měnit. A ani to nemusí být záměrně kvůli znesnadnění vašich pokusů, ale prostě tak, jak se aplikace vyvíjí.

Ale když už to chcete řešit, máte přece tu aplikaci, která kód zobrazuje – takže by mi připadalo nejjednodušší ji disassemblovat a podívat se, jak se ten kód generuje.

Re:Jak generovat kód inkarty na PC
« Odpověď #8 kdy: 06. 01. 2022, 13:56:56 »
Není mi úplně jasné co chceš, předpokládám že žádný fake (padělek) ale prostě vlastní digitální formu své legitimní inKarty mimo aplikaci Můj vlak?

Pokud bych spekuloval, tak ta animace jenom rotuje několik QR kódů, které obsahují informace z inKarty (včetně té fotky, když se podíváš průvodčí do toho jejího bazmeku tak se jít tam po načtení objeví) + ty jednotlivé QR kódy jízdenek.

Takže v nejjednodušším případě by mělo stačit bez nějakého reverse inženýringu prostě tu "pevnou" inKarta část nahrát jako animovaný obrázkek (video) a přilepit za něj ty jednotlivé kódy jízdenek (ty ti asi taky stačí zkopírovat jako obrázky a nebo je chceš nějak generovat?)

Tady je mimochodem specifikace tištěných Aztec kódů na papírových jízdenkách, třeba v tom QR kódu najdeš podobné věci:

https://zakazky.krajbezkorupce.cz/document_4021/f5cded1ff11ea0efe754c6dcbcf64b36-priloha-1-technicke-specifikace-2-2d-kody-standardy-pro-jizdni-doklady-cd-pdf

Re:Jak generovat kód inkarty na PC
« Odpověď #9 kdy: 06. 01. 2022, 13:59:00 »
PS: Z toho dokumentu: Součástí dat kódu je digitální podpis. Ten je vytvořen metodou DSA s použitím privátního klíče vydavatele DST.

Takže obávám se že vlastní generování těch QR kódů nepůjde...

Re:Jak generovat kód inkarty na PC
« Odpověď #10 kdy: 06. 01. 2022, 14:00:04 »
Pokud špekulujete nad přenosem fotky pomocí QR kodu tak asi nejdřív přečíst tohle:
https://en.wikipedia.org/wiki/QR_code

a pak tohle https://zpravy.aktualne.cz/finance/virtualni-in-karta-v-mobilu/r~d7508122fac811e7aabeac1f6b220ee8/

QR kód má v sobě zašifrovanou fotografii, osobní údaje o uživateli, seznam slevových aplikací a také čerstvě zakoupených jízdenek. To umožňuje vlakovému personálu provést kontrolu off-line a zároveň jej nelze kopírovat, čímž se výrazně zvyšuje ochrana proti zneužití," říká Miloslav Kopecký, předseda představenstva divize České dráhy - Informační systémy.
Proprietální formát, těžko prostřelitelný imho.
« Poslední změna: 06. 01. 2022, 14:04:06 od Pajaha »
Gréta je nejlepší.

Re:Jak generovat kód inkarty na PC
« Odpověď #11 kdy: 06. 01. 2022, 15:28:24 »
Tady je mimochodem specifikace tištěných Aztec kódů na papírových jízdenkách, třeba v tom QR kódu najdeš podobné věci

To je paráda! Díky, aspoň je čeho se chytit. Zkusím zachytit několik snímků a prozkoumat. Na konci je příklad 'doklad' tak třeba to bude zrovna inkarta. Takže najít správný offset a deflate.

Citace
jenom rotuje několik QR kódů

Jasně, pokud se kódy podepisují na serveru a appka jen tupě zobrazuje, pak nemám moc šanci generovat to sám. Vypadá to že to provedli poctivě (a že znám případy...) .

K reverse engineeringu by mi tedy mělo stačit odchytit komunikaci appky s cd.cz když se přihlašuji a když to stahuje ty jízdenky. Pak předstírat že jsem apka, vše stáhnout a zobrazit...

Má smysl tím trávit čas? Nevím :) děti se taky neptají když si hrají.


Re:Jak generovat kód inkarty na PC
« Odpověď #12 kdy: 06. 01. 2022, 16:00:15 »
Jízdenky mají QR statický, pokud se nepletu. Tam asi není tolik informací, protože k jízdence je vždy třeba přikládat inKartu, pokud byla použíta ke slevě a podobně. Pravděpodobně se jedná o stejný QR, který je i na PDF jízdence z eshopu. Ten lze použít i v tištěné podobně v kombinaci s inKartou/dokladem totožnosti, atp.

QR kód inKarty je ten klasický měnící se, a řekl bych, že k rotaci několika málo kódů nedochází a fungnuje to na podobném principu jako OTP, kdy na základě nějakého tajemství se ten dočasný kód vygeneruje i offline. To ti bere možnost si ten QR jednoduše vyfotit/nahrát a pak se jím prokázat, protože jeho platnost je velice krátká.

Re:Jak generovat kód inkarty na PC
« Odpověď #13 kdy: 06. 01. 2022, 16:16:22 »
Mám pocit, že je tu trochu zmatek v tom podepisování. Aby podepisování dávalo smysl, musí data (pro koho je jízdenka vydaná, na jakou trasu a na kdy) samozřejmě podepsat server. Pokud by je podepisovala až aplikace v mobilu, může pomocí reverzního inženýrství (o které se tu snažíte) kdokoli vydávat jakékoli jízdenky. Ale tahle data server podepíše jednou při nákupu jízdenky a pošle vám je do aplikace. Aplikace si ta podepsaná data uloží a dále s nimi už může pracovat offline. Tahle podepsaná data posílaná ze serveru by tazatel musel vždy získat i pro svou aplikaci.

Druhá věc je zobrazení QR kódu. Tam už podepisování není potřeba, může tam být leda pro efekt. Tam už se řeší jen to, aby se zobrazený QR kód každou sekundu změnil, což je ochrana proti jeho ofocení. Pravděpodobně se to řeší tak, že se vezmou ta výše uvedená data ze serveru, k nim se připojí časová značka a to celé se prožene nějakou transformační funkcí, aby se změna časové značky rozprostřela do celého zakódovaného řetězce (a neměnil se tak jen kus QR kódu, ale celý kód). Ta transformační funkce může být nějaká šifra, ale stačilo by třeba i XORovat celý vstup tou časovou značkou. Do toho pak ale moc nesedí informace o tom, že jste v tom kódu viděl nějaký kus dat – snad jedině že by ta data byla rozsekaná na bloky a podle času se jen bloky různě zamíchaly – jiný způsob, jak měnit v čase celý QR kód a zároveň v něm zachovat viditelné části mne nenapadá.

Re:Jak generovat kód inkarty na PC
« Odpověď #14 kdy: 06. 01. 2022, 16:38:55 »
Co bych asi udělal jako první:

obyčejné screenshoty toho měnícího se kódu v aplikaci a podíval se jestli se jednotlivé "frames" mění v čase (porovnat klidně jako obrázky), třeba podle datumu nebo podle toho jestli je koupená i jízdenka (jestli jenom přibyde obrázek odpovídající QR kódu jízdenky k vytištění).

Pokud bych nad tím uvažoval abstraktněji:

- jak čtečka, tak aplikace mohou být offline
- komunikace je jednostranná: aplikace → čtečka
- QR kód jízdenky může být vytištěný
- jízdenka koupená s dostatečným předstihem se stáhne do čtečky průvodčího a je v ní vyvolána pouhým načtením inKarty
- inKarta může být čipová nebo v aplikaci

Nevidím žádný přínos toho že by ty kódy v aplikaci byly nějak "dynamicky" podepisované, nebo spojené dohromady (myslím tím inKartu a jízdenky). Naopak by to celý systém jenom komplikovalo a chovalo se v různých scénářích.

I neměnný podpis jednotlivých částí zaručí že údaje jsou intaktní, navzájem jsou patrně spojené identifikátorem té karty.

Proto se domnívám že ten rotující QR kód je opravdu je jenom animace samostatně fungujících částí, a inKarta se skládá z víc QR kódů proto aby se tam datově vešla i ta fotka.

Možná by někdo od fochu naznačil víc na šotouším fóru: https://www.k-report.net/discus/messages/28/251794.html
« Poslední změna: 06. 01. 2022, 16:40:39 od makovec_3 »