Modifica sector trailer tag rfid

Chiedo scusa ai moderatori, ma non sapendo in quale sezione postare la domanda, la inserisco qui.
Ho da poco un comprato un lettore-scrittore di tag rfid( basato su chip RC522), e mentre cercavo di documentarmi, ho capito finalmente la disposizione dello spazio libero (ovvero 1k in totale, ma 0,7K realmente utilizzabili) e la modalità di accesso. Ogni tag è formato da 16 settori, ogni settore da 4 blocchi, ogni blocco 16 byte. Tralasciando le anomalie del primo settore (nel quale sono conservate le informazioni del produttore ), ogni quarto blocco di ogni settore (chiamato"impropriamente" sector trailer) contiene 2 chiavi (KEY A e KEY B) per accedere ai dati contenuti nel settore.
Il sector trailer, a quanto scritto nel documento in allegato, è formato da:
KEY A (primi 6 byte da 0 a 5)
ACCESS BIT (altri 4 byte da 6 a 9)
KEY B (ultimi 6 byte da 10 a 15).
Gli ACCESS BIT contengono le informazioni per accedere ad ogni singolo blocco del settore.
A pag. 7 dell'allegato viene spiegato la disposizione dei singoli bit, ma soprattutto dice che esistono dei bit di complemento.
Ora finalmente la domanda:
Ma come funzionano questi bit di complemento?
Ad esempio in un mio tag gli acces bit sono: FF:07:80, che sviluppati secondo lo schema di pag 7 , e prendendo esclusivamente quelli relativi al blocco 3 (quello del sector trailer) sono 100 e 011.
A pag 8 viene inoltre dichiarato che i tag di default vengono spediti in modalità 0,0,0 (c1,c2,c3).
Quindi ogni singolo bit se trova il suo complementare (relativo allo stesso blocco e indice) alla fine vale 0, in caso contrario vale 1?
Ringrazio in anticipo ogni anima pia che abbia voglia di illuminarmi.

mifareclassic.pdf (384 KB)

Ok ho risolto il mistero. Allora spiego x i più curiosi.
Tutti i blocchi di un settore di un tag (compreso il sector trailer) possono essere protetti in maniera diversa.
Quindi si deve decidere prima il tipo di protezione per ogni singolo blocco (facendo riferimento alla tabella di pag 8 tab 1,2) e per il sector trailer (pag.8 tab 1,1).
Per esempio:
C1 C2 C3
Settore 0= 0 0 0
Settore 1= 0 1 0
Settore 2= 1 1 1
Sector trailer=1 1 1
Ora facendo riferimento allo schema alla figura 1,4 di pag 7 andiamo a riempire gliultimi 12 bit con i valori da noi scelti.
I primi 12 bit sono i complementari degli altri. Ora che abbiamo completato i tre bit li trasformiamo in un valore esadecimale e lo inseriamo nel byte di competenza(6-7-8).
byte 6 0 0 0 1 0 0 1 1=13
byte 7 1 1 0 0 0 0 1 1=C3
byte8 1 1 0 0 1 1 1 0=CE

Quinti il sector trailer diventa
(byte 0-5 Key A)FF FF FF FF FF FF (byte 6-8 access bit) 13 C3 CE (byte9 dati) 00 (byte 10-15 key B) FF FF FF FF FF FF
N.B. Le key A e B sono quelle di default, se vengono cambiate il tag risulterà illeggibile dalla maggior parte delle applicazioni e da arduino se non opportunamente dichiarate:
Faccio notare che solo una configurazione degli access bit permette di effettuare ulteriori modifiche al sector trailer, quindi se non si è più che sicuri delle impostazioni evitare di cambiare queste impostazioni da 001.
Io personalmente ho utilizzato delle app per nexus 7 che mi hanno aiutato molto a capire come funziona il tutto che sono
MFClassic , Trigger , Tagwriter ed NFC TagInfo.