|
|
![]() |
|
Questa è la visuale completa della banda magnetica vista dall'alto.
Questa foto è stata prodotta dalla testina del lettore originale.
E' bastato mettere il wave sottoforma di immagine, lo zero dell'onda è il nero.
Questo è cio che si riesce a vedere con uno di quei visori magnetici per le tessere telefoniche, l'unica differenza è che l'immagine riprodotta è in scala 1:1 e puoi anche distinguere lo zero crossing dell'onda ad occhio.
Ma vediamo come si interpreta tutto questo...
Anatomia della banda:

La banda magnetica della scheda telefonica ha 2 tracce identiche (rappresentate dalle rette verdi).
Questo sistema permette durante la lettura di eliminare le interferenze, basta fare la sottrazione delle due tracce per ottenere l'interferenza e poi applicare la differenza fra la somma delle tracce e l'interferenza per togliere i disturbi.
Questo si può intuire da come sono strutturati i circuiti sull'interfaccia del lettore.
Tutto ciò ti impedisce di coprire una parte della banda per utilizzare la scheda due volte!
Osservando la figura si nota subito l'anatomia della banda:
I due spazi a destra e sinistra sono di manovra, in quei punti la velocità della banda è imprecisa nell'lettore urmet.
Questo tipo di banda mangetica usa (è evidente all'occhio) un sistema brevettato dalla Urmet.
In magneto e nello studio delle schede ogni oggetto; cancelletti di apertura/chiusura, picco di separazione e trame, vengono chiamati token.
In altre parole possiamo dire che un token è un'oggetto presente sulla banda magnetica.
(Questa convenzione è usata dall'implementazione di Magneto)
Le tracce magnetiche sono scritte nel sistema pseudo ternario, a sua volta, diviso in trame di bits.
Il sistema pseudo ternario prevede tre stati dell'onda:
Positivo
Negativo
Zero (Eccetto il passaggio diretto fra +- e -+ ).
Perchè uno zero sia tale deve essere lungo almeno quanto un picco!
Da varie letture si nota anche che non tutte le schede sono identiche, per esempio in figura si può notare la differenza tra le schede del 1°tipo e quelle del 2°tipo.
Solitamnete le schede più comuni sono del 2° tipo, per sapere qualcosa di più sui tipi bisogna fare un salto avanti...
Grossomodo la struttura della banda è sempre questa:Tra ogniuno di questi elementi c'è uno spazio rappresentato da uno zero molto lungo.
- Cancelletto di apertura:
Costituito da un picco negativo solitario (INIZIO 0-000...)- Prima trama:
Contiene vari dati della scheda ed inizia sempre con 13C03C09:
Questo è il Magic number che serve ad identificare l'applicazione.
Evidentemente a seguito ci sono gli header della scheda.- Picco o token vuoto:
Un picco di separazione -+ ...- Trama aggiunta:
(Non è sempre presente!)
Questa trama di solito è molto piccola e contiene una sequenza:
333
Fa riferimento a dei dati usati per operazioni future, ad esempio nelle schede con particolari promozioni il contenuto può essere diverso.
Le schede SIP del Sud Tirolo per esempio hanno un numero differente.
Le schede con concorsi a premi hanno una vera e propria sequenza di dati come la 2^ trama.- Seconda trama:
Sempre molto simile a tutte le altre schede telefoniche.
L'inizio e la fine sono identici per molte schede, la parte in mezzo (6 cifre) cambia, ma non sembra corrispondere direttamente al numero di serie scritto in basso a sinistra sulla scheda.
Se C'è la trama aggiunta questa sequenza di solito è più corta.- Terza trama (credito):
Questa trama contiene il credito residuo della scheda telefonica.
Ci sono una serie di numeri 3, ogniuno di questi, escluso il primo, vale 10 centesimi... ovvero un'unità di credito.
Nelle schede in lire corrispondeva a 200Lire.- Cancelletto di chiusura:
E' un picco fortemente positivo e solitario (...000+0FINE) che segnala la fine della banda magnetica.
Il sistema Pseudo ternario:
Funziona in un modo molto semplice, l'onda può avere tre stadi, Positivo, negativo o Zero.La frequenza di clock è data dalla lunghezza di un picco:
Guardando la figura il clock è dato dalla lunghezza del picco verso l'alto (positivo) e vale fino al picco successivo, così se la frequenza è leggermente irregolare ma non troppo, non ci sono intoppi!
Quando scrivo + mi riferisco ad un picco positivo (verso l'alto).
Quando scrivo - mi riferisco ad un picco negativo (verso il basso).
Quando scrivo 0 mi riferisco ad un picco mancante (riga orizzonatale).
Nel nostro oscillogramma della fiugura qui sopra si vede la sequenza:
0011010 = Questa è la traduzione in binario dell'onda di esempio.
Ecco come ci si arriva:
Qunado c'è un picco + o - (Positivo oppure negativo) per ogniuno di questi la traduzione è un bit "0" (binario).
Quando c'è un picco mancante si ha un bit 1.
Qunado mancano più di un bit in questo caso 2 (vedi barretta grigia)
si hanno N volte (in questo caso 2) "1".
Perciò dalla sequenza:
+-00+0- Diventa:
0011010
Per verificare se l'onda è corretta supponiamo di ignorare gli zeri.
+-00+0- Vedi subito che rimane: +-+-
Il sistema pseudo ternario deve sempre avere sequenze alternative di picchi quando è diverso da zero.
Esempio di errori:
++ --
+0-++0+
Se ti dovessero capitare due picci di polarità identica vale il più forte dei 2 e laltro è zero!
Magneto elimina questo problema attraverso la Normalizzazione Dinamica
In questo sistema di lettura c'è una limitazione.
Alla fine funziona un po come un codice a barre, per quanto riguarda lo zero (in binario) si può ripetere quanto vuoi.
L'uno (sempre in binario) non può essere ripetuto più di 2 volte di seguito perciò il nostro "alfabeto delle onde" diventa piuttosto limitato.
I bit letti si raggruppano a 4 (ovvero un byte è di 4 bits) in formato LSB.
Oltretutto bisogna tenere in cosniderazione che le trame di dati iniziano sempre con un picco positivo e finiscono con un picco negativo.
Stando attenti si capisce al volo che i bits devono essere bilanciati in modo che alla fine tutto resti sempre compreso tra 2 picchi + e -:
Esempio:
1100 In ternario dentro ad una trama diventa:
+ 00-+ -
Dove quei +- Rossi Sono i 2 picchi di apertura e chiusura della trama.
Fin quì tutto corretto, ma:
1101 In ternario dentro ad una trama diventa:
+ 00-0 + -
Dove quel picco + Verde è stato aggiunto alla fine per far combaciare il sistema.
Anatomia delle onde:
E' molto importante sapere una cosa sulle onde che vengono amplificate direttamente dalla testina:
Nella zona arancione della figura si nota un'errore tipico di lettura.
Quello strano picco ?! deve essere corretto perchè se ignoro gli zeri cosa ottengo:
+-+-0-+
Valuto a occhio e scopro che il primo - è più piccolo del secondo e lo correggo.
Ma da dove salta fuori???
E' un rimbalzo dell'onda!
Le onde prodotte dale digito non sono pulitissime e neance completamente sinusoidali sono come spinte in avanti.
In questa figura sono segnati:
In Verde l'onda originale della banda
In Giallo la traduzione in livelli (ternario + 0 -).
In Cerchi Viola le transizioni lente dell'onda.
(Sono da considerare zero perchè sono sotto al livello minimo segnato in Rosso).
Il livello minimo o valore minimo ti consente di riconoscere lo zero dell'onda correttamente eliminando le varie interferenze, i rimbalzi, etc...
Se il picco di separazione risulta avere uno zero in mezzo (-0+) allora il valore è troppo alto!
Puoi vedere la differenza confrontando i primi due picchi +- che non hanno una transizione lenta come fra il secondo ed il terzo (-0+).
Fra l'ultimo ed il penultimo è ovvio che ci stanno 2 picchi perciò è un +00- in ternario.
Le trame e la loro lettura:
Struttura e livelli delle trame
Questo schema rappresenta la struttura e la metodologia per tradurre le trame della scheda.
All'esterno della figura (a destra ed a sinistra) ci sono gli spazi ovviamente.
(Consideriamo una trama alla volta!)
Dove appaiono i tre punti gialli è un'interruzione (non potevo mica farti la figura di tutta la trama per esteso è lunga!)
Si parte la livello più basso (wave) e si arriva al livello più alto (contenuto).
Dalle nozioni descritte spora si fa presto a passare dal wave al ternario, controllare che sia tutto corretto, e poi passare al binario (la trama di bits vera e propria).
Si tolgono il primo e l'ultimo bit, sono il bit di start e di stop (i cancelletti di apertura e di chiusura della trama, consentono una corretta lettura e danno il clock!)
Servono anche a non creare intoppi all'inizio ed alla fine.
I bytes sono di 4 bits ciascuno e sono in LSB ovvero il primo bit è il meno significativo e ciò vuol dire che la sequenza:
1000 (bin) = 1 (Dec)
Ora prendiamo tutti i bytes e li facciamo lo xor uno dietro laltro, se la trama è corretta (salvo eccezioni...) il valore finale sarà 0000.
Chiaramente non è l'unico ed il vero sistema di verifica per testare le trame.
Il vero sistema di verifica delle trame è la parita/disparità dei picchi nel sistema pseudo ternario.
Infatti i test sono questi:
* Togliendo gli zeri i picchi sono sempre alternativi: -+-+-+-+-
* Contando la parità e la disparita dei bits 0 e 1 la trama si trova sempre tra i 2 picchi di start e stop con le polarità corrette.
* Altro... Vedremo in seguito i codici di sicurezza
Se leggi le varie trame noti subito una cosa:
Non appaiono mai bytes con almeno tre 1 (111) di fila.
Infatti il sistema pseudo ternario delle schede non lo consente!
Come e' scritto sopra infatti non si può mettere più di due bit 1 (binario) di seguito.
Questo esclude i seguenti bytes:
Hex Bin
7 = 1110
E = 0111
F = 1111
Si nota anche che c'è un'altro byte che non viene usato:
B = 1101
Alla fine i bytes che possono esserci sono questi:
12345689ACD = Alfabeto di 11 simboli!
Evidentemente per evitare la limitazione è stato usato un trucco matematico per aumentare la capacità di questo alfabeto piuttosto piccolo per 4 bits.
Ma c'è di più:
Anche lo 0 "sparisce":
Se non posso mettere 2 bits 1 di fila non si può neanche scrivere:1000 1100 0011 1100 0011 1001 1 3 C 3 C 9
Per risolvere questo problema il protocollo prevede l'inserimento di uno zero in mezzo per evitare le sequenze 111 tra i bytes.
Perciò si ha:1000 1100 0011 0000 1100 0011 0000 1001 1 3 C 0 3 C 0 9
Ricorda qualcosa?
Ci sono sicuramente altri trucchetti per aumentare le capacità di scrittura...
Alla fine potremmo rimappare i simboli ottenendo le 10 cifre del sistema decimale più uno spazio:
1234567890_
Codici di sicurezza:
Questo è il 2° sitema di verifica dei dati e dell'autenticità della scheda telefonica.
Sfruttano un'automa a stati finiti.
In pratica si crea una mappa del tipo:
Dal numero 1 si puo andare al 2 oppure al 3 oppure alla fine della trama.
Con questo procedimento Magneto verifica l'autenticità della scheda.
Perciò per decodificare le trame usiamo i seguenti sistemi:
* Rimuovi i rimbalzi (RemoveRebound)
* Sistema Pseudo ternario (alternatività di polarità tra i picchi)
* Bilanciamento dei picchi stessi (la trama è sempre tra start e stop)
* Automa a stati finiti
* Magic number (codice di applicazione)
* LRU (non sempre)
Notazione Magnetica testo:
In magneto (Dalla versione 1.0.0 in poi) e per tutti gli appunti è stato adottato un sistema più comprensibile e portabile per poter scrivere il contenuto dell'intera banda magnetica in una solra riga di testo.
Sfrutta un pharser molto semplice (un interprete).
I cancelletti di apertura e chiusura sono rappresentati dalle parentesi graffe:
{ = Cancelletto di apertura
} = Cancelletto di chiusura
Lo spazio viene considerato come spazio tra un token e l'altro, ovviamente se metti più spazi viene sempre considerato uno spazio e vale solo tra trame.
Se vuoi mettere uno spazio (12 bits) espliciti devi usare il simbolo _
Le trame vengono scritte in esadecimale a caratteri maiuscoli.
Alla fine delle trame possono esserci i bits aggiutivi per far combaciare il sistema, questi ultimi vengono scritti "in piccolo":
° = Bit 0
' = Bit 1
Valgono solo alla fine della trama di dati.
Il picco di separazione ha il simbolo pipe |
Non ha importanza se a destra o a sinistra del simboli | { } ci sono spazi, non vengono considerati!
Se c'è uno spazio è solo per una lettura più semplice all'occhio umano!
La trama del credito è sempre tra parentesi quadre [] (bit aggiuntivi inclusi).
Se non hai voglia di scrivere tutti quei 3 in fila come per es:
[3333333333]
Puoi scrivere il credito direttamente tra parentesi tonde () specificando l'unità di misura (se non specifichi è l'euro).
La virgola corrisponde al punto.
es: 3,5€ diventa (3.5)
Le unità di misura vanno dopo l'importo.
Es: 1 €:
(1)
Es: 1000 £:
(1000£)
Es: 10 unità:
(10U)
I bits aggiuntivi si mettono dopo l'unità di misura:
(10U')
Detto questo la scheda telefonica tipica si presenta così:
{13C03C0942946816CC8432966664296433A19643 | 333 A194332DCCC8642D84 [3'] }
Oppure:
{13C03C0942946816CC8432966664296433A19643 | 333 A194332DCCC8642D84 (0') }
{13C03C0942946816CC8432966664296433A19643 | 333 A194332DCCC8642D84 (0£') }
{13C03C0942946816CC8432966664296433A19643 | 333 A194332DCCC8642D84 (0U') }
In pratica:
{<1^ trama> | <trama aggiunta> <2^Trama> [<Credito>] }
Questo sistema viene usato da Magneto nei files MTEX ed implica una corretta lettura.
Conviene sempre salvare in formato STM con il WAVE la prima volta che si legge una scheda!
Quando fai copia o incolla viene usato questo sistema.
E' anche molto più semplice del formato TXT di magneto vecchio (0.8.1)
La Prima Trama:
Stado alla scheda da analizzare la 1^ trma è questa sequenza di dati:
13C03C0942946816CC8432966664296433A19643
13C03C0 = Questa parte è il magic number tutte le schede iniziano così. 9 = Questo è il codice di applicazione: 9 = scheda 2 = Test card. 4 = Questo numero cambia asseconda del tipo di scheda e dell'impotro massimo. Tutto ciò che è scritto in giallo resta invariato in schede dello stesso tipo. Tutto ciò che è scritto in questo colore cambia da scheda a scheda.
Le verifiche da ritenere valide in Magneto per questa trama sono:DATI = Rispetta l'automa a stati finiti LRU = Rispetta il test sui dati 3 = Rispetta il bilanciamento sui bits Queste condizioni valgono per tutti i tipi di schede.
La trama aggiunta:
Non è sempre presente, c'è solo nelle schede del 2^ tipo.
Questa trama contiene solo 3 byte:
333
Soddisfa solo queste condizioni:
DATI = Rispetta l'automa LRU = Condizione di indifferenza 3 = Rispetta il bilanciamento dei bits.Sulle schede speciali questa trama contiene una sequenza vera e propria.
Io ho notato questo sulla scheda XXL. 30 Centesimi a scatto, uno scatto per telefonata e parli x sempre.
Le trovo sempre distrutte mai intere, non mi è stato possibile leggerle correttametne (troppo rovinate).
Evidentemente i clienti nn sono molto contenti!!!
La Seconda Trama:
La seconda trama è molto simile in 10 anni dal 1994 al 2004 non è cambiata molto:
333 A19433 2DCCC8 642D84 (Lire) 2°Tipo
294333294329433 329666 642D84 (Euro) 1°Tipo
Se qui ci fosse un numero di serie potrebbe essere quello in giallo, ma c'è un problema, la rete intelligente e perciò il numero di serie è effettivo nascono tra il 1994 ed il 1995, questa è una scheda del 1993 che scade nel 1994.
La Terza Trama:
Questa contiene il credito.
Contiene una sfilza di 3:
3333333333333333333333333333333 = 30 Unità da 10 Centesimi l'una (3€ Carica!)
Mammano che si cancellano i 10 centesimi viene eliminato un 3.
Fino al primo che non vale nulla:
Evidentemente dal sistema ternario rimane:
.1100.
+00-+-
Senza quel 3 (1100) in più diventerebbe:
+- = Identico al picco vuoto di separazione.
Nelle schede scariche infatti c'è solo un 3!
Sulle schede vecchie c'è anche un bit 1 alla fine: [3']
![]() |
![]() |
![]() |