Examples of parsing - Vendi, Neo



Here is an example pulled from an unencrypted reader with the use of the “03 - 00” command:

56 69 56 4F 74 65 63 68 32 00 03 00 00 76 39 42 36 32 37 39 32 35 37 37 34 39 31 33 32 33 34 33 5E 54 45 53 54 20 43 41 52 44 2F 56 49 56 4F 54 45 43 48 5E 31 30 31 32 38 31 33 30 30 37 32 31 30 34 33 35 30 30 30 30 25 36 32 37 39 32 35 37 37 34 39 31 33 32 33 34 33 3D 31 30 31 32 38 31 33 30 30 37 32 31 30 34 33 35 30 30 30 30 00 9F 35 01 22 9F 39 01 07 FF EE 01 04 DF 30 01 00 DF EE 26 01 41 6A 44

This is the unencrypted MSD:

36 32 37 39 32 35 37 37 34 39 31 33 32 33 34 33 5E 54 45 53 54 20 43 41 52 44 2F 56 49 56 4F 54 45 43 48 5E 31 30 31 32 38 31 33 30 30 37 32 31 30 34 33 35 30 30 30 30 25 36 32 37 39 32 35 37 37 34 39 31 33 32 33 34 33 3D 31 30 31 32 38 31 33 30 30 37 32 31 30 34 33 35 30 30 30 30 00 

Which translates from HEX-> ASCII to be:

6279257749132343^TEST CARD/VIVOTECH^10128130072104350000%6279257749132343=10128130072104350000.



To parse this out:

56 69 56 4F 74 65 63 68 32 00  // Header

03 // Command

00 // Command Status Code

00 76 // Total Length, 76 is the least significant byte, we can expect 76 → 118 hex nibbles)

39 // Length of Track 1 (39 hex → 57 decimal characters)

42 // Start sentinel  ('B')

36 32 37 39 32 35 37 37 34 39

31 33 32 33 34 33 5E 54 45 53

54 20 43 41 52 44 2F 56 49 56

4F 54 45 43 48 5E 31 30 31 32

38 31 33 30 30 37 32 31 30 34

33 35 30 30 30 30 // Track 1 data



25 // Length of Track 2 (25 hex → 37 decimal characters)



36 32 37 39 32 35 37 37 34 39

31 33 32 33 34 33 3D 31 30 31

32 38 31 33 30 30 37 32 31 30

34 33 35 30 30 30 30 // Track 2 data



00 // End sentinel of track data ('.')



9F 35 01 22 // Value for 9F35 indicates the terminal type is 22. 

9F 39 01 07 // Value for 9F 39 indicates that this was a tap. 07 = tap, 90 indicates a swipe. 

FF EE 01 04 // Proprietary tag

DF 30 01 00 // Proprietary tag

DF EE 26 01 41 // Encryption status (no encryption)

6A 44 // Calculated CRC



This is also documented in the NEO IDG. Look for section 16.0 (Sample Scenarios and Frame Flow) for the 'Contactless MagStripe Transactions in Auto Poll Mode', example #4 for an overview of how this works.