提问者:小点点

如何处理具有非十六进制字符的 ISO8583 位图


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

这就是问题中的ISO8583位图:< code>P8P1211661684989

这是完整的ISO8583信息。它使用垃圾测试数据,所以不需要担心敏感信息。< code > NP 0100 p8p 12116616849893000000000002004914104019041104009904 shd pf 406 c 431 cashier _ 01 01301001000200491665d 9832 b 92 FD 380 c

据我了解,位图应该只包含 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个答案

匿名用户

似乎有些不对劲。

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