如何使用非十六进制字符处理ISO8583位图

时间:2019-04-17 17:13:38

标签: python-3.x bitmap iso8583

我正在尝试使用py8583包在Python 3中正确解析ISO8583(1987)消息。在解析器遇到一些问题之后,我意识到ISO8583消息中的位图似乎格式不正确。

这是有问题的ISO8583位图: P8P1211661684989

这是整个ISO8583消息。它使用的是垃圾测试数据,因此无需担心敏感信息。 NP0100P8P1211661684989300000000000002004914104019041104009904SHDPf406c431Cashier_01 01301001000200491665D9832B92FD380C

据我了解,位图应仅包含1-9 / A-F十六进制字符,但是正如您所看到的,它以“ P8P12 ...”开头。

我这里缺少什么吗?这些ISO8583消息当前在企业级公司中使用。另外,尽管一些在线解析器抛出了位图错误,但我发现似乎可以对其进行解析(下面的链接)。我不知道它是如何进行解析的。

http://www.fintrnmsgtool.com/decode-iso87-bitmap.html (编辑:glhr正确地指出,此站点不允许您键入非十六进制字符,只能复制/粘贴它们,因此它可能与该问题不再相关。)

下面的十六进制转储:

0010   08 00 45 00 00 ab 03 b1 00 00 3c 06 fa 89 c0 a8
0020   15 02 40 87 69 e1 81 1c 0b bb b7 b9 78 55 c7 86
0030   4a 2c 50 18 12 24 2f d3 00 00 4e 50 00 00 00 7d
0040   30 31 30 30 50 38 00 01 80 c0 00 50 31 32 31 31
0050   36 36 31 36 38 34 39 38 39 33 30 30 30 30 30 30
0060   30 30 30 30 30 30 30 32 30 30 34 38 31 34 30 39
0070   35 39 31 39 30 34 31 31 30 34 30 30 39 39 30 34
0080   53 48 44 50 66 34 30 36 63 34 33 31 43 61 73 68
0090   69 65 72 5f 30 31 20 20 20 20 20 30 31 33 30 31
00a0   30 30 31 30 30 30 32 30 30 34 38 31 36 36 35 44
00b0   39 38 33 32 42 39 32 46 44 33 38 30 43

ISO8583专家的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

似乎有些不对。

从十六进制转储中看起来像某种0800网络消息。这将使位图从0x45开始。这将是0100 0101的二进制位图,指示存在位2、6和8。 ISO 8583的位2始终是PAN(卡号),因此没有太大意义。在网络消息的上下文中,Bit的6和8似乎没有意义,因为前者是持卡人的账单金额,而后者是持卡人的账单费用。