Skip to content
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

Deployments

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

Keys and sectors

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

Validation layout

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

Ticket layout

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

Clone this wiki locally