Identificativi OpenPass
OpenPass UID
L'UID è il codice seriale identificativo del supporto RFID.
ANEF SKI Lombardia ha identificato un formato univoco distinguibile dai formati utilizzati dagli attuali sistemi di accesso, in modo che sia immediatamente riconoscibile come ID del sistema OpenPass. Il formato è il seguente:
xxxx xxxx xxxx xxxx xxxx-yyy
xxxx xxxx xxxx xxxx xxxx = Chip ID in decimale, in 5 gruppi di 4 numeri separati da spazio (ASCII 0x20)
yyy = CRC-OpenPass : come qui sotto definito.
Definizione della modalità per il calcolo del CRC-OpenPass:
- CRC order = 16
- CRC polynom = 0x8408
- Initial value = 0xFFFF
- Final XOR value = 0x0
- CRC Addendum = 0x38B2
Effettuato il calcolo del CRC viene sommato un termine addizionale costante (CRC Addendum), ricavato il modulo base 1000 e il valore a tre cifre rappresentato in decimale (che rappresenta appunto CRC-OpenPass) viene accodato all'UID, preceduto dal carattere - (ASCII 0x2D).
Il risultato di tali operazioni è il CRC-OpenPass.
Questo è il codice della funzione per il calcolo del CRC sviluppata in Java:
//funzione per il calcolo del CRC
int calculate_crc(byte[] data) {
int crc_preset = 0xFFFF; //valore iniziale
int crc_poly = 0x8408; //polinomio
int final_xor_value = 0x0; //xor finale
int current_crc_value = crc_preset;
for (int i = 0; i < data.length; i++ )
{
current_crc_value ^= data[i] & 0xFF;
for (int j = 0; j < 8; j++)
{
if ((current_crc_value & 1) != 0){
current_crc_value = (current_crc_value >>> 1) ^ crc_poly;
}
else{
current_crc_value = current_crc_value >>> 1;
}
}
}
//xor finale
current_crc_value = (current_crc_value ^ final_xor_value);
int crc_addendum = 0x38B2; //addendum openpass
current_crc_value += crc_addendum;
//modulo
current_crc_value = current_crc_value % 1000; //modulo openpass
return current_crc_value & 0xFFFF;
}
OpenPass Number
L'OpenPass Number è un codice identificativo del biglietto ed è costituito dai seguenti campi:
- Root.Group: gruppo;
- Root.Workstation: cassa che emette il biglietto;
- Root.SerialNumberEx2: progressivo di emissione.