-
Notifications
You must be signed in to change notification settings - Fork 72
Umarsh
Nikolai Konovalov edited this page May 12, 2024
·
10 revisions
Umarsh (Умарш, short for Удобный маршрут which traslates to "convenient route") is a developer of public transport ticketing systems and infrastructure.
Website: umarsh.com
They have a range of deployments in Russia and nearby regions
Confirmed:
- Ekarta (Yekaterinburg)
- Crimean Trolleybus
- Yoshkar-Ola
- Penza
- Siticard (Nizhniy Novgorod)
- Kirov
- Strizh (Izhevsk)
- Omka (Omsk)
- Barnaul (Барнаул)
- Vladimir (Владимир)
Likely:
- Simferopol, Crimea
- Evpatoriya, Crimea
- Ivanovskaya Oblast (Ивановская область)
- Chuvashia (Чувашская Республика)
- Ulyanovsk (Ульяновск)
- Snezhynsk (Снежинск)
- Ufa (Уфа)
- Kurskaya Oblast (Курская область)
- Krasnodarskij Kraj (Краснодарский край)
- Kaluga (Калуга)
- Angarsk (Ангарск)
- Irkutsk (Иркутск)
- Tula (Тула)
- Astrakhan' (Астрахань)
- Orlovskaya oblast' (Орловская область)
- Tobolsk (Тобольск)
- Ryazan (Рязань)
- Volgograd (Волгоград)
- Murmansk (Мурманск)
- Naryan-Mar (Нарьян-Мар)
- Perm (Пермь)
- Saransk (Саранск)
- Volzhsk (Волжск)
- Samarkand (Самарканд), Uzbekistan
- TezCard (Fergana/Фергана), Uzbekistan
Possible in progress deployments:
- Tolyatti (Тольятти)
Former:
- Mosgortrans in Moscow (Москва), replaced with Troika
Each card has 3 kinds of sectors:
- Validation sector/Sector 0. Key A is static per deployment. Key B is diversified
- Encrypted sector. All sectors which are not ticket sectors. High-entropy blob or zero-filled. Encrypted data or just random. Keys A and B are both static per deployment.
- Ticket sector. Sector 8 and sometimes also sector 7. Key A is static per deployment. Key B is diversified. Key B is required to read this sector
Block 0 is standard for Mifare Classic
Block 1:
Everything is big-endian
Start bit | End bit | Length in bits | Purpose |
---|---|---|---|
0 | 3 | 4 | Transport type |
4 | 15 | 12 | Pay time (h:mm) |
16 | 31 | 16 | Pay date |
32 | 79 | 48 | Route number in ASCII |
80 | 127 | 48 | Transport number in ASCII |
Block 0 is a value block with value 0x7fffffff or 0x7ffffffe and address 7f. It's a one-way counter, decrement only, purpose not entirely clear
Block 1:
Everything is big-endian
Start bit | End bit | Length in bits | Purpose |
---|---|---|---|
0 | 7 | 8 | ?? |
8 | 23 | 16 | Card expiry date |
24 | 39 | 16 | ?? |
40 | 55 | 16 | Total trips |
56 | 63 | 8 | Refill counter |
64 | 66 | 3 | High 3 bits of region number |
67 | 95 | 29 | Serial number |
96 | 99 | 4 | ?? |
100 | 103 | 4 | Low 4 bits of region number |
104 | 127 | 24 | Tariff number |
Block 2
Everything is big-endian
Start bit | End bit | Length in bits | Purpose |
---|---|---|---|
0 | 15 | 16 | Expiry date |
16 | 23 | 8 | ?? |
24 | 47 | 24 | Machine ID |
48 | 63 | 16 | Last refill date |
64 | 64 | 1 | Terminal flag |
65 | 79 | 15 | Balance, in trips or rubles |
80 | 87 | 8 | ?? |
88 | 127 | 24 | Hash |
Date is a packed date with 7 bits for year (based on 2000), 4 for month and 5 for day