2015-02-02 4 views
1

Я знаю этот пост: - Locking mechanism of Mifare Classic 1KMifare Access вычисления условия

Однако, это действительно не понятно - как значение, как FF 07 80 FF рассчитывается в этой строке:

D3 F7 D3 F7 D3 F7 FF 07 80 FF 00 00 00 00 00 00 

Это означает, что блоки могут считываться с помощью клавиши A и записываться с помощью ключа B, но не разрешать inc/dec.

Как должны выглядеть биты доступа, если я должен поддерживать операции приращения и уменьшения. Я понимаю, что C1, C2 и C3 должны быть 1,1,0, как это отражается на байте 6, 7 и 8.

Любая помощь будет высоко оценена.

ответ

4

Бит доступа FF 07 80 перевести

C1 = 0x0 => C1_3 = 0, C1_2 = 0, C1_1 = 0, C1_0 = 0 
C2 = 0x0 => C2_3 = 0, C2_2 = 0, C2_1 = 0, C2_0 = 0 
C3 = 0x8 => C3_3 = 1, C3_2 = 0, C3_1 = 0, C3_0 = 0 

Так прицеп сектора может считывать и записывать с помощью ключа только (Cx_3 = 0 0 1). Все операции (чтение, запись, приращение, декремент и т. Д.) Могут выполняться на блоках данных с использованием ключа A только (Cx_{0,1,2} = 0 0 0, клавиша B отключена из-за условий доступа блока трейлера).

Если вы хотите иметь возможность читать все блоки с помощью клавиши A, пишите с помощью клавиши B, выполняйте приращения блока значений с помощью клавиши B и выполняйте декремент блока значений и т. Д. С помощью клавиш A и B, вы можете использовать условия доступа, подобные этому :

  • сектор прицеп записи с ключом B только: Cx_3 = 0 1 1
  • данные/значение блоков: чтение/декремент с ключом, запись/приращение с ключом B: Cx_{0,1,2} = 1 1 0

    C1_3 = 0, C1_2 = 1, C1_1 = 1, C1_0 = 1 => C1 = 0x7 
    C2_3 = 1, C2_2 = 1, C2_1 = 1, C2_0 = 1 => C2 = 0xF 
    C3_3 = 1, C3_2 = 0, C3_1 = 0, C3_0 = 0 => C3 = 0x8 
    

Это приводит к битам доступа 08 77 8F. Таким образом, вы трейлер сектора могут выглядеть следующим образом (с помощью клавиши A = D3F7D3F7D3F7 и клавиша B = 000000000000):

D3F7D3F7D3F7 08778F FF 000000000000 
+0

хорошего объяснения .... :) – vikky

Смежные вопросы