Немножко виртуального дигга...

#1
Однажды я заснул крепким алкогольным сном, положив метрошный "Ультралайт" под подушку. И вот что мне приснилось:
Код:
0000	04 a4 60 48 c9 b4 02 80-ff 48 00 00 00 00 00 00
0010	41 87 60 03 de 79 84 15-9a 1b c0 00 15 9b 00 00
0020	15 9b 0f 00 00 00 00 00-91 e6 56 7d 00 00 00 00
0030	15 9b 0f 00 00 00 00 00-91 e6 56 7d 00 00 00 00

смеще-
ние	длина	описание
00	9	серийный номер чипа и контрольный байт
09	1	зарезервировано производителем
0a	2	lock-биты (не используется)
0c	4	однократно программируемая область (не используется)
10	2	всегда 41 87
12	1	чаще всего 60, но бывает 50 или 70
13	4	номер билета, смещён на 4 разряда влево, в младшей незначащей 
		тетраде всегда 4
17	2	Дата1 - такая же, как Дата1 или на 1 день раньше - дата выпуска 
		билета?
19	3	всегда 1b c0 00
1c	2	Дата2 - дата продажи билета
20	2	Дата3 - дата первого прохода. На новом билете - такая же, как 
		Дата2
		Все даты - число дней с 1 января 1992 года.
22	1	на разных картах - 0, 0b, 0c, и т.п. до 1f
23	1	на новых билетах - 40, на использованных - 00
24	1	число оставшихся поездок
25	2	всегда 00 00
27	1	на всех билетах 00. Но на одном попалось 01.
28	4	какая-то контрольная сумма? На всех картах разное. На 
		какой-либо вариант LRC не похоже, и с CRC32 разных частей 
		буфера с разными полиномами тоже не совпадает.
2с	4	всегда 00 00 00 00
TODO: записать весь жЫзненный цикл карты.
Нижние 2 строки (секции 8-11 и 12-15 - байты 20-2f и 30-3f соответственно) 
всегда совпадают.
Если интересно - опишу подробнее. Если нет - ну, отстойник - он и есть отстойник.
 
#2
Если неошибаюсь то это спрограммированая в одной программе карта спелео пещерки.
 
#3
FliXis написал(а):
Если неошибаюсь то это спрограммированая в одной программе карта спелео пещерки.
??? ??? ??? Я, конечно, дико извиняюсь, но эта пещерка имеет несколько техногенное происхождение... Метро называется.
 
#4
Ну я особо то нерасматривал =))) Просто в каком то посте обсуждали программку для проектирования спелео пещерок--там был похожий листинг.
 
#5
ды это он сграбил внутренности карточки.

слуш, а ты не делал эмулятор этой байды? впринципе думаю вечную карту сделать несложно
 
#6
Николай написал(а):
слуш, а ты не делал эмулятор этой байды? впринципе думаю вечную карту сделать несложно
Есть несколько гадостей.
1) Первые 8 байт - уникальный номер чипа. Не перешивается. Соответственно, если он контролируется, то, по крайней мере, из серийной карточки ничего вечного сделать нельзя. Хотя, с другой стороны, карточки эти берутся в неограниченном количестве в любой урне :D Другое следствие из этого - невозможность стандартными средствами сделать 2 одинаковых билета (из серийных карт).
2) В своё время в RU.PHREAKS утверждалось, что у магнитных билетов была такая система: каждую ночь данные о проходах собирались со всех турникетов и обрабатывались на предмет поиска всяких странностей, как то проходы по одному проездному через короткое время в разных концах города, проезд по кончившемуся билету, проезд по билету, который никогда не продавался и т.п. Билеты со странностями попадали в стоп-лист и аннулировались при попытке прохода. Если такая же система действует и для этих карт, то ездить по левой карте можно не более 1 дня.
3) Пока нет никаких мыслей, как считается контрольная сумма.

Эмулятор меток RFID ISO 14443 есть тут: http://www.openpcd.org/openpicc.0.html . Карты Mifare Ultralight не используют шифрование (в отличие от Mifare Classic - типа Карты студента или Социальной карты москвича), поэтому их можно эмулировать.
 
