Per offrirti il miglior servizio possibile questo sito utilizza cookies. Continuando la navigazione nel sito autorizzi l'uso dei cookies.
In order to give you a better service we use cookies. When navigating or using our services, you agree to our use of them.
Orario: 18-11-2017, 08:35 AM Benvenuto ospite! (Log inRegistrati)


Rispondi 
 
Valutazione discussione:
  • 1 voti - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5


Leggere e clonare un tag HID
12-11-2017, 02:49 PM
Messaggio: #1
Leggere e clonare un tag HID
In questo thread vi mostrerò un metodo a "basso costo" per poter leggere e clonare delle tessere HID (per intenderci roba tipo queste Registrati al forum qui per vedere questo link. ) che vengono usate spesso come badge da diverse aziende.

Le informazioni sul web sono molto frammentarie: non esiste un datasheet che spieghi lo standard di queste carte e non esistono lettori a prezzo contenuto sul web (ce ne sono molti cinesi ma non si capisce mai se effettivamente riescono a leggere quel tipo di carte).
Questo tipo di carte sono di tipo "passivo", cioè non vengono interrogate quando si avvicinano al lettore. Quando rilevano il campo magnetico a 125kHz lo modulano in FSK, cioè un "uno" corrisponde ad una oscillazione "acceso-spento" ad una determinata frequenza e lo "zero" pure (la frequenza "acceso-spento" è però diversa). In questa immagine è tutto più chiaro:

[Immagine: LbJsg2s.png]

In commercio esistono delle carte prodotte dalla ATMEL (le T5577) che permettono di emulare un sacco di modulazioni (fra cui la FSK). Queste carte funzionano così: vengono programmati alcuni blocchi di memoria che contengono i dati "grezzi" da modulare e infine viene programmato un registro di configurazione in cui si può impostare il tipo di modulazione. In questo modo si riesce tranquillamente ad emulare qualsiasi carta passiva (come le HID).
Per gli interessati il datasheet lo trovate qui: Registrati al forum qui per vedere questo link.

Tutto è iniziato quando ho preso questo lettore (Registrati al forum qui per vedere questo link.). Parliamoci chiaro: 16 euro per un lettore del genere sono un furto, ai tempi non sapevo bene che tipo di carta avessi in mano, quale fosse la modulazione, ecc.. per cui presi il primo lettore che mi capitò sott'occhio. Su aliexpress si trova anche a meno (vedi ad esempio qui Registrati al forum qui per vedere questo link.), però non sono totalmente sicuro se quel lettore è esattamente come il mio o cambia qualcosa. Se volete comprarlo fatelo a vostro rischio e pericolo.

Il software fornito con il lettore fa pietà e permette di leggere e scrivere solo dei tag del tipo EM4XXX. Noto però che nella cartella è presente una dll chiamata "SRF32.dll". Mmmhh la cosa mi puzza, decido aprire la dll con "Dependency Walker" per capire le funzioni che contiene e mi trovo davanti questo:

Codice:
s_AsciiToHex
s_CRC16Code
s_CRC16DeCode
s_CRC8Code
s_CRC8DeCode
s_GetSupportCard
s_GetUSBDevInfo
s_GetUSBportPath
s_HexToAscii
s_SearchUSBDevice
s_bell
s_eeprom_get
s_eeprom_read
s_eeprom_set
s_eeprom_write
s_el8265a_reset
s_el8265a_rf_start
s_el8265a_rf_stop
s_el8265a_write_emid
s_el8265a_write_emid_pass
s_em4305_disable
s_em4305_login
s_em4305_login_ascii
s_em4305_protect
s_em4305_protect_ascii
s_em4305_readWord
s_em4305_readWord_ascii
s_em4305_writeWord
s_em4305_writeWord_ascii
s_emid_Write8800
s_emid_WriteEM4305
s_emid_WriteT5557
s_emid_WriteT5557_bcd
s_emid_read
s_emid_read_ascii
s_emid_read_bcd
s_exit
s_init
s_mf1_antenna
s_mf1_pcd_reset
s_mf1_pcd_transceive_bits
s_mf1_pcd_transceive_bytes
s_mf1_typea_anticoll
s_mf1_typea_anticoll_ascii
s_mf1_typea_block_read
s_mf1_typea_block_read_ascii
s_mf1_typea_block_write
s_mf1_typea_block_write_ascii
s_mf1_typea_get_uid
s_mf1_typea_get_uid_ascii
s_mf1_typea_halt
s_mf1_typea_host_authkey
s_mf1_typea_host_authkey_ascii
s_mf1_typea_request
s_mf1_typea_request_ascii
s_mf1_typea_select
s_mf1_typea_select_ascii
s_mf1_typea_txrf
s_t5577_WakeUp
s_t5577_WakeUp_ascii
s_t5577_blockPasswordRead
s_t5577_blockPasswordRead_ascii
s_t5577_blockPasswordWrite
s_t5577_blockPasswordWrite_ascii
s_t5577_blockRead
s_t5577_blockRead_ascii
s_t5577_blockWrite
s_t5577_blockWrite_ascii
s_t5577_pageRead
s_t5577_pageRead_ascii
s_t5577_read_current
s_t5577_read_current_ascii
s_t5577_reset
s_t5577_reset_ascii
s_test_device
s_test_dll

