对专有条码进行逆向工程

逆向工程 未知数据
2021-06-15 10:52:39

我试图弄清楚如何破译存储在专有条形码中的数据。我浏览了几乎所有的条形码类型,但似乎无法匹配,所以我假设这是该公司制造的某种特殊格式。

我注意到除了一小部分(用红色标记)外,大多数条形码都是相同的,如果此代码代表每个上面列出的数字,这将是有意义的,但我似乎仍然无法弄清楚。

在此处输入图片说明

2个回答

这看起来像带有备用字符映射的Code 39(维基百科链接)。

这些条码中的每个字符都对应于 Code 39 中的一个字符,但是条码似乎使用了不同的开始和停止分隔符,虽然每个字符都遵循其上方数字的模式,但它们与 Code 39 的对应物不匹配。

条码,从上到下,从左到右,读取 Code 39 如下:

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

编辑:

正如 pythonpython 所建议的,每个字符在 Code 39 编码表中跳过一个位置,因此 7 可能是 N,8 可能是 P,9 可能是 R。在 Code 39 的编码表上映射出这些新字符似乎支持这个理论:

空间
|| ||| ||| || |||| | | ||||
酒吧 代码 39 所有权 代码 39 所有权 代码 39 所有权 代码 39 所有权
▮|||▮ 1 * 一个 不适用 不适用 不适用
|▮|||▮ 2 1 不适用 6 不适用
▮▮||| 3 不适用 C 不适用 不适用 不适用
||▮|▮ 4 2 D 不适用 N 7 X 不适用
▮|▮|| 5 不适用 不适用 不适用 不适用
|▮▮|| 6 3 F 不适用 8 Z 不适用
|||▮▮ 7 不适用 G 不适用 不适用 —— 不适用
▮||▮| 8 4 H 不适用 电阻 9 . 不适用
|▮|▮| 9 不适用 一世 不适用 不适用 不适用
||▮▮| 0 5 J 不适用 0 * 不适用

不幸的是,大多数条码生成器会在开头和结尾添加 Code 39 的 * 字符,而 Code 39 的字符间距更窄,因此创建自己的条码并不像在在线生成器中输入 12TT4661 那样容易。

如果您使用 1 作为开始/停止字符,则不能将其用作值。

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

看起来数字跳过两个位置。

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

我很好奇序列中的下一个条形码是否有代表 7 的字符 N。