Stap 3: magnetische kaart Basics
1. detecteren wanneer de kaart heeft al gejat
2. Lees de stroom van gegevens
3. detecteren wanneer de kaart is gegaan
4. verwerking van de gegevens
5. de gegevens weergeven
Eerst zal ik u kennismaken met basics magnetische kaart die u nodig hebt om te weten wanneer u beginnen met het schrijven van uw eigen code.
Magnetische kaart-normen
Magneetkaarten zijn gestandaardiseerd door de ISO in de volgende documenten:
7810 fysieke kenmerken van de creditcard formaat document
7811-1 reliëf
7811-2 magneetstrip - lage coerciviteit
7811-3 locatie van reliëf tekens
7811-4 locatie van tracks 1 & 2
7811-5 locatie van spoor 3
7811-6 magneetstrip - hoge coerciviteit
7813 financiële transactie kaarten
Zoals u zien kunt, financiële kaarten zijn opgegeven in een apart document en hebben vaak verschillende formaten dan, zeg, uw supermarkt card of internationale telefoonkaart. Zul je naar programma voor deze verschillen. Ik had net een credit card en de verzekeringskaart handig, dus ik geprogrammeerd voor deze typen (die beide toevallig formaat B).
Kaartformaten
Er zijn verschillende indelingen voor magneetkaarten. Indeling A en B zijn gemeenschappelijk, met B worden de meest voorkomende ik heb gezien, en die wordt ondersteund in deze code. Formaten C t/m M zijn voorbehouden door de ISO, mijns inziens, terwijl N via?? zijn gereserveerd voor institutionele aangepaste gebruik.
Track 1
Voor financiële kaarten, het eerste nummer wordt geregistreerd bij 210 bits per inch en is de eerste 0.110" van de kaart vanaf de bovenkant. De gegevens worden gecodeerd als "card data" als 7-bits per teken. Dat is een 6-bits voor het karakter en een beetje voor pariteit. Er zijn ~ 79 alfanumerieke tekens op nummer 1.
De fysieke volgorde is achteruit. Dat wil zeggen gegevens is maar het achteruit geschreven op de kaart (en vandaar, zullen worden gelezen door uw firmware) als. De pariteit is vreemd.
De gegevensindeling kaart ziet er zo uit:
[SS] [FC] [Primary Account #] [FS] [Name] [FS] [Additional data] [FS][ES][LRC]where: SS Start sentinel FC Format code FS Field separator ES End sentinel LRC Longitudinal Redundancy Check character
Bijhouden van een SS = '%', FC = een van de formaten (gonna be B een heleboel keer), FS is vaak '', ES is '?' en het LRC-teken wordt over het algemeen ' <' hoewel het niet is opgegeven in de normen. Naast het geschreven op de kaart naar achteren, de gegevens heeft een oneven pariteitsbit en 0x20 van ASCII is. We zullen dit omgaan wanneer we gegevens verwerken.
Track 2
Nummer twee is 0.110" breed en 0.110 vanaf de bovenkant van de kaart. Het opname-dichtheid is 75 bits per inch. De gegevens zijn 5 bits per teken en bestaat uit ongeveer 40 numerieke symbolen alleen. Je moet niet alle letters op dit circuit tegenkomen.
De gegevensindeling van de kaart dient deze structuur te volgen:
[SS] [primary account #] [FS] [additional data | discretionary data] [ES] [LRC]
De SS voor nummer twee is de puntkomma: ";" en de FS is '='
Met deze heilige kennis onder je riem, gaat u verder met de volgende stappen om tenuitvoerlegging van de procedure die hierboven beschreven code te zien.