Access conditions. Важно.
Вот так я этот пост и назвал - «Важно». Потому что, совершая манипуляции с меткой mifare и не разбираясь при этом в access conditions метку можно легко запороть. И ладно если запоротой оказалась чистая метка купленная у китайцев. А если это ваш студенческий? Хм, ну вы поняли. Нервы надо беречь. Так что впитаем ещё немного теории.
Вспоминаем как выглядит sector trailer и ещё раз его рисуем:

AC — access conditions.
Увеличиваем разрешение нашего «микроскопа», «укрупняем» access conditions, занимающие с 6 по 9 байты.

Обращаю ваше внимание, что на шкале не байты, а нибблы. Ниббл = 4 битам.
access bits — то что нам нужно. Это те самые 12 бит, которые описывают какие операции можно производить с блоками данного сектора
inverted access bits — те же 12 бит но инвертированные
GPB — general purpose byte. Используется если карточка хранит данные в формате NDEF и нас пока не интересует
Нарисуем 3 байта access bits + inverted access bits в том виде, в котором они представлены в памяти самой метки или снятом с неё дампе:

Белые биты - access bits, черные - inverted access bits. Теперь поменяем порядок записи бит с little-endian на big-endian:

Выписываем слева направо белые биты:

Множество возможных операций для каждого из блоков задается тройкой бит. Порядок бит и их расположение в access bits показаны на рисунке. Для 256-байтных секторов Mifare 4k всё тоже самое, но:

Но из-за большего размера сектора тройки бит определяют права доступа так как показано на рисунке, сразу на 5 блоков данных.
Рассмотри возможные значения access bits. Как и следовало ожидать есть 2^3 возможных вариантов. Нарисуем таблицу значений сначала для sector trailer:
Таблица access bits для sector trailer

Как видно из таблицы в sector trailer для нас доступно две операции: чтение и запись. При этом sector trailer разделен на 3 части: key A, key B и access conditions. Для каждой из частей права задаются независимо от двух других. Теперь про цвета в которые я раскрасил возможные операции:
красный — операция доступна после аутентификации с ключом А
синий — операция доступна после аутентификации с ключом B
зеленый — операция доступна после аутентификации с любым из двух ключей
черный — операция вообще недоступна
Также цветом выделены три особых значения access bits. Желтым выделены состояния, при которых key B является обычным полем данных и аутентификация с этим ключом невозможна. Как видим это логично. Что это за секретный ключ значение, которого можно прочитать с помощью другого ключа. Фиолетовым цветом выделено значение access bits которое называется transport configuration. При изготовлении карточки на заводе это значение ставится по умолчанию для всех sector trailers.
Таблица access bits для data block

Значения access bits те же самые, но смысл они несут другой. Во-первых, access bits определяют доступные операции для всего блока целиком. Во-вторых, самих операций уже шесть. И, в-третьих, я забыл рассказать про сами эти операции :). Ну да ладно в следующем посте расскажу. Также как и в sector trailer фиолетовый цвет обозначает значение access bits, которое задается заводом изготовителем. Цвета самих операций имеют те же значения что и в прошлой таблице.
Пример
Перед нами второй сектор чистой метки Mifare 1k:

key A, key B — FF FF FF FF FF FF
access conditions — FF 07 80 69, где 69 это GPB
access conditions = FF 07 80
little-endian:
FF = 1111 1111
07 = 0000 0111
80 = 1000 0000
big-endian:
1111 1111
1110 0000
0000 0001
access bits: 0000 0000 0001
inverted access bits: 1111 1111 1110
data block 0 -> 000 [transport configuration]
data block 1 -> 000 [transport configuration]
data block 2 -> 000 [transport configuration]
sector trailer -> 001 [transport configuration]
Что же мы видим? А видим мы, что все четыре блока сектора находятся в состоянии transport configuration. Как говорится, что и требовалось доказать.
Была у меня идея написать программу, которая вычисляет права доступа на основе access bits. Но не стоит переделывать то, что сделано и так хорошо. Вот программа некого asper с форума proxmark.org. Качайте, пользуйтесь и долгой жизни вашим карточкам.