I am developing an Android application for work which runs on a Zebra TC51 bar code scanner, which I have been playing around with.. I scanned my NYS drivers license and inspected the output this morning (sanitized output is below). The output contains 20 lines of data and 1 line of meta data. The standardization body is AAMVA and ANSI. I am curious about two lines (labeled ANSI and ZNB).
I scanned my license and the ANSI labeled line had an associated value string similar to
636001010102DL00910228ZN02790040DLDCADJ (this is sanitized, more explained below) and when I googled it it returned a sketchy Pastebin result with NYS Drivers License data dump, but none of the other information matched (name, dob, etc). So I scanned 10 more NYS ID cards (friends and family) and googled the results. No hits on Google for them.
I am trying to figure out two things
- How is the ANSI value string is (ex:
636001010102DL00910228ZN02790040DLDCADJ) created, what is it used for, and what does it communicate. I especifically want to figure out if this value string is meant to be unique.
- How is the ZNB value string created, what is it used for (it looks like some type of hash/signature), what does it communicate.
Research I have done
I have done a cursory investigation and read the following material.
- AAMVA DL/ID Card Design Standard
- Truculence Swipe
- NYS Changes to the New York State Driver Licenses and Non-Driver Identification Cards
- Oracle DocuMaker PDF417
- Random YCombinator post
- Random GitHub discussion for Android Vision
I know that the "bar code" is a PDF417 data matrix. I know (and have labeled) most of the key/value pairs.
ZNB looks like a hash or signature (it reminds me of how you need to sign AWS SQS rest calls. I have ran all the data prior to ZNB through the following hashes just to see if anything came out that looked right but no hits (I'm not even sure if it is a hash).
Unfortunately I cannot find any information about these ANSI and ZNB values. Every other key/value pair is clearly defined in AAMVA DL/ID Card Design Standard except those two.
I sanitized the ANSI valur by swapping numeric characters for other numeric characters but did not change the cardinality of the value string or any of the the alpha characters (the GitHub source said the index of the first DL was important). I left the first 6 digits because another source state that was a significant value as well.
I sanitized ZNB by swapping alpha and numeric characters with other alpha and numeric characters. I did not modify the capitalization of any alpha character in case it is significant. I did not modify either the cardinality of the string or the special characters.
@ ANSI 636001010102DL00910228ZN02790040DLDCADJ (???) DCB (????) DCD (organ donor?) DBA (date of birth) DCS (Last name) DCT (first name, possibly with middle initial) DBD (date issued DBB (date expired) DBC (0 or 1 for male for female) DAY (eye color abbreviated) DAU (height in footinches) DAG (address line) DAI (city) DAJ (state) DAK (zip) DAQ (license number) DCF (document number) DCG (country) ZNZNA(last name)@(first name)@(middle initial) ZNB Eg3*#c+W^xmj(Ws8@B?]plW_Db;uk&y*V/d9"1=qG
- Sample size of 10
- All New York State identification cards
- Formatting was nearly identical for all
- New Line / Carriage return was encoded (it actually scanned as shown above)
- Date of Birth of sample participants range from 1951 to 2000
- The sample include a least one of the following identification types
- A 2013 model non drivers ID card
- A 2013 EDL ID card
- A 2013 Standard (not enhanced) drivers ID card(enhanced)
- A 2008 Standard drivers ID card
Whats weird is I scanned probably 10 licenses and googled the ANSI string value. Nothing came up for any of them except for mine. Any help or assistance on this would be greatly appreciated