#7
gluckmaker, заинтересовал.

1)ты собирал RFID-reader по схеме отсюда http://www.openpcd.org ?
2) если купить безлимитный полный на месяц и считать - получается можно будет делать его копии...
 
#8
А нельзя как-нибудь read-only проставить на карточке ::) Проблема с левыми номерами и проходами в разных концах города заодно решится...
 
#10
Ну так a-la read-only решает все проблемы - номер, контрольная сумма и т.д... Купил карту на 10 поездок, сделал правильную копию на эмулятор и месяц езди анлимитед...
 
#11
а в прессе насколько я помню все хвастались
"карты UltraLight лучше и надёжнее, патамушта в них применяется ващекрутое шифрование...."

что-то не вяжется. :-\
надо пробовать.
 
#12
1) нет, ридер я купил готовый. Мне интересно поиграться ещё и с Mifare Classic, а их никакие "open" ридеры не поддерживают - протокол закрытый.
2) безлимитные проездные ("транспортные карты" на 90 дней, "карты студента" и т.п.) - это Classic. См. выше. Разве что метрополитен поставил на них какие-то легко угадываемые ключи шифрования. Что вряд ли.
3) readonly поставить можно (байты 0a и 0b отвечают за блокировку записи в различные секции), но не поможет. Попробуй билет слишком быстро приложить и убрать от турникета - поездку съест, но не пустит.
4) "Ultralight лучше и надёжнее" тем, что пассажиру гораздо труднее его повредить при нормальном использовании. Ну и скопировать его с помощью двух головок от магнитофона и какой-то матери труднее. Как-никак, за цену ридера + цену деталей для того эмулятора, ссылку на который я кидал выше, на метро можно ездить несколько месяцев. Причём особо не экономя поездки. "Ващекрутое шифрование" применяется на Классиках - причём настолько ващекрутое, что Филипс даже алгоритм этого шифрования явить миру не хочет. Стесняется, наверно. Ох, чуйствую, через несколько лет какая-нибудь группа заинтересованных товарищей из какого-нибудь MITа ради прикола допрёт до того, как оно устроено - и...

Блин, атч0т, чтоли, забацать... С фотками и цитатами из документации... :cool:
 
#13
В продолжение темы скажу следующее:
1) Первые 3 тетрады (полтора байта) из того, что я выше назвал контрольной суммой (4 байта по смещению 28), обозначают станцию (или даже турникет - ещё не понял), на которой садились в последний раз. На ранее неиспользованных картах - 000. Остальное - таки да, содержит контрольную сумму. А вот сколько там её - не такой простой вопрос: по крайней мере, стандартных 20-битных алгоритмов КС, вроде, не бывает.
2) В контрольном суммировании принимают участие все байты билета, включая завершающие нули (и, естественно, включая неперепрошиваемый номер чипа). При изменении любого байта терминал ругается на "ПЛОХОЙ БИЛЕТ". Правда, я всегда делал так, чтобы последние две строки дублировались - что будет в противном случае, не проверял (предполагаю, скорее всего, выберет правильную копию и зальёт её на место неправильной - своего рода anti-tearing mechanism).
3) Билеты "со странностями" (например, если билет кончился, а потом на нём вдруг снова каким-то чудом появились поездки ::) ) блокируются на следующий день после проявления этих странностей. Терминал говорит "АННУЛИРОВАН". Таким образом, если залить в проезженный билет дамп от его же нового, ездить можно будет только 1 день. Точнее, конечно, ездить будет нельзя, т.к. "Подделка проездных документов преследуется по закону"(С) :-X Это подтверждает старинную легенду о том, что ведётся база по проходам, и по ночам Красные Шапочки садятся в круг и обсчитывают её на предмет подобных чудес.
4) Байт 27 иногда выставляется в 01, и при следующем проходе возвращается обратно (на моей карте на 10 поездок это случилось 1 раз)... Зачем - не понятно.
 
Сверху