# Reverse Engineering a Proprietary Bar Code

I'm trying to figure out how to decipher the data stored in a proprietary barcode. I looked through just about every barcode type and cant seem to match it, so I'm assuming this is some special format made by this company.

I noticed most of the barcode is identical except a small part (marked in red), which would make sense if this code represents the numbers listed above each one but I still cant seem to figure it out.

• Where did you find them? Feb 17, 2021 at 22:58
• And what data did you obscure on the barcode? To the right of the hole Feb 18, 2021 at 5:24
• These are tickets to an automated parking system. The data I obscured is the name of the company that makes the machines. Feb 19, 2021 at 0:59

This looks like Code 39 (Wikipedia link) with an alternate character mapping.

Each character in these barcodes corresponds to a character in Code 39, however the barcode seems to use a different start and stop delimiter, and while each character follows the pattern of the numbers above it, they do not match Code 39's counterpart.

The barcodes, top to bottom, left to right, read in Code 39 as follows:

• 12TT4661
• 12TT4681
• 12TT4601
• 12TT46L1

Edit:

As pythonpython suggested, each character skips a position in the Code 39 encoding table, so 7 could be N, 8 could be P, and 9 could be R. Mapping out these new characters on Code 39's encoding table seems to support this theory:

Spaces
|| ||| ||| || |||| | | ||||
Bars Code 39 Proprietary Code 39 Proprietary Code 39 Proprietary Code 39 Proprietary
▮|||▮ 1 * A N/A K N/A U N/A
|▮||▮ 2 1 B N/A L 6 V N/A
▮▮||| 3 N/A C N/A M N/A W N/A
||▮|▮ 4 2 D N/A N 7 X N/A
▮|▮|| 5 N/A E N/A O N/A Y N/A
|▮▮|| 6 3 F N/A P 8 Z N/A
|||▮▮ 7 N/A G N/A Q N/A - N/A
▮||▮| 8 4 H N/A R 9 . N/A
|▮|▮| 9 N/A I N/A S N/A N/A
||▮▮| 0 5 J N/A T 0 * N/A

Unfortuantely, most barcode generators will add Code 39's * character at the beginning and end, and the inter-character spacing is narrower for Code 39, so creating your own barcode is not as easy as typing 12TT4661 in an online generator.

If you're using 1 as a start / stop character, you can't use it as a value.

``````100 233 --> 2TT 466
100 234 --> 2TT 468
100 235 --> 2TT 460
100 236 --> 2TT 46L
``````

Looks like digits skip two position.

``````0 --> T
1 --> 2
2 --> 4
3 --> 6
4 --> 8
5 --> 0
6 --> L
``````

I'd be curious if the next barcode in the sequence has the character N for 7.