0% found this document useful (0 votes)
74 views16 pages

Type of Magnet

The document discusses the encoding of magnetic stripe cards like credit cards. It provides details on: - The 3 tracks used for encoding, their bit densities and character encodings - How data is encoded by reversing the polarity of the magnetic field - The self-clocking nature and error checking (parity bits) used - The formats and fields encoded on each track, including account numbers, names, expiration dates etc.

Uploaded by

neopeyman1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views16 pages

Type of Magnet

The document discusses the encoding of magnetic stripe cards like credit cards. It provides details on: - The 3 tracks used for encoding, their bit densities and character encodings - How data is encoded by reversing the polarity of the magnetic field - The self-clocking nature and error checking (parity bits) used - The formats and fields encoded on each track, including account numbers, names, expiration dates etc.

Uploaded by

neopeyman1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Decoding magnetic cards Path: ux1.cso.uiuc.edu!uwm.edu!wupost!zaphod.mps.ohio-state.edu!

uakari.primate.wisc.edu!ames!agate!dog.ee.lbl.gov!network.ucsd.edu!ucsd.edu!brian From:
brian@ucsd.edu (Brian Kantor) Newsgroups: sci.electronics Subject: Re: Encoding Scheme of Mag Stripe
Cards? Message-ID: Date: 10 Jan 92 20:58:00 GMT References:
<1992Jan10.202240.2789@ux1.cso.uiuc.edu> Organization: The Avant-Garde of the Now, Ltd. Lines: 373
NNTP-Posting-Host: ucsd.edu Path: ucsd!usc!cs.utexas.edu!uunet!mcsun!hp4nl!ooc.uva.nl!ropg ~From:
ropg@ooc.uva.nl (Rop Gonggrijp) ~Newsgroups: sci.electronics ~Subject: Re: Credit card encoding
Message-ID: <13619@slice.ooc.uva.nl> ~Date: 26 Sep 90 13:09:59 GMT ~References:
<28174@pasteur.Berkeley.EDU> Organization: uvabick ~Lines: 28 e142-aq@hercules.Berkeley.EDU
(Alan Nishioka) writes: >Does anybody know how information is encoded on the magnetic stripe for
>credit cards, bank cards, my student id, etc.? Any references? A trip >to the library and looking thru the
reader 's guide didn't get me anywhere. Well, there's three tracks (ISO 3554), all 0.110" wide. The top
one is 210 BPI and has 7 bits per chr. (incl. parity). Total 79 alpha-num. chrs. The second track has 75 BPI,
5 bits per chr. (incl. par.) total 40 digits The third track has agian 210 BPI, 5 bits per chr (yeah incl. par.)
total 107 digits. Data is coded reversing the polarity of the magnetic field once or twice in the field for
that bit. Since you cannot double of half the speed of the card within the space for 1 bit, it all works. >I
just bought a card reader which had 5 ttl level outputs. Two for each >of 2 head tracks and a 5th that
goes low when a card is being run thru. >The chips don't seem to be identifiable. Well, the bad news is
that you'll have to write the decoding software yourself. Not much to it, I did it on a Commodore-64.
Our magazine ("Hack-Tic") printed the full specs on all this in the last issue. -- Rop Gonggrijp
(ropg@ooc.uva.nl) is also editor of Hack-Tic (hack/phreak mag.) quote: "We don't care about freedom of
the mind, | Postbus 22953 (in DUTCH) freedom of signature will do just fine" | 1100 DL AMSTERDAM
Any opinions in this posting are wasted on you | tel: +31 20 6001480 From ucsd!swrinde!
zaphod.mps.ohio-state.edu!julius.cs.uiuc.edu!psuvax1!rutgers!dayton!jad Fri Sep 28 04:18:32 PDT 1990
> Article <28174@pasteur.Berkeley.EDU> From: e142-aq@hercules.Berkeley.EDU > (Alan Nishioka)
>Does anybody know how information is encoded on the magnetic stripe for >credit cards, bank cards,
my student id, etc.? Any references? A trip >to the library and looking thru the reader 's guide didn't get
me anywhere. You'll want to see the American National Standard X4.16 (which I just happen to have
sitting in my lap.) It is available from the American National Standards Institute, Inc. 1430 Broadway New
York, NY 10018 My version is dated 1983. I suspect it has been superceded by now. It details everything
(everything!) you ever could possibly want to know about mag stripe encoding for financial services
cards. >I just bought a card reader which had 5 ttl level outputs. Two for each >of 2 head tracks and a
5th that goes low when a card is being run thru. >The chips don't seem to be identifiable. In most all of
the MSR's I've taken apart, the chips are custom. One of our vendor's configurations for the wiring
looked like this: 1 RDT1 Data from track 1 2 RCL1 Clock from track 1 3 GND 4 +5V 5 n/c 6 RCL2 Clock
from track 2 7 CLD Card Presence 8 RDT2 Data from track 2 You could use a scope to determine which is
which -- track 2 is recorded at 75 bits/inch while track 1 is 210 bits/inch. Just watch the blinking! The
data is self clocking. _____ __ __ _____ __ | |_____| |__| |__| |__| |_____ ^ ^ ^ ^ ^ ^ ^ 0 0 1 1 0 1 0 >I
discovered that cards seem to use two different levels of stripe, for >a total of 4 tracks on my bank card,
but only two on my student id, which >are at the wrong level for my reader. Your bank card will typically
only use the read-only tracks one and two. Track 3 is a read/write track that has the same
electromagnetic properties as track 1, but its usage is not standardized within the industry. Many cards
issued today do not even have magnetic media at the location for track 3. (It was originally intended for
off-line ATM authorization, but guess what happened to that idea!) >The code must be self-clocking and
I would guess just have simple >error checking (parity) since the card can just be run thru again if
>necessary. The parity checking is pretty impressive. Track 1 characters are 6 bits plus one (odd) parity
bit. There is also an LRC (Longitudinal Redundancy Check) character after the end sentinel character. The
LRC bits are parity bits for all the characters in the track such that the total one bits are odd. (The LRC
parity bit is simply a parity check on the LRC character.) This scheme protects against almost all random
card damage, as you would have to have four bits wrong (the corners of a rectangle, physically) to
escape detection. Track 2 parity detection is the same, but track 2 characters are only 4 bits plus one
(odd) parity bit. The character sets are fairly simple subsets of ASCII. Tracks 1 & 3 use this table: 0 1 2 3
00 01 10 11 <-MSD 0 0000 SP 0 @a P 1 0001 !a 1 A Q 2 0010 "a 2 B R 3 0011 #b 3 C S 4 0100 $ 4 D T 5
0101 %c 5 E U 6 0110 &a 6 F V 7 0111 'a 7 G W 8 1000 ( 8 H X 9 1001 ) 9 I Y A 1010 *a :a J Z B 1011 +a ;a
K [d C 1100 ,a a N ^c F 1111 / ?c O _d a For the encoding of data on magnetic stripe cards, these
character positions shall not contain information characters (data content). b Optional additional
graphic. c These characters shall have the following meaning for this application: 25 % represents start
sentinel. 3F ? represents end sentinel. 5E ^ represents separator. d These character positions are
reserved for additional national characters when required. They shall not be used internationally. Track
1 format: Format A. Reserved for proprietary use of card issuer. Format B. Start sentinel 1 character
Format code = "B" 1 character - alpha only Primary Account Number Up to 19 characters (Note 1)
Separator 1 character Country code 3 characters (Note 2) Name 2-26 characters (note 3) Surname
Surname separator="/" First name or initial Space (when required) (Note 4) Middle name or initial
Period (when followed by title) Title (when used) Separator 1 character Expiration date or 4 characters
or 1 character separator (Note 5) Discretionary data The balance to maximum record length End sentinel
1 character LRC 1 character (see above for LRC calculation) Total 79 characters max. Notes: 1 In
accordance with the account numbering scheme in ANSI X4.13-1983. 2 When the primary account
number commences with major industry identifier "5" followed by "9", the encoding of the country in
this position is mandatory. In all other situations, the expiration date or separator shall immediately
follow the separator that terminates the primary account number. The country code for the United
States is 840. 3 The absolute minimum data encoded in the name field will be a single alpha character in
the surname area and the surname separator (/). 4 The space character is required to separate the
logical elements of the name field other than the surname. The separator terminating the name field
should be encoded following the last logical element of the name field. If only the surname is encoded,
it will follow the surname separator. 5 In accordance with ANSI X3.30-1971. If no expiration date is
associated with the card, a separator shall be encoded. The format for the expiration date is YYMM.
Format Codes C through M. The format codes are reserved for use by ANSI Subcommittee X3B10 in
connection with other data formats of track 1. Format Codes N through Z. Available for use by individual
card issuers. Track 2 uses the following 4 bit character set: 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4
5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 A 1010 Note 1 B 1011 Start sentinel (start character) C
1100 Note 2 D 1101 Separator E 1110 Note 1 F 1111 End sentinel (stop character) Notes: 1 These
characters are available for hardware control purposes and shall not be used for data content. 2 This
character is reserved for future definition in connection with the data format on track 2. Track 2 format:
Start sentinel 1 character Primary Account Number Up to 19 characters (Note 1) Separator 1 character
Country code 3 characters (Note 2) Expiration date or 4 characters or 1 character separator (Note 3)
Discretionary data The balance to maximum record length End sentinel 1 character LRC 1 character (see
above for LRC calculation) Total 40 characters max. Notes: 1 In accordance with the account numbering
scheme in ANSI X4.13-1983. 2 When the primary account number commences with major industry
identifier "5" followed by "9", the encoding of the country in this position is mandatory. In all other
situations, the expiration date or separator shall immediately follow the separator that terminates the
primary account number. The country code for the United States is 840. 3 In accordance with ANSI
X3.30-1971. If no expiration date is associated with the card, a separator shall be encoded. The format
for the expiration date is YYMM. >BTW, I just want to read, not commit bank fraud :-) I would have to
build >another card input/output assembly for that :-) I've seen some scams based on ATM card fraud,
but it may be tough to fool Mother Visa...particularily when you have to hand your card to a living,
breathing human. Do me a favor and mail me a copy of your interface circuit when you get it working,
OK? -j, now you know all our little secrets, eh? -- J. Deters Ask me about my PS/2. // INTERNET:
jad@dayton.DHDSC.MN.ORG Then, // UUCP: ...!bungia!dayton!jad ask me about my Amiga! \\ // ICBM:
44^58'36"N by 93^16'12"W \X/ From ucsd!dog.ee.lbl.gov!pasteur!cory.Berkeley.EDU!atn Wed May 8
07:41:21 PDT 1991 Just got my new California driver's license. No, I'm not 17, but I take the bus a lot. It
has a holographic plastic laminate of "DMV" and the California Seal. My color picture was digitized into
and IBM computer as was my thumb print and my signature. The mag stripe on the back has three
tracks. Just for fun, I thought I'd try to read it. I had previously been able to read bank cards (with help
from sci.electronics). I found that the information encoded is basically just what is printed on the card.
Kinda uninteresting. Of course I couldn't figure out what little extra information was encoded.... (marked
unidentified below) It took me a little while to figure out the format, and I suppose it is documented
somewhere (anyone know where?) but it was fun. Bank Cards -- conform to ANSI/ISO 7810-1985 ($10)
Track 1: 6 bit word with 1 bit parity. LSB first. code offset 32 below ASCII code. Track 2: 4 bit word with 1
bit parity. LSB first. Numbers only. Driver's License -- Track 1: 6 bit word with no parity. Otherwise same
as Bank Card. Track 2: Same as Bank Card. California Driver's License: --------------------------- Track 2: (low
density) 8 unidentified digits License Number Separator Expiration Date (YYMM) Separator Date of Birth
(YYYYMMDD) Track 1: (High density) DALAN TAKEO NISHIOKA $ 974 TULARE AVE ALBANY Name (58
characters) Address (29 characters) City (13 characters) Track 3: (High density. Can't reposition read
head. ); Great Western Bank ATM Card: --------------------------- Track 2: Account number on the front of
the card Separator Expiration date (no country code) Other (propietary) data Track 1: Format B Account
number Separator Name (from front of card) Separator Expiration date (no country code) Other data
AT&T Universal Card: ------------------- Track 1: Format B Account Number Separator Name Separator
Expiration Date (YYMM) 6 Unknown chars Calling Card Number (10 digits) Track 2: Account Number
Separator Expiration Date (YYMM) 3 Unknown chars Citibank ATM Card: ----------------- Track 1: Format A
(proprietary) Name Separator Account Number Separator Expiration Date (MMYY) 7 Unidentified chars
Track 2: Account Number Separator Expiration Date (MMYY) 7 Unidentified chars
----------------------------------------------------------------------------- Alan Nishioka KC6KHV
atn@cory.berkeley.edu ...!ucbvax!cory!atn 974 Tulare Avenue, Albany CA 94707-2540 37'52N/122'15W
+1 415 526 1818 Newsgroups: sci.electronics From: pam@kaarne.cs.tut.fi (Ala-M{yry
Pekka,,,OHJ,52774,1052) Subject: Re: Magnetic Stripe Cards Originator: pam@kaarne.cs.tut.fi Nntp-
Posting-Host: kaarne.cs.tut.fi Reply-To: pam@kaarne.cs.tut.fi Organization: Tampere University of
Technology, Dep. of Computer Science Date: Sat, 14 May 1994 22:42:32 GMT From article , by
lware@voxel.com (Lance Ware): > A while back I saw some info on mag stripe cards here. Can anyone
point > me to it? I am interested in how much data the various (Credit, Hotel > Room, etc . . .)stripes can
hold. > > Lance Ware > IS Manager & VOXEL Guru > VOXEL I have a copy of a German version (EN 27
811) of a standard ISO 7811-2 and German version of standard ISO 4909. And English version of ISO
7830. The quotes of the original are in parenthesis. I'm not very good at German so please correct if I am
wrong. EN 27 811 (ISO 7811-2) The data density (Bit-Dichte) at three of the tracks: Alphanumeric track
(Alphanumerische Spur 1): 8,3bits/mm [210 bits/inch] Numeric track (Numerische Spur 2): 3bits/mm [75
bits/inch] Read-Write track (Schreib-Lesespur 3): 8,3bits/mm [210 bits/inch] Format of track 1 data: 6
bits of data with odd parity (6-Bit-Zeichencode mit ungerader Paritat) Format of tracks 2 and 3: BCD-4
bit code with odd parity (BCD-4-Bit-Code mit ungerader Paritat) ISO 7830 Track 1 - Structure B: 79
characters Track 2 - Standard structure: 40 digits ISO 4909 Track 3 - Max. 107 characters (Maximal
Gesamt 107) -- pam@cs.tut.fi Pekka Ala-Mayry Tampere Univ. of Tech. Tampere, FINLAND Summary of
replies to the following request: Subject: Mag Card Swipe Reader: Need Help! Hello, Everybody. I just
picked up one of those swipe readers for mag stripes on credit cards etc. from a surplus outfit (American
Science & Surplus in Evanston, IL 708/475-8440 for those who are interested). It's not the complete unit
with keypad, display, etc. but rather just the guts of the subassembly which actually reads the card (hey,
what do you expect for $2.50?? ;-) Since it's surplus and taken out of a larger piece of equipment, I have
no docs for this sucker. My hope is that someone else picked up one of these things to play with and has
some docs or has figured out enough about it to get it to work, OR can tell me who to contact to get
more info on this beast. I figured this would be a good place to ask since I've seen people asking about
swipe card readers recently. Anyway, here's a description: The unit is about 6" long, 1" wide, and maybe
2" high. It consists of a metal backing plate, attached to which is a black plastic guide channel through
which you swipe the card. On one side of the plastic channel is a read head for the mag stripe; on the
opposite side is a small printed circuit board. Removing the plastic guide from the mounting plate
reveals that the manufacturer is SR&D corporation of Tokyo, Japan. The model number is MCR-175-1R-
0803; a serial number is also listed. The SR&D logo-lettering appears on the component side of the PC
board, and on the foil side of the board the SR&D is repeated along with the code "FNC -065-1" in the
upper right hand corner. The board has one IC on it (I can't easily see what the numbers are on this chip,
so I'm not sure what kind it is other than a 16 pin DIP). There is a spot for another chip, an 8-pin DIP for
which the screened label reads "IC2 6914", but this chip and some other resistors, capacitors, etc. are
missing. Finally, there are 5 wires coming from the assembly and terminating in a small connector similar
to power supply connectors for 3.5" floppy drives. The wires are red, yellow, green, blue, and black. I
haven't hacked on this thing at all yet, since I don't know what its power requirements are or even
which are power leads and which are data leads. If anyone has any information on this puppy which
might help me, I'd love to hear from you! Please email me. I'll share whatever I find out with anyone
who's interested. Thanks! --- [Editor's Note: The following is a concatenation of the replies I received to
the net.request above. After the replies I have included information which was posted to the net on how
mag stripe cards are encoded (in case anyone missed it). Finally, I have included some software that I
threw together to play with the card reader. This file contains all the information I have on this subject.
Additions are most welcome. You'll notice I didn't get any farther than simply reading the raw signal
from the card; of the two card readers I ordered, one was completely DOA, and the other had a faulty
clock output (at least I assume that it was a clock output; I was never able to read any sort of signal from
that line). Someone with a fully functional reader can easily extend what I wrote to get it to decode the
actual data content of the card. If you do decide to make modifications and/or extensions, I'd appreciate
a copy of whatever changes you make (email to tmkk@uiuc.edu). Enjoy!] Subject: Re: Mag Card Swipe
Reader: Need Help! I am truly amazed that someone else is trying to use this device! I got mine about 2
years ago and spent some time trying to find the manufacturer. I found a listing for SR&D in the Noth
America technical directory at the public library. I found the listing for the American sales office in Los
Angeles. I tried calling but the company had gone out of business. There was no listing in the local phone
directory either. I then tried calling the head office in Japan, but they also had gone out of business. I
haven't seen the company listed in any recent electronics directories, so I think they really are gone. I
have spent about an hour looking at the signals on the outputs of the device. One signal line is a
/STATUS line which indicates when a card is been moved through the unit. The other 2 lines pulse in
response to a magnetic card. I believe the IC performs Manchester decoding and clock recovery for the
read channel, so one output line is DATA and the other is CLOCK. That is as far as I got 2 years ago and I
had forgot about it until now. If you receive any other info, please send a copy to me! --- >Finally, there
are 5 wires coming from the assembly and terminating in a >small connector similar to power supply
connectors for 3.5" floppy drives. >The wires are red, yellow, green, blue, and black. If its anything like
the units I worked with, I think you will find that the five wires are: +5v Gnd Clock Data Card detected
But I don't know active levels, or which wire is what. --- I picked few week ago a magnetic credit card
reader from a another surplus outfit. It cost about the sam es yours. My card reader was made by
MAGTEK and was diffrent from your reder in many ways. The reader I have has 4 ICs and some of them
are standard TTL chip, so I could easily quess the power requiments (5V) and power connectors. My card
reader had 6 pin connector. I put the power to the reader and started to examine the signals with
multimeter and a little crystal earphine (my favourite electronics hacking tool). I found that output
signals were something like that: data out, data clock out, data readable and and card ath the end of the
reader. Then I connected the reader to the joystick port of my 386SX and made a little Turbo Pascal
program for reading the card. Spare printer port is the interface I use very often to connect diffrent
hardware circuit to my computer. This time I decided to use game port beacuse it can also provide the
power to the reader. My program simply prints out the bits from the card. I have not found the way to
decode the bits to corresponding numbers. The program so prints all 237 bits form the card to screen. If
you have any information about data coding, I an interrested in hearing that. Here is the meanings of
the bytes in port $201: D7: 0 -> card pushed to the end of the reader D6: the read data from card D5: 0 -
> data stream readable D4: the data clock Program CardReader; Uses Crt,Binary; Const gameport=$201;
Procedure Wait_start; Begin Repeat Until (Port[gameport] and 32)=0; End; Function
data_readable:boolean; Begin data_readable:=((Port[gameport] and 32)=0); End; Procedure Wait_clock;
Begin Repeat Until (Port[gameport] and 16)=0; End; Procedure Wait_clock_end; Begin Repeat Until
(Port[gameport] and 16)=16; End; Function data_input:byte; Begin If (Port[gameport] and 64)=0 Then
data_input:=0 Else data_input:=1; End; Function card_at_end:boolean; Begin
card_at_end:=((Port[gameport] and 128)=0); End; Procedure test; Begin Wait_start; Repeat
Writeln(ByteBin(Port[$201])); Until keypressed; End; Begin ClrScr; Wait_start; While data_readable Do
Begin Wait_clock; Write(data_input); Wait_clock_end; End; Repeat Until KeyPressed; End. --- Wiring
color code for the SR&D MCR-175-1R-0803 mag stripe card reader: Red: +5V Black: Gnd Yellow: /Card
Detect Green: Clock (?? - non-functional on the unit I have) Blue: /Data The leading '/' indicates an active
low TTL signal. --- Quick 'n Dirty guide to the enclosed reader software
---------------------------------------------------- Hooking the SR&D MCR-175-1R-0803 card reader to your PC:
The included software is written specifically for the following configuration; if your wiring is different,
you'll need to make corresponding changes to the software. Note also that the port address is hard-
coded to look for LPT2's status port (at address 0x279). If you're using a different port address, be sure
to change the port address value. SR&D Wire Printer Port Pin Port Bit Signal --------- ---------------- --------
------ Yellow 11 7 /CARD DETECT Blue 10 6 /DATA Black 18 N/A (Ground) Power to the reader was
provided by a separate power supply, basically one of those black plastic DC power packs fed through a
7805 regulator chip. Compiling the software: Compile SWIPE.C (using SMALL memory model), assemble
SWIPEISR.ASM, and link the two together. Using the software: To use SWIPE.EXE, simply hook the
reader up to your LPT2: port, power it up, then run SWIPE. When you're ready, press the ENTER key, and
swipe a card through the reader. The program will read the data from the card and store it in a buffer
(but will not decode the data; that is left as an excercise ;-). After the card has been read, press ENTER
again and the contents of the buffer will be dumped to stdout. To save the card data to a file, simply
redirect SWIPE's output on the command line, e.g. SWIPE > citibank.out Please let me know of any
changes, bug fixes, or improvements you make to this code. Send email to tmkk@uiuc.edu. Thanks, and
have fun! --- CUT HERE --- /* * S W I P E . C * * Written: * 1/11/92 * * Description: Quick 'n Dirty reader
program for SR&D mag stripe card reader. * Reads data from the input port as long as a card is detected
in the * card slot. After sampling, the data is dumped to stdout, and may * be redirected to a file if
desired. * * Note: Written for Borland C++ 3.0 - may require changes to compile under * MSC or others.
Compile in SMALL model. * */ #include #include #include #include #include #include #include
#include /* timer chip programming register port addresses */ #define COMMAND_REG 0x43 #define
CHANNEL0 0x40 /* size of sample buffer */ #define MAXSAMPLE 4096 typedef unsigned char byte; /*
global variables */ byte *databuf; /* buffer for the sampled data */ /* interprocess communication data
*/ byte *bufp; /* data buffer pointer */ unsigned nsamp; /* number of samples to be made */ unsigned
port; /* input port address */ int enab=0; /* flag to enable/disable sampling */ int start=0; /* flag
indicating that sampling has begun */ /* ISR prototype */ extern void interrupt shand(void); void
program_timer(int channel, unsigned count) /* * P R O G R A M _ T I M E R * * Description: Programs
the given count value into the specified channel of * the IBM 825x timer chip. Channel 0 is the time-of-
day-clock interrupt; * channel 2 is the speaker pulser. * * Parameter: * channel (in) - Channel to be
programmed. * count (in) - Count value with which to program timer chip. * */
{ outportb(COMMAND_REG, 0x36); /* set up for reprogramming */ outportb(CHANNEL0 + channel,
count & 0xff); /* lo byte first */ outportb(CHANNEL0 + channel, count >> 8); /* then hi byte */ } void
sample_data(int count) /* * S A M P L E _ D A T A * * Description: Sets up for data collection from the
printer port using * the SHAND interrupt service routine (see SWIPEISR.ASM). This routine * reprograms
the timer chip for the desired sampling rate, sets up * the interprocess communication area, and starts
the sampling process. * The actual sampling is done in the SHAND procedure. This routine * waits until
sampling has been completed before returning. * */ { void interrupt (*oldhand)(void); /* pointer to old
interrupt vector */ /* save old interrupt vector */ oldhand = getvect(0x1c); /* clear enable flag */ enab =
0; start = 0; /* install new vector */ setvect(0x1c, shand); /* set up interprocess communications area */
nsamp = 0; bufp = databuf; port = 0x279; /* address of printer status register */ cprintf("Sampling at
%fHz (= %fms)....", 1193180.0 / (float)count, (float)count / 1193.18); /* reprogram timer chip */
program_timer(0, count); /* enable sampling */ enab = 1; /* wait until sampling is completed */ while
(enab) ; /* restore standard timing value */ program_timer(0, 0); /* reinstall old handler vector */
setvect(0x1c, oldhand); cprintf(" completed.\r\n"); } void main() { unsigned i; /* allocate memory */
databuf = calloc(MAXSAMPLE, sizeof(byte)); assert (databuf != NULL); cprintf("Press when ready to
swipe card:"); getchar(); sample_data(12); /* This works out to about a 100kHz sampling rate */
cprintf("Sampling completed, %u samples total.\r\n", nsamp); cprintf("Press to dump data.\r\n\r\n");
getchar(); /* dump data to stdout */ for (i=0; i); Sat, 18 Jan 1992 19:44:44 -0600 Received: from
spica.bu.edu by mrcnext.cso.uiuc.edu (NeXT-1.0 (From Sendmail 5.52)/NeXT-1.0) id AA02279; Sat, 18
Jan 92 19:42:18 CST Received: by spica.bu.edu (5.61+++/Spike-2.1) id AA12820; Sat, 18 Jan 92 20:43:39 -
0500 Date: Sat, 18 Jan 92 20:43:39 -0500 From: count0@spica.bu.edu (Bobby Newmark) Message-Id:
<9201190143.AA12820@spica.bu.edu> To: khan@mrcnext.cso.uiuc.edu Subject: Re: Encoding Scheme
of Mag Stripe Cards?
******************************************************************************* * * *
Card-O-Rama: Magnetic Stripe Technology and Beyond * * * * or * * * * "A Day in the Life of a Flux
Reversal" * * * * * * * * by: ..oooOO Count Zero OOooo.. .RDT. 11/22/91 * * *
******************************************************************************* ---A
production of : -=Restricted -=Data -=Transmissions : : : : "Truth is cheap, but information costs." : Look
in your wallet. Chances are you own at least 3 cards that have magnetic stripes on the back. ATM cards,
credit cards, calling cards, frequent flyer cards, ID cards, passcards,...cards, cards, cards! And chances are
you have NO idea what information is on those stripes or how they are encoded. This detailed
document will enlighten you and hopefully spark your interest in this fascinating field. None of this info
is 'illegal'...but MANY organizations (government, credit card companies, security firms, etc.) would
rather keep you in the dark. Also, many people will IMMEDIATELY assume that you are a CRIMINAL if
you merely "mention" that you are "interested in how magnetic stripe cards work." Watch yourself, ok?
Just remember that there's nothing wrong with wanting to know how things work, altho in our present
society, you may be labelled a "deviant" (or worse, a "hacker!"). Anyway, I will explain in detail how
magstripes are encoded and give several examples of the data found on some common cards. I will also
cover the technical theory behind magnetic encoding, and discuss magnetic encoding alternatives to
magstripes (Wiegand, barium ferrite). Non-magnetic card technology (bar code, infrared, etc.) will be
described. Finally, there will be an end discussion on security systems and the ramifications of emergent
"smartcard" and biometric technologies. *DISCLAIMER* Use this info to EXPLORE, not to EXPLOIT. This
text is presented for informational purposes only, and I cannot be held responsible for anything you do
or any consequences thereof. I do not condone fraud, larceny, or any other criminal activities. *A
WARNING* I've noticed lately a few "books" and "magazines" for sale that were FILLED with PHILES on a
variety of computer topics. These philes were originally released into the Net with the intention of
distributing them for FREE. HOWEVER, these philes are now being PACKAGED and sold FOR PROFIT. This
really pisses me off. I am writing this to be SHARED for FREE, and I ask no payment. Feel free to reprint
this in hardcopy format and sell it if you must, but NO PROFITS must be made. Not a fucking DIME! If
ANYONE reprints this phile and tries to sell it FOR A PROFIT, I will hunt you down and make your life
miserable. How? Use your imagination. The reality will be worse. ** MAGSTRIPE FIELDS, HEADS,
ENCODING/READING ** Whew! I'll get down to business now. First, I am going to explain the basics
behind fields, heads, encoding and reading. Try and absorb the THEORY behind encoding/reading. This
will help you greatly if you ever decide to build your own encoder/reader from scratch (more on that
later). FERROMAGNETIC materials are substances that retain magnetism after an external magnetizing
field is removed. This principle is the basis of ALL magnetic recording and playback. Magnetic POLES
always occur in pairs within magnetized material, and MAGNETIC FLUX lines emerge from the NORTH
pole and terminate at the SOUTH. The elemental parts of MAGSTRIPES are ferromagnetic particles
about 20 millionths of an inch long, each of which acts like a tiny bar magnet. These particles are rigidly
held together by a resin binder. The magnetic particles are made by companies which make coloring
pigments for the paint industry, and are usually called pigments. When making the magstripe media, the
elemental magnetic particles are aligned with their North-South axes parallel to the magnetic stripe by
means of an external magnetic fields while the binder hardens. These particles are actually permanent
bar magnets with TWO STABLE POLARITIES. If a magnetic particle is placed in a strong external magnetic
field of the opposite polarity, it will FLIP its own polarity (North becomes South, South becomes North).
The external magnetic field strength required to produce this flip is called the COERCIVE FORCE, or
COERCIVITY of the particle. Magnetic pigments are available in a variety of coercivities (more on that
lateron). An unencoded magstripe is actually a series of North-South magnetic domains (see Figure 1).
The adjacent N-S fluxes merge, and the entire stripe acts as a single bar magnet with North and South
poles at its ends. Figure 1: N-S.N-S.N-S.N-S.N-S.N-S.N-S.N-S <-particles in stripe --------- represented as->
N-----------------------------S However, if a S-S interface is created somewhere on the stripe, the fluxes will
REPEL, and we get a concentration of flux lines around the S-S interface. (same with N-N interface)
ENCODING consists of creating S-S and N-N interfaces, and READING consists of (you guessed it)
detecting 'em. The S-S and N-N interfaces are called FLUX REVERSALS. ||| ||| <-flux lines Figure 2:
N------------N-N-S-S-----------------S --------- flux lines -> ||| ||| The external magnetic field used to flip the
polarities is produced by a SOLENOID, which can REVERSE its polarity by reversing the direction of
CURRENT. An ENCODING head solenoid looks like a bar magnet bent into the shape of a ring so that the
North/South poles are very close and face each other across a tiny gap. The field of the solenoid is
concentrated across this gap, and when elemental magnetic particles of the magstripe are exposed to
this field, they polarize to the OPPOSITE (unlike poles attract). Movement of the stripe past the solenoid
gap during which the polarity of the solenoid is REVERSED will produce a SINGLE flux reversal (see Figure
3). To erase a magstripe, the encoding head is held at a CONSTANT polarity and the ENTIRE stripe is
moved past it. No flux reversals, no data. | | <----wires leading to solenoid | | (wrapped around
ring) /-|-|-\ / \ Figure 3: | | <----solenoid (has JUST changed polarity) --------- \ / \ N S / <---gap in ring..
NS polarity across gap N----------------------SS-N-------------------------S ^^ <<<<<-direction of stripe
movement S-S flux reversal created at trailing edge of solenoid! So, we now know that flux reversals are
only created the INSTANT the solenoid CHANGES its POLARITY. If the solenoid in Figure 3 were to remain
at its current polarity, no further flux reversals would be created as the magstripe moves from right to
left. But, if we were to change the solenoid gap polarity from NS to *SN*, then (you guessed it) a *N-N*
flux reversal would instantly be created. Just remember, for each and every reversal in solenoid polarity,
a single flux reversal is created (commit it to memory..impress your friends..be a tech weenie!). An
encoded magstripe is therefore just a series of flux reversals (NN followed by SS followed by NN ...).
DATA! DATA! DATA! That's what you want! How the hell are flux reversals read and interpreted as data?
Another solenoid called a READ HEAD is used to detect these flux reversals. The read head operates on
the principle of ELECTROMAGNETIC RECIPROCITY: current passing thru a solenoid produces a magnetic
field at the gap, therefore, the presence of a magnetic field at the gap of a solenoid coil will *produce a
current in the coil*! The strongest magnetic fields on a magstrip are at the points of flux reversals. These
are detected as voltage peaks by the reader, with +/- voltages corresponding to NN/SS flux reversals
(remember, flux reversals come in 2 flavors). See Figure 4. magstripe---> -------NN--------SS--------
NN---------SS------ Figure 4: voltage-----> .......+.........-.........+...........-..... --------- ---------- ------------- peak
readout--> | | | | --------| |----------| |---- The 'peak readout' square waveform is critical. Notice that the
voltage peak remains the same until a new flux reversal is encountered. Now, how can we encode
DATA? The most common technique used is known as Aiken Biphase, or 'two-frequency coherent-phase
encoding' (sounds impressive, eh?). First, digest the diagrams in Figure 5. Figure 5: ---------- ----------
---------- --------- | | | | | | <- peak a) | |--------| |--------| | readouts * 0 * 0 * 0 * 0 * 0 * ----- ----- ----- -----
----- - | | | | | | | | | | | b) | |----| |----| |----| |----| |----| * 1 * 1 * 1 * 1 * 1 * ----- ---------- ----- ----- - | | |
| | | | | | c) | |----| |--------| |----| |----| * 1 * 0 * 0 * 1 * 1 * There ya have it. Data is encoded in 'bit
cells,' the frequency of which is the frequency of '0' signals. '1' signals are exacty TWICE the frequency of
'0' signals. Therefore, while the actual frequency of the data passing the read head will vary due to
swipe speed, data density, etc, the '1' frequency will ALWAYS be TWICE the '0' frequency. Figure 5C
shows exactly how '1' and '0' data exists side by side. We're getting closer to read DATA! Now, we're all
familiar with binary and how numbers and letters can be represented in binary fashion very easily. There
are obviously an *infinite* number of possible standards, but thankfully the American National
Standards Institute (ANSI) and the International Standards Organization (ISO) have chosen 2 standards.
The first is ** ANSI/ISO BCD Data format ** This is a 5-bit Binary Coded Decimal format. It uses a 16-
character set, which uses 4 of the 5 available bits. The 5th bit is an ODD parity bit, which means there
must be an odd number of 1's in the 5-bit character..the parity bit will 'force' the total to be odd. Also,
the Least Significant Bits are read FIRST on the strip. See Figure 6. The sum of the 1's in each case is odd,
thanks to the parity bit. If the read system adds up the 5 bits and gets an EVEN number, it flags the read
as ERROR, and you gotta scan the card again. (yeah, I *know* a lot of you out there *already*
understand parity, but I gotta cover all the bases...not everyone sleeps with their modem and can recite
the entire AT command set at will, you know ;). See Figure 6 for details of ANSI/ISO BCD. Figure 6:
ANSI/ISO BCD Data Format --------- * Remember that b1 (bit #1) is the LSB (least significant bit)! * The
LSB is read FIRST! * Hexadecimal conversions of the Data Bits are given in parenthesis (xH). --Data Bits--
Parity b1 b2 b3 b4 b5 Character Function 0 0 0 0 1 0 (0H) Data 1 0 0 0 0 1 (1H) " 0 1 0 0 0 2 (2H) " 1 1 0 0
1 3 (3H) " 0 0 1 0 0 4 (4H) " 1 0 1 0 1 5 (5H) " 0 1 1 0 1 6 (6H) " 1 1 1 0 0 7 (7H) " 0 0 0 1 0 8 (8H) " 1 0 0 1 1
9 (9H) " 0 1 0 1 1 : (AH) Control 1 1 0 1 0 ; (BH) Start Sentinel 0 0 1 1 1 < (CH) Control 1 0 1 1 0 = (DH)
Field Separator 0 1 1 1 0 > (EH) Control 1 1 1 1 1 ? (FH) End Sentinel ***** 16 Character 5-bit Set *****
10 Numeric Data Characters 3 Framing/Field Characters 3 Control Characters The magstripe begins with
a string of Zero bit-cells to permit the self-clocking feature of biphase to "sync" and begin decoding. A
"Start Sentinel" character then tells the reformatting process where to start grouping the decoded
bitstream into groups of 5 bits each. At the end of the data, an "End Sentinel" is encountered, which is
followed by an "Longitudinal Redundancy Check (LRC) character. The LRC is a parity check for the sums
of all b1, b2, b3, and b4 data bits of all preceding characters. The LRC character will catch the remote
error that could occur if an individual character had two compensating errors in its bit pattern (which
would fool the 5th-bit parity check). The START SENTINEL, END SENTINEL, and LRC are collectively called
"Framing Characters", and are discarded at the end of the reformatting process. ** ANSI/ISO ALPHA
Data Format ** Alphanumeric data can also be encoded on magstripes. The second ANSI/ISO data
format is ALPHA (alphanumeric) and involves a 7-bit character set with 64 characters. As before, an odd
parity bit is added to the required 6 data bits for each of the 64 characters. See Figure 7. Figure 7: ---------
ANSI/ISO ALPHA Data Format * Remember that b1 (bit #1) is the LSB (least significant bit)! * The LSB is
read FIRST! * Hexadecimal conversions of the Data Bits are given in parenthesis (xH). ------Data Bits-------
Parity b1 b2 b3 b4 b5 b6 b7 Character Function 0 0 0 0 0 0 1 space (0H) Special 1 0 0 0 0 0 0 ! (1H) " 0 1 0
0 0 0 0 " (2H) " 1 1 0 0 0 0 1 # (3H) " 0 0 1 0 0 0 0 $ (4H) " 1 0 1 0 0 0 1 % (5H) Start Sentinel 0 1 1 0 0 0 1
& (6H) Special 1 1 1 0 0 0 0 ' (7H) " 0 0 0 1 0 0 0 ( (8H) " 1 0 0 1 0 0 1 ) (9H) " 0 1 0 1 0 0 1 * (AH) " 1 1 0 1 0
0 0 + (BH) " 0 0 1 1 0 0 1 , (CH) " 1 0 1 1 0 0 0 - (DH) " 0 1 1 1 0 0 0 . (EH) " 1 1 1 1 0 0 1 / (FH) " 0 0 0 0 1 0
0 0 (10H) Data (numeric) 1 0 0 0 1 0 1 1 (11H) " 0 1 0 0 1 0 1 2 (12H) " 1 1 0 0 1 0 0 3 (13H) " 0 0 1 0 1 0 1
4 (14H) " 1 0 1 0 1 0 0 5 (15H) " 0 1 1 0 1 0 0 6 (16H) " 1 1 1 0 1 0 1 7 (17H) " 0 0 0 1 1 0 1 8 (18H) " 1 0 0 1
1 0 0 9 (19H) " 0 1 0 1 1 0 0 : (1AH) Special 1 1 0 1 1 0 1 ; (1BH) " 0 0 1 1 1 0 0 < (1CH) " 1 0 1 1 1 0 1 =
(1DH) " 0 1 1 1 1 0 1 > (1EH) " 1 1 1 1 1 0 0 ? (1FH) End Sentinel 0 0 0 0 0 1 0 @ (20H) Special 1 0 0 0 0 1 1
A (21H) Data (alpha) 0 1 0 0 0 1 1 B (22H) " 1 1 0 0 0 1 0 C (23H) " 0 0 1 0 0 1 1 D (24H) " 1 0 1 0 0 1 0 E
(25H) " 0 1 1 0 0 1 0 F (26H) " 1 1 1 0 0 1 1 G (27H) " 0 0 0 1 0 1 1 H (28H) " 1 0 0 1 0 1 0 I (29H) " 0 1 0 1 0
1 0 J (2AH) " 1 1 0 1 0 1 1 K (2BH) " 0 0 1 1 0 1 0 L (2CH) " 1 0 1 1 0 1 1 M (2DH) " 0 1 1 1 0 1 1 N (2EH) " 1
1 1 1 0 1 0 O (2FH) " 0 0 0 0 1 1 1 P (30H) " 1 0 0 0 1 1 0 Q (31H) " 0 1 0 0 1 1 0 R (32H) " 1 1 0 0 1 1 1 S
(33H) " 0 0 1 0 1 1 0 T (34H) " 1 0 1 0 1 1 1 U (35H) " 0 1 1 0 1 1 1 V (36H) " 1 1 1 0 1 1 0 W (37H) " 0 0 0 1
1 1 0 X (38H) " 1 0 0 1 1 1 1 Y (39H) " 0 1 0 1 1 1 1 Z (3AH) " 1 1 0 1 1 1 0 [ (3BH) Special 0 0 1 1 1 1 1 \
(3DH) Special 1 0 1 1 1 1 0 ] (3EH) Special 0 1 1 1 1 1 0 ^ (3FH) Field Separator 1 1 1 1 1 1 1 _ (40H)
Special ***** 64 Character 7-bit Set ***** * 43 Alphanumeric Data Characters * 3 Framing/Field
Characters * 18 Control/Special Characters The two ANSI/ISO formats, ALPHA and BCD, allow a great
variety of data to be stored on magstripes. Most cards with magstripes use these formats, but
occasionally some do not. More about those lateron. ** Tracks and Encoding Protocols ** Now we know
how the data is stored. But WHERE is the data stored on the magstripe? ANSI/ISO standards define *3*
Tracks, each of which is used for different purposes. These Tracks are defined only by their location on
the magstripe, since the magstripe as a whole is magnetically homogeneous. See Figure 8. Figure 8:
--------- _________________________________________________________________ | ^ ^ ^
|------------------| 0.223"--|---------|------------------------- | | | 0.353" | ^ |..................|.........|.........| 0.493" |
| Track #1 0.110" | | | |............................|.........|... | | | | |............................|.........|... | | Track #2
0.110" | | |......................................|... | | | | |......................................|... | | Track #3 0.110" |
|.......................................... | | | |------------------------------------------------------------------ | | | You can see
the exact distances of each track from the edge of the card, as well as the uniform width and spacing.
Place a magstripe card in front of you with the magstripe visible at the bottom of the card. Data is
encoded from left to right (just like reading a book, eh?). See Figure 9. Figure 9: --------- ANSI/ISO Track
1,2,3 Standards Track Name Density Format Characters Function
-------------------------------------------------------------------- 1 IATA 210 bpi ALPHA 79 Read Name & Account 2
ABA 75 bpi BCD 40 Read Account 3 THRIFT 210 bpi BCD 107 Read Account & *Encode* Transaction ***
Track 1 Layout: *** | SS | FC | PAN | Name | FS | Additional Data | ES | LRC | SS=Start Sentinel "%"
FC=Format Code PAN=Primary Acct. # (19 digits max) FS=Field Separator "^" Name=26 alphanumeric
characters max. Additional Data=Expiration Date, offset, encrypted PIN, etc. ES=End Sentinel "?"
LRC=Longitudinal Redundancy Check *** Track 2 Layout: *** | SS | PAN | FS | Additional Data | ES |
LRC | SS=Start Sentinel ";" PAN=Primary Acct. # (19 digits max) FS=Field Separator "=" Additional
Data=Expiration Date, offset, encrypted PIN, etc. ES=End Sentinel "?" LRC=Longitudinal Redundancy
Check *** Track 3 Layout: ** Similar to tracks 1 and 2. Almost never used. Many different data
standards used. Track 2, "American Banking Association," (ABA) is most commonly used. This is the track
that is read by ATMs and credit card checkers. The ABA designed the specifications of this track and all
world banks must abide by it. It contains the cardholder's account, encrypted PIN, plus other
discretionary data. Track 1, named after the "International Air Transport Association," contains the
cardholder's name as well as account and other discretionary data. This track is sometimes used by the
airlines when securing reservations with a credit card; your name just "pops up" on their machine when
they swipe your card! Since Track 1 can store MUCH more information, credit card companies are trying
to urge retailers to buy card readers that read Track 1. The *problem* is that most card readers read
either Track 1 or Track 2, but NOT BOTH! And the installed base of readers currently is biased towards
Track 2. VISA USA is at the front of this 'exodus' to Track 1, to the point where they are offering Track 1
readers at reduced prices thru participating banks. A spokesperson for VISA commented: "We think that
Track 1 represents more flexibility and the potential to deliver more information, and we intend to build
new services around the increased information." What new services? We can only wait and see. Track 3
is unique. It was intended to have data read and WRITTEN on it. Cardholders would have account
information UPDATED right on the magstripe. Unfortunately, Track 3 is pretty much an orphaned
standard. Its *original* design was to control off-line ATM transactions, but since ATMs are now on-line
ALL THE TIME, it's pretty much useless. Plus the fact that retailers and banks would have to install NEW
card readers to read that track, and that costs $$. Encoding protocol specifies that each track must begin
and end with a length of all Zero bits, called CLOCKING BITS. These are used to synch the self- clocking
feature of biphase decoding. See Figure 10. Figure 10: end sentinel start sentinel | longitudinal
redundancy check | | | 000000000000000 SS.................ES LRC 0000000000000000 leading data, data,
data trailing clocking bits clocking bits (length varies) (length varies) THAT'S IT!!! There you have the
ANSI/ISO STANDARDS! Completely explained. Now, the bad news. NOT EVERY CARD USES IT! Credit
cards and ATM cards will follow these standards. BUT, there are many other types of cards out there.
Security passes, copy machine cards, ID badges, and EACH of them may use a PROPRIETARY
density/format/track-location system. ANSI/ISO is REQUIRED for financial transaction cards used in the
international interbank network. All other cards can play their own game. The good news. MOST other
cards follow the standards, because it's EASY to follow a standard instead of WORKING to make your
OWN! Most magstripe cards other than credit cards and ATM cards will use the same Track
specifications, and use either BCD or ALPHA formats. ** A Bit About Magstripe Equipment ** "Wow,
now I know how to interpret all that data on magstripes! But... waitasec, what kind of equipment do I
need to read the stripes? Where can I buy a reader? I don't see any in Radio Shack!!" Sorry, but
magstripe equipment is hard to come by. For obvious reasons, card readers are not made commonly
available to consumers. How to build one is the topic for another phile (and THIS phile is already too
long!). Your best bets are to try and scope out Electronic Surplus Stores and flea markets. Don't even
bother trying to buy one directly from a manufacturer, since they will immediately assume you have
"criminal motives." And as for getting your hands on a magstripe ENCODER...well, good luck! Those rare
beauties are worth their weight in gold. Keep your eyes open and look around, and MAYBE you'll get
lucky! A bit of social engineering can go a LONG way. There are different kinds of magstripe
readers/encoders. The most common ones are "swipe" machines: the type you have to physically slide
the card thru. Others are "insertion" machines: like ATM machines they 'eat' your card, then regurgitate
it after the transaction. Costs are in the thousands of dollars, but like I said, flea markets and surplus
stores will often have GREAT deals on these things. Another problem is documentation for these
machines. If you call the manufacturer and simply ask for 'em, they will probably deny you the literature.
"Hey son, what are you doing with our model XYZ swipe reader? That belongs in the hands of a
'qualified' merchant or retailer, not some punk kid trying to 'find out how things work!" Again, some
social engineering may be required. Tell 'em you're setting up a new business. Tell 'em you're working
on a science project. Tell 'em anything that works! 2600 Magazine recently had a good article on how to
build a machine that copies magstripe cards. Not much info on the actual data formats and encoding
schemes, but the device described is a start. With some modifications, I bet you could route the output
to a dumb terminal (or thru a null modem cable) in order to READ the data. Worth checking out the
schematics. As for making your own cards, just paste a length of VCR, reel-to-reel, or audio cassette tape
to a cut-out posterboard or plastic card. Works just as good as the real thing, and useful to experiment
with if you have no expired or 'dead' ATM or calling cards lying around (SAVE them, don't TOSS them!).
** Examples of Data on Magstripes ** The real fun in experimenting with magstripe technology is
READING cards to find out WHAT THE HELL is ON them! Haven't you wondered? The following cards are
the result of my own 'research'. Data such as specific account numbers and names has been changed to
protect the innocent. None the cards used to make this list were stolen or acquired illegally. Notice that I
make careful note of 'common data'; data that I noticed was the same for all cards of a particular type.
This is highlighted below the data with asterisks (*). Where I found varying data, I indicate it with "x"'s.
In those cases, NUMBER of CHARACTERS was consistent (the number of "x"'s equals the number of
characters...one to one relationship). I still don't know what some of the data fields are for, but
hopefully I will be following this phile with a sequel after I collect more data. It ISN'T easy to find lots of
cards to examine. Ask your friends, family, and co-workers to help! "Hey, can I, um, like BORROW your
MCI calling card tonite? I'm working on an, um, EXPERIMENT. Please?" Just...be honest! Also, do some
trashing. People will often BEND expired cards in half, then throw them out. Simply bend 'em back into
their normal shape, and they'll usually work (I've done it!). They may be expired, but they're not
ERASED! ------------------------------------------------------------------------------- -=Mastercard=- Number on front
of card -> 1111 2222 3333 4444 Expiration date -> 12/99 Track 2 (BCD,75 bpi)-
> ;1111222233334444=99121010000000000000? *** Track 1 (ALPHA,210 bpi)->
%B1111222233334444^PUBLIC/JOHN? * Note that the "101" was common to all MC cards checked, as
well as the "B". ------------------------------------------------------------------------------- -=VISA=- Number on front of
card -> 1111 2222 3333 4444 Expiration date -> 12/99 Track 2 (BCD,75 bpi)-
> ;1111222233334444=9912101xxxxxxxxxxxxx? *** Track 1 (ALPHA,210 bpi)->
%B1111222233334444^PUBLIC/JOHN^9912101xxxxxxxxxxxxx? * Note that the "101" was common to all
VISA cards checked, as well as the "B". Also, the "xxx" indicates numeric data that varied from card to
card, with no apparent pattern. I believe this is the encrypted pin for use when cardholders get 'cash
advances' from ATMs. In every case, tho, I found *13* digits of the stuff.
------------------------------------------------------------------------------- -=Discover=- Number on front of card ->
1111 2222 3333 4444 Expiration date -> 12/99 Track 2 (BCD,75 bpi)-
> ;1111222233334444=991210100000? ******** Track 1 (ALPHA,210 bpi)->
%B1111222233334444^PUBLIC/JOHN___^991210100000? ******** Note, the "10100000" and "B"
were common to most DISCOVER cards checked. I found a few that had "10110000" instead. Don't know
the significance. Note the underscores after the name JOHN. I found consistently that the name data
field had *26* charaters. Whatever was left of the field after the name was "padded" with SPACES.
Soo...for all of you with names longer than 25 (exclude the "/") charaters, PREPARE to be TRUNCATED! ;)
------------------------------------------------------------------------------- -=US Sprint FON=- Number on front of card -
> 111 222 3333 4444 Track 2 (BCD,75 bpi)-> ;xxxxxx11122233339==xxx4444xxxxxxxxxx=? * Track 1
(ALPHA,210 bpi)-> %B^ /^^xxxxxxxxxxxxxxxxx? * Strange. None of the cards I check had names in the
Track 1 fields. Track 1 looks unused, yet it was always formatted with field separators. The "xxx" stuff
varied from card to card, and I didn't see a pattern. I know it isn't a PIN, so it must be account data.
------------------------------------------------------------------------------- -=Fleet Bank=- Number on front of card ->
111111 222 3333333 Expiration date -> 12/99 Track 2 (BCD,75 bpi)-
> ;1111112223333333=9912120100000000xxxx? **** Track 1 (ALPHA,210 bpi) ->
%B1111112223333333^PUBLIC/JOHN___^9912120100000000000000xxxx000000? * **** Note that the
"xxx" data varied. This is the encrypted PIN offset. Always 4 digits (hrmmm...). The "1201" was always
the same. In fact, I tried many ATM cards from DIFFERENT BANKS...and they all had "1201".
------------------------------------------------------------------------------- (Can't leave *this* one out ;) -=Radio
Shack=- Number on front of card -> 1111 222 333333 NO EXPIRATION data on card Track 2 (BCD,75 dpi)-
> ;1111222333333=9912101? ******* Note that the "9912101" was the SAME for EVERY Radio Shack
card I saw. Looks like when they don't have 'real' data to put in the expiration date field, they have to
stick SOMETHING in there. ------------------------------------------------------------------------------- Well, that's all
I'm going to put out right now. As you can see, the major types of cards (ATMs, CC) all follow the same
rules more or less. I checked out a number of security passcards and timeclock entry cards..and they ALL
had random stuff written to Track 2. Track 2 is by FAR the MOST utilized track on the card. And the
format is pretty much always ANSI/ISO BCD. I *did* run into some hotel room access cards that, when
scanned, were GARBLED. They most likely used a character set other than ASCII (if they were audio
tones, my reader would have put out NOTHING...as opposed to GARBLED data). As you can see, one
could write a BOOK listing different types of card data. I intended only to give you some examples. My
research has been limited, but I tried to make logical conclusions based on the data I received. ** Cards
of All Flavors ** People wanted to store A LOT of data on plastic cards. And they wanted that data to be
'invisible' to cardholders. Here are the different card technologies that were invented and are available
today. HOLLERITH - With this system, holes are punched in a plastic or paper card and read optically.
One of the earliest technologies, it is now seen as an encoded room key in hotels. The technology is not
secure, but cards are cheap to make. BAR CODE - The use of bar codes is limited. They are cheap, but
there is virtually no security and the bar code strip can be easily damaged. INFRARED - Not in
widespread use, cards are factory encoded by creating a "shadow pattern" within the card. The card is
passed thru a swipe or insertion reader that uses an infrared scanner. Infrared card pricing is moderate
to expensive, and encoding is pretty secure. Infrared scanners are optical and therefore vulnerable to
contamination. PROXIMITY - Hands-free operation is the primary selling point of this card. Altho several
different circuit designs are used, all proximity cards permit the transmission of a code simply by
bringing the card near the reader (6-12"). These cards are quite thick, up to 0.15" (the ABA standard is
0.030"!). WIEGAND - Named after its inventor, this technology uses a series of small diameter wires that,
when subjected to a changing magnetic field, induce a discrete voltage output in a sensing coil. Two
rows of wires are embedded in a coded strip. When the wires move past the read head, a series of
pulses is read and interpreted as binary code. This technology prodces card that are VERY hard to copy
or alter, and cards are moderately expensive to make. Readers based on this tech are epoxy filled,
making them immune to weather conditions, and neither card nor readers are affected by external
magnetic fields (don't worry about leaving these cards on top of the television set...you can't hurt
them!). Here's an example of the layout of the wires in a Wiegand strip: ||| || || | ||| | || || | || || |
| || | | | | | | |||| || |||| || The wires are NOT visible from the outside of the card, but if your card is
white, place it in front of a VERY bright light source and peer inside. Notice that the spacings between
the wires is uniform. BARIUM FERRITE - The oldest magnetic encoding technology (been around for 40
yrs!) it uses small bits of magnetized barium ferrite that are placed inside a plastic card. The polarity and
location of the "spots" determines the coding. These cards have a short life cycle, and are used
EXTENSIVELY in parking lots (high turnover rate, minimal security). Barium Ferrite cards are ONLY used
with INSERTION readers. There you have the most commonly used cards. Magstripes are common
because they are CHEAP and relatively secure. ** Magstripe Coercivity ** Magstripes themselves come
in different flavors. The COERCIVITY of the magnetic media must be specified. The coercivity is the
magnetic field strength required to demagnetize an encoded stripe, and therefore determines the
encode head field strength required to encode the stripe. A range of media coerciviteis are available
ranging from 300 Oersteds to 4,000 Oe. That boils down to HIGH-ENERGY magstripes (4,000 Oe) and
LOW-ENERGY magstripes (300 Oe). REMEMBER: since all magstripes have the same magnetic
remanence regardless of their coercivity, readers CANNOT tell the difference between HIGH and LOW
energy stripes. Both are read the same by the same machines. LOW-ENERGY media is most common. It
is used on all financial cards, but its disadvantage is that it is subject to accidental demagnetization from
contact with common magnets (refrigerator, TV magnetic fields, etc.). But these cards are kept safe in
wallets and purses most of the time. HIGH-ENERGY meda is used for ID Badges and access control cards,
which are commonly used in 'hostile' environments (worn on uniform, used in stockrooms). Normal
magnets will not affect these cards, and low-energy encoders cannot write to them. ** Not All that
Fluxes is Digital ** Not all magstripe cards operate on a digital encoding method. SOME cards encode
AUDIO TONES, as opposed to digital data. These cards are usually used with old, outdated, industrial-
strength equipment where security is not an issue and not a great deal of data need be encoded on the
card. Some subway passes are like this. They require only expiration data on the magstripe, and a short
series of varying frequencies and durations are enough. Frequencies will vary with the speed of swiping,
but RELATIVE frequencies will remain the same (for instance, tone 1 is twice the freq. of tone 2, and .5
the freq of tone 3, regardless of the original frequencies!). Grab an oscilliscope to visualize the tones,
and listen to them on your stereo. I haven't experimented with these types of cards at all. ** Security
and Smartcards ** Many security systems utilize magstripe cards, in the form of passcards and ID cards.
It's interesting, but I found in a NUMBER of cases that there was a serious FLAW in the security of the
system. In these cases, there was a code number PRINTED on the card. When scanned, I found this
number encoded on the magstripe. Problem was, the CODE NUMBER was ALL I found on the magstripe!
Meaning, by just looking at the face of the card, I immediately knew exactly what was encoded on it.
Ooops! Makes it pretty damn easy to just glance at Joe's card during lunch, then go home and pop out
my OWN copy of Joe's access card! Fortunately, I found this flaw only in 'smaller' companies (sometimes
even universities). Bigger companies seem to know better, and DON'T print ALL of the magstripe data
right on card in big, easily legible numbers. At least the big companies *I* checked. ;) Other security
blunders include passcard magstripes encoded ONLY with the owner's social security number (yeah, real
difficult to find out a person's SS#...GREAT idea), and having passcards with only 3 or 4 digit codes.
Smartcard technology involves the use of chips embedded in plastic cards, with pinouts that temporarily
contact the card reader equipment. Obviously, a GREAT deal of data could be stored in this way, and
unauthorized duplication would be very difficuly. Interestingly enough, not much effort is being put into
smartcards by the major credit card companies. They feel that the tech is too expensive, and that still
more data can be squeezed onto magstripe cards in the future (especially Track 1). I find this somewhat
analagous to the use of metallic oxide disk media. Sure, it's not the greatest (compared to erasable-
writable optical disks), but it's CHEAP..and we just keep improving it. Magstripes will be around for a
long time to come. The media will be refined, and data density increased. But for conventional
applications, the vast storage capabilities of smartcards are just not needed. ** Biometrics: Throw yer
cards away! ** I'd like to end with a mention of biometrics: the technology based on reading the
physical attributes of an individual thru retina scanning, signature verification, voice verification, and
other means. This was once limited to government use and to supersensitive installations. However,
biometrics will soon acquire a larger market share in access control sales because much of its
development stage has passed and costs will be within reach of more buyers. Eventually, we can expect
biometrics to replace pretty much ALL cards..because all those plastic cards in your wallet are there JUST
to help COMPANIES *identify* YOU. And with biometrics, they'll know you without having to read cards.
I'm not paranoid, nor do I subscribe to any grand 'corporate conspiracy', but I find it a bit unsettling that
our physical attributes will most likely someday be sitting in the cool, vast electronic databases of the
CORPORATE world. Accessable by anyone willing to pay. Imagine CBI and TRW databases with your
retina image, fingerprint, and voice pattern online for instant, convenient retrieval. Today, a person can
CHOOSE NOT to own a credit card or a bank card...we can cut up our plastic ID cards! Without a card, a
card reader is useless and cannot identify you. Paying in cash makes you invisible! However, with
biometrics, all a machine has to do is watch... .listen...and record. With government/corporate America
pushing all the buttons.. "Are you paying in cash?...thank you...please look into the camera. Oh, I see
your name is Mr. Smith...uh, oh...my computer tells me you haven't paid your gas bill....afraid I'm going
to have to keep this money and credit your gas account with it....do you have any more cash?...or would
you rather I garnish your paycheck?" heh heh ** Closing Notes (FINALLY!!!!) ** Whew...this was one
MOTHER of a phile. I hope it was interesting, and I hope you distribute it to all you friends. This phile
was a production of "Restricted Data Transmissions"...a group of techies based in the Boston area that
feel that "Information is Power"...and we intend to release a number of highly technical yet entertaining
philes in the coming year....LOOK FOR THEM!! Tomorrow I'm on my way to Xmascon '91.....we made
some slick buttons commemorating the event...if you ever see one of them (green wreath..XMASCON
1991 printed on it)..hang on to it!...it's a collector's item.. (hahahah) Boy, I'm sleepy... Remember....
"Truth is cheap, but information costs!" But -=RDT is gonna change all that... ;) set the info FREE!
Peace. ..oooOO Count Zero OOooo.. Usual greets to Magic Man, Brian Oblivion, Omega, White Knight,
and anyone else I ever bummed a cigarette off..... (1/18/92 addition: Greets to everyone I met at
Xmascon..incuding but not excluding Crimson Death, Dispater, Sterling, Mackhammer, Erik Bloodaxe,
Holistic Hacker, Pain Hertz, Swamp Ratte, G.A.Ellsworth, Phaedrus, Moebius, Lord MacDuff, Judge
Dredd, and of course hats of to *Drunkfux* for organizing and taking responsibility for the whole damn
thing. Hope to see all of you at Summercon '92! Look for Cyber-stripper GIFs at a BBS near you..heh heh)
Comments, criticisms, and discussions about this phile are welcome. I can be reached at
count0@world.std.com count0@spica.bu.edu count0@atdt.org Magic Man and I are the sysops of the
BBS "ATDT"...located somewhere in Massachusetts. Great message bases, technical discussions...data
made flesh...electronic underground.....our own Internet address (atdt.org)... .field trips to the tunnels
under MIT in Cambridge.....give it a call.. ..mail me for more info.. ;)

Read more at: https://www.epanorama.net/documents/smartcard/magcard.html

You might also like