29 июл. 2007 г.

Как устроен билет Московского Метро?

Купил вчера (28.07.2007) билет метро Mifare Ultralight, номер 0024797406 на 10 проходов, "желтый ящик" говорит про него, что его надо использовать до 28.08.2007. Вот его содержимое:

04 E7 4E 25 D1 C4 02 80 97 48 00 00 00 00 00 00
41 87 50 17 A6 0D E4 16 37 1B C0 00 16 38 00 00
16 38 1E 40 0A 00 00 00 00 04 C1 43 00 00 00 00
16 38 1E 40 0A 00 00 00 00 04 C1 43 00 00 00 00

Насколько можно догадаться первый сектор
4187 -- не ясно, что это такое
5 -- бывает 5 бывает 6
0 -- может быть часть номера билета
17A60DE = 24797406 т.е. номер билета. (Не ясно начинается ли номер с 0?) Странно, если номер занимает не целое число байт.
4 -- не ясно, похоже на константу
1637 -- похоже на дату, дата изготовления билета (?)
1B C0 00 -- не ясно что такое, на всех билетах, которые я видел до сих пор -- константа
1638 -- похоже на дату, дата продажи билета (?)
00 00 -- не ясно, что такое

второй сектор (третий -- его резервная копия)
1638 -- дата первого использования, или дата начала действия билета, если билет новый
1E -- похоже на срок действия в днях (30) от даты продажи билета (?)
40 -- не ясно, что это такое, но при первом использовании превращается в 00, думаю, что "желтый" ящик именно по этому полю определяет, что билет новый и выдает другое сообщение ("использовать до ...")
0A -- количество оставшихся проходов
00 00 -- не ясно
00 -- бывает 01 на билетах 20 поездок
00 04 С1 43 -- похоже на MAC
00 00 00 00 -- не ясно

после первого использования в турникете 29.07.2007, второй сектор изменил значение на

16 39 1E 00 09 00 00 00 DB 0E F1 D5 00 00 00 00

интересно, что изменится при проходе завтра?

Превратится ли 1639 в 163A, что будет означать, что это дата прохода, или не изменится и тогда -- это дата начала действия билета и + 30 дней к ней -- срок окончания действия билета.

Новое значение "второго сектора"

16 39 1E 00 08 00 00 00 A1 46 F9 D4 00 00 00 00

что подтверждает, что дата 16 39 это дата первого прохода!

Видно так же, что кроме оставшегося количества проходов (стало 8) меняется и MAC или как там они его называют

Ясно, что билет можно "восстановить" в исходное значение, не видно что этому может помешать!

Скорее всего, система обнаружит подделку через некоторое время. Через час? Два? Сутки?

Надеюсь, что "MAC" включает в себя уникальный ID кристалла, иначе карту будет слишком легко клонировать!

Интересно так же. как система ведет себя если резервная копия трека отличается от основной... на магнитных билетах это одно время приводило к проблемам.

Надеюсь на Ultralight их нет, но с другой стороны зачем нужна копия? Что если оригинал говорит, что осталось 1 поездка, а копия, что осталось 10?

Все мои гипотезы легко проверить, одна беда -- я не пользуюсь метро! :)

Есть желающие помочь?