Come funziona ...
MyHotp ...
Il tag è nel formato Type A e NDEF
Nella sezione NDEF ovvero nei primi byte della memoria del tag, che va da 0x04h fino a 0xE1h per NTAG216 e 0x81h per NTAG215, viene memorizzato il record V-CARD
BEGIN:VCARD
VERSION:3.0 N:Doe;John;Q.,Public FN:John Doe TEL;TYPE=WORK,VOICE:(111) 555-1212 TEL;TYPE=HOME,VOICE:(404) 555-1212 TEL;TYPE=HOME,TYPE=VOICE:(404) 555-1213 EMAIL;TYPE=PREF,INTERNET:forrestgump@example.com EMAIL;TYPE=INTERNET:example@example.com PHOTO;VALUE=URL;TYPE=PNG:http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Example_svg.svg/200px-Example_svg.svg.png END:VCARD
Dopo il record NDEF, la gestione del tag passa al TypeA, vengono lasciati 4 byte vuoti nel settore successivo all'utimo : 0x00h, 0x00h, 0x00h, 0x00h e dall'indirizzo successivo sono salvati i record delle password, e/o dei generatori di codici totp e/o hotp
Come sono scritti i dati delle password :
Non è utilizzato tutto il set di caratteri disponibili Ascii, ma solo una parte : A-Z, a-z, 0-9, spazio, e segni di punteggiatura "#$%&*-_=+;:,.?/|{}()"
Non è usato il set di caratteri Ascii a 7 bit dentro MyHotp i dati sono scritti, per esempio alla 'A' è assegnato in byte 0x23h, alla 'B' il byte 0x2Ah ...
Poi tutto è trasformato in Byte a 7 bit, convertito in bit, ricampionato in Byte a 8 bit e scritto sulla memoria del tag ... Geniale ? NO ?In questo modo la stringa "Password" viene scritta in 7 byte invece che in 8 ... risparmiando spazio. Ad esempio una chiave RSA da 1024 byte è scritta in 896 byte