BINGO! Il programma che mi hanno dato utilizza solamente una parte delle funzioni presenti, mentre ce ne sono altre che non vengono proprio utilizzate (tra cui quelle per leggere e scrivere una scheda T5577, indicate ovviamente con il suffisso "s_t5577").
Il problema è che con i nomi ci facciamo ben poco, dato che ci servono gli argomenti passati alle funzioni per poterle utilizzare. Cercando su internet "SRF32.dll" ho trovato un sito cinese che conteneva alcuni esempi dell'utilizzo di queste librerie. All'interno ho trovato un file .h contenente le chiamate alla maggior parte delle funzioni presenti nel dispositivo. Il file .h e tutti gli altri li trovate qui Registrati al forum qui per vedere questo link.

Una volta trovati gli argomenti e le funzioni per leggere e scrivere una scheda T5577 ci resta solo da trovare il modo per leggere i dati da una scheda HID. Ho già detto che il costo dei lettori ufficiali è proibitivo, i lettori cinesi o non ci sono o costano comunque troppo e lavorano male, l'unica alternativa è comprare un proxmark ma il costo è decisamente troppo per quel poco che dobbiamo fare.
Come potete notare dall'immagine sulla modulazione FSK, questa si comporta come una modulazione ASK in cui gli uni e gli zeri sono rapprentati da sequenze lunghe acceso-spento. Per questo motivo si può utilizzare l'usicta di un demodulatore RFID ASK, acquisire la forma d'onda con la scheda audio del PC (dato che le frequenze in gioco sono 12 e 15 Khz che riescono tranquillamente ad essere campionate dalla scheda audio) e usare un software che estrapola i bit dal file audio.

Per fare questo dobbiamo aprire il lettore RFID e saldare due fili. Uno alla massa e uno all'uscita del demodulatore. I punti da saldare sono illustrati in figura (la massa è quel filo saldato alla piazzola più grande)

Registrati al forum qui per vedere questo link.

Per il collegamento al PC è sufficiente usare un condensatore fra l'uscita del demodulatore ASK e l'ingresso del microfono come indicato in figura:
[Immagine: vpy470M.png]
Il valore del condensatore non è critico, io ne ho usato uno da 470uF perché avevo quello sottomano e funziona benissimo.

Per acquisire la forma d'onda va benissimo Audacity o qualche altro tipo di programma adatto a registrare l'audio dal microfono del PC. È importante che la frequenza di campionamento sia settata a 192000 Hz e che il file venga salvato in .wav MONO. Per acquisire l'onda basta poggiare la carta HID sul lettore e far partire la registrazione (non esagerate, basta 1 o 2 secondi di registrazione). La forma d'onda dovrebbe essere una cosa tipo questa:
Registrati al forum qui per vedere questo link.
Nota bene: è solo uno zoom di una PARTE dell'onda, non TUTTA l'onda Smile

Per capire la struttura dati di una carta HID ci viene in aiuto un immagine tratta dal forum del proxmark:
[Immagine: gPMUnay.png]
Registrati al forum qui per vedere questo link.

Come potete vedere sono diverse le carte che può emulare il T5577. Io ho considerato una card HID 26 bit che è quella che ho sottomano, ma come potete vedere dal thread ce ne sono altre di tipo diverso. Il software che ho implementato permette di leggere e clonare solo quelle a 26 bit, se mi fate avere le forme d'onda di altre carte posso provare a implementarle nel mio software.
I dati sono salvati con una codifica di tipo Manchester (lo zero è salvato come "01" e l'uno è salvato come "10"). Il contenuto del blocco 0 (il configuration register) è fisso e dipende dalla moulazione usata, i dati invece vanno inseriti nei registri 1,2 e 3.
Dimenticavo: le tessere T5577 le potete trovare su aliexpress qui Registrati al forum qui per vedere questo link.

Dopo che abbiamo salvato il file wav è sufficiente aprire il programma "HID cloner" che ho scritto e che trovate qui: Registrati al forum qui per vedere questo link.
È stato fatto in freebasic (ci sono i sorgenti e potete benissimo compilarlo voi). Una volta aperto dovrete premere "1" per aprire il file .wav che avete appena salvato, se la procedura va a buon fine vedrete scritto "Decoding Complete" e tutti i dati della card sono stampati su schermo. Dopodichè basta appoggiare la card T5577 sul lettore e premere il tasto "2". Se tutto va bene avete appena clonato un tag HID!

È evidente che un sistema del genere è comunque macchinoso. Uno degli step successivi è quello di creare un lettore/scrittore stand alone con Arduino o un altro microcontrollore. Il mio intento è quello di mostrare un "Proof Of Concept" della procedura, dato che attualmente l'unico modo per fare una cosa del genere è usare un proxmark 3.

Non sono stato molto dettagliato nel descrivere la procedura di lettura-scrittura con il lettore RFID. Gli interessati possono andarsi a spulciare i sorgenti oppure fare qualche domanda in questo thread.

Buon divertimento!
Trova tutti i messaggi di questo utente
Cita questo messaggio nella tua risposta
12-11-2017, 02:49 PM

12-11-2017, 04:59 PM
Messaggio: #2
RE: Leggere e clonare un tag HID
I miei complimenti per la spiegazione.
Ottimo lavoro.
22
Trova tutti i messaggi di questo utente
Cita questo messaggio nella tua risposta
Rispondi 



Vai al forum:


Powered by MyBB, © 2002-2017 MyBB Group. myBB new designed for MyBB
Modifiche a cura di Mattia - Copyright 2007-2017 Methack.it
Questo sito e tutti i suoi contenuti sono pubblicati sotto licenza Creative Commons 2.5.