ID TECH iMag is a snap-on magnetic stripe reader designed to work with iPhone and
iPod Touch. iMag Pro works with all Apple mobile devices including the iPad. The
reader delivers superior reading performance with the ability to encrypt sensitive card
data. The data encryption process prevents card holder information from being accessed
when the data is stored or in transit, so the data remains secure from end to end. The
reader fully supports TDES and AES data encryption using DUKPT key management
method.
2 Features and Benefits
Small form factor for comfort and mobility
No external power supply required
Mini USB port enables Apple devices to be charged through an external
cable
Bi-directional card reading
Reads encoded data that meets ANSI/ISO/AAMVA standards and some
custom formats such as ISO track 1 format on track 2 or 3
Reads up to three tracks of card data
Provides clear text confirmation data including card holder’s name and a
portion of the PAN as part of the Masked Track Data
3 Specifications
Communication Interface: UART
Power Consumption: 5 mA during card swipe, 3 mA when idle
Magnetic Stripe Reader: 3 track bi-directional reading capabilities
Operating Life: 100,000 cycle minimum
Operating Environment: 0 °C to 55 °C (32 °F to 131 °F) non-condensing
Storage Environment: -30 °C to 70 °C (-22 °F to 158 °F) non-condensing
Dimensions: iMag: 95 mm (L) x 30 mm (H) x 71 mm (W)
iMag Pro: 59mm (L) x 14 mm (H) x 32 mm (W)
iMag ProII: 59.2mm(L) x 13.1mm(H) x 32.6mm(W)
Response
<ACK> for successful settings
or <NAK> for wrong commands such as invalid funcID, length and value
Each function-setting block <FuncSETBLOCK> has following format:
<FuncID><Len><FuncData>
Where:
<FuncID> is the one byte ID identifying the function being set
<Len> is a one byte length count for the function-setting block <FuncData>.
<FuncData> is the current setting for this function. It has the same format as in
the sending command for this function.
Example:
Set DUKPT key management
CMD: \02\53\58\01\31\03\3A
OUT: 06
4.2 Get Firmware Version
Sending Get Firmware Version command returns the firmware version back to
the application.
Command
<STX><R><FmVerID><ETX><LRC 1>
Response
<ACK> <STX><Version String><ETX><LRC 2>
Version String will be in format of “ID TECH iMag Swipe Reader x.y.z” x.y.z
is the major and minor version number.
Start Sentinel 2 = ;Start Sentinel 3 = ; for ISO, % for AAMVA
End Sentinel all tracks = ?
Start or End Sentinel: Characters in encoding format which come before the first
data character (start) and after the last data character (end), indicating the
beginning and end, respectively, of data.
Track Separator: A designated character which separates data tracks. The default
character is NULL.
Terminator: A designated character which comes at the end of the last track of
data, to separate card reads. The default character is CR (Carriage Return).
0 STX
1 Data Length low byte
2 Data Length high byte
3 Card Encode Type1
4 Track 1-3 Status2
5 T1 data length
6 T2 data length
7 T3 data length
8 Clear/mask data sent status3
9 Encrypted/Hash data sent status 4
10 T1 clear/mask data
T2 clear/mask data
T3 clear/mask data
T1 encrypted data
T2 encrypted data
T3 encrypted data
Session ID (8 bytes) (Security level 4 only, not used here)
T1 hashed (20 bytes each) (if encrypted and hash tk1 allowed)
T2 hashed (20 bytes each) (if encrypted and hash tk2 allowed)
T3 hashed (20 bytes each) (if encrypted and hash tk3 allowed)
KSN (10 bytes)
CheckLRC
CheckSum
ETX
Where <STX> = 02h, <ETX> = 03h
Note 1 : Card Encode Type
Card Type will be 8x for enhanced encryption format and 0x for original
encryption format
Value Encode Type Description
00h / 80h ISO/ABA format
01h / 81h AAMVA format
For Type 04 or 84 Raw data format, all tracks are encrypted and no mask
data is sent. No track indicator ‘01’, ‘02’ or ‘03’ in front of each track.
Track indicator ‘01’,’02’ and ‘03’ will still exist for non-encrypted mode.
Note 2: Track 1-3 status byte
Field 4:
Bit 0: 1— track 1 decoded data present
Bit 1: 1— track 2 decoded data present
Bit 2: 1— track 3 decoded data present
Bit 3: 1— track 1 sampling data present
Bit 4: 1— track 2 sampling data present
Bit 5: 1— track 3 sampling data present
Bit 6, 7 — Reserved for future use
Decoded bit: 1 for decode success or no sampling data; 0 for decode error
(with sampled data but failed to decode)
Sampling bit: 1 for sample data exist; 0 for sample data does not exist
Note 3: Clear/mask data sent status
Field 8 (Clear/mask data sent status) and field 9 (Encrypted/Hash data sent
status) will be sent out in enhanced encryption format, which is the default
iMag/ iMag Pro output format.
Field 8: Clear/masked data sent status byte:
Bit 0: 1 —track 1 clear/mask data present
Bit 1: 1— track 2 clear/mask data present
Bit 2: 1— track 3 clear/mask data present
Bit 3: 0— reserved for future use
Bit 4: 0— reserved for future use
Bit 5: 0— reserved for future use
Note 4: Encrypted/Hash data sent status
Field 9: Encrypted data sent status
Bit 0: 1— track 1 encrypted data present
Bit 1: 1— track 2 encrypted data present
Bit 2: 1— track 3 encrypted data present
Bit 3: 1— track 1 hash data present
Bit 4: 1— track 2 hash data present
01—high byte of total length
80—card type byte (interpretation new format ABA card)
3F—3 tracks of data all good
48—length of track 1
23—length of track 2
6B—length of track 3
03—tracks 1 and 2 have masked/clear data
BF—bit 7=1—KSN included
Bit 6=0—no Session ID included so not level 4 encryption
Bit 5=1—track 3 hash data present
Bit 4=1—track 2 hash data present
Bit 3-1—track 1 hash data present
Bit 2=1—track 3 encrypted data present
Bit 1=1—track 2 encrypted data present
Bit 0=1—track 1 encrypted data present
Track 1 data masked (length 0x48)
252A343236362A2A2A2A2A2A2A2A393939395E42555348204A522F47454F5247452
0572E4D525E2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2
A2A2A2A2A2A2A3F2A
Track 1 masked data in ASCII
%*4266********9999^BUSH JR/GEORGE
W.MR^*******************************?*
Track 2 data in hex masked (length 0x23)
3B343236362A2A2A2A2A2A2A2A393939393D2A2A2A2A2A2A2A2A2A2A2A2A2
A2A2A3F2A
Track2 masked data in ASCII
;4266********9999=***************?*
In this example there is no Track 3 data either clear or masked (encrypted and hashed
data is below)
Track 1 encrypted length 0x48 rounded up to 8 bytes = 0x48 (72 decimal)
DA7F2A52BD3F6DD8B96C50FC39C7E6AF22F06ED1F033BE0FB23D6BD33DC5A1
F8
08512F7AE18D47A60CC3F4559B1B093563BE7E07459072ABF8FAAB5338C6CC88
15FF87797AE3A7BE
Track 2 encrypted length 0x32 rounded up to 8 bytes =0x38 (56 decimal)
AB3B10A3FBC230FBFB941FAC9E82649981AE79F2632156E775A06AEDAFAF6F0
A
Track 2 decrypted data in hex including padding zeros
3B343236363834313038383838393939393D3038303931303131303030303034363F300
000000000
Track 3 decrypted data in hex including padding zeros
3B333333333333333333333736373637363037303730373736373637363333333333333
333333337363736373630373037303737363736373633333333333333333333373637363
73630373037303737363736373633333333333333333333373637363736303730373F32
0000000000