我只是ISO 8583消息传递格式的初学者。
所以,我已经在WIKI和Code Project
上搜索了相关信息据我所知,这是......
这条消息我们可以划分3部分......
1.MTI (Message Type Indicator)
1.1.Version
1.2.Message Class
1.3.Message Function
1.4.Message Origin
2.Bitmap
Indicate which data elements are present.
3.DataElement
整个ISO消息的本质,包含有关交易的信息,例如......
等等。
因此,在阅读这两个Web引用之后,我想将我的ISO消息传递日志划分为MTI,位图和数据元素。
例如。
(0800 2020000000800000 000000 000001 3239313130303031)
MTI: 0800 (1987 version, Network Management Message, Request, Acquirer)
Bitmap: 20 20 00 00 00 80 00 00 (eg. 20 = 0010 0000 ,so position 3 is on)
DataElement:(by seeing Bitmap , we can defined data element as follow)
field 03:000000 (Processing Code)
field 11:000001 (Systems trace audit number)
field 41:3239313130303031 (Card acceptor terminal idenfication)
但我的问题是,我已经从我的ATM机上获得了ISO 8583消息传递日志。 这个实际的输出消息日志不像这个上面的例子那样清晰。 所以我不能将此消息分为MTI,Bitmap和Data元素,如上例。
以下是我的数据示例
00 14 5e 47 2e d8 00 1a d4 0c 32 0f 08 00 45 00
00 7b b2 ec 40 00 80 06 e5 29 ac 11 05 37 ac 11
05 0d 1a 78 1a 78 bf 1c 66 c8 8f 11 b5 a9 50 18
3f b6 c8 f6 00 00 00 51 31 31 1c 30 30 32 1c 1c
1c 31 3b 1c 3b 35 32 36 34 30 32 31 37 30 33 32
36 34 30 32 34 3d 31 34 30 35 32 32 31 31 30 30
答案 0 :(得分:3)
作为样本,您所拥有的只是交易信息的表示,因为它是通过网络传输的。无论应用如何,这实际上都是传输层所有数据传输的方式。
根据您正在使用的终端管理应用程序/交换机(Postilion和Base24是很好的示例),应该在日志中的某处将该十六进制有效负载转换为ASCII文本。
对于您的样本,您应该先convert it to binary然后convert the binary result to ASCII。使用这些步骤,我可以告诉您该样本中的机构标识号(或银行标识号)是 526402 。您发布的代码段包含Track 2数据,其中也包含PAN。由于显而易见的原因,我不会在这里张贴(我甚至不打算对它进行掩蔽)
答案 1 :(得分:2)
@ user3223324我同意@kolossus的许多观点,包括某些个人信息出现在你的追踪中。我只能希望它是一张真正的测试卡。
这看起来像是来自Wireshark的数据包嗅探器跟踪,而不是从终端跟踪。大多数ATM制造商在终端本身上都有一个跟踪机制,可以被激活以捕获终端到主机消息,反之亦然,但在较新的机器上需要升级的权限或现场技术人员拥有的东西,以禁用屏蔽激活。主机系统都具有跟踪功能,至少将其转换为文本,通常还附带十六进制用于比较。我相信Wireshark还内置了一些基本的HEX to Text转换工具。
我看到你可能遇到的另一个问题是你试图解码你认为是ISO-8583的东西,但事实并非如此。我知道那里有ISO-8583自动柜员机,但它们很少,因为我相信大多数仍然运行IFX,NDC,911/912或其他供应商特定格式之一或模拟它们。这些是有效载荷消息要短得多,它们和/或ISO-8583之间几乎没有共性。
在ISO-8583的变体上,有许多变体共享相同的主要,次要和一些三级位图。规范本身允许在许多位图的某些标准内进行大量灵活性和定制和定义,然后即使是标准位图也可以在它们包含的值中具有唯一的差异。
我今天看到的大多数仍然是ISO-8583-87的变体(Deluxe是许多的基线)或主要支持01xx,02xx,04xx和08xx消息的混合。我不会在第一个位置上挂起太多而不是内部应用程序(即Postilion& Base24),它几乎总是0.一些都是文本,一些带有打包位图的BCD,一些带有数字填充的文本位图。
您需要考虑的另一件事是数据元素ByteMaps,现在也是TLV。
这么长的答案,但我们需要知道你要解析的格式,或者至少知道ATM的格式。
答案 2 :(得分:2)
十六进制转储肯定是不是ISO 8583 方言消息。有很多字段分隔符,十六进制代码为0x1C。
示例开头的字节看起来像几层不同的数据包。我不假装正确解密,但它可能是TCP数据包内的IP数据包内的移动IP数据包。
最后,也是最重要的调查部分 - 是 NDC消息的一部分 - 来自NCR的ATM网络消息协议。
00 14 5e 47 2e d8 00 1a d4 0c 32 0f 08 00 45 00
00 7b b2 ec __ __ __ __ __ __ __ __ __ __ __ __
source_port: "0014" # // 20
destination_port: "5E47" # // 24135
sequence: "2ED8001A" # // 785907738
acknowledgment: "D40C320F" # // 3557569039
offset: "00" # [xxxx____]
bits: "00" # Control Bits
window: "4500" # // 17664
crc: "007B"
urgency: "B2EC" # // 45804
__ __ __ __ __ __ 40 00 80 06 e5 29 ac 11 05 37 ac 11
05 0d 1a 78 1a 78 bf 1c __ __ __ __ __ __ __ __ __ __
b1:
version: "4"
IHL: "0" # Internet Header Length (in DWORDs)
type: # Type of Service
precedence: "00"
# 000_____ - Routine
delay: "00"
# ___0____ - Normal Delay
throughput: "00"
# ____0___ - Normal Throughput
relibility: "00"
# _____0__ - Normal Relibility
size: "8006" # // 32774
identifier: "E529"
fragment:
flags: "AC11"
# _0______________ - May Fragment
# __1_____________ - More Fragments
offset: "0C11" # [___xxxxxxxxxxxxx] // 3089
ttl: "05" # // 5
protocol: "37" # // 55 - MOBILE
crc: "AC11"
source_ip: "050D1A78" # // 5.13.26.120
destination_ip: "1A78BF1C" # // 26.120.191.28
__ __ __ __ __ __ __ __ 66 c8 8f 11 b5 a9 50 18
3f b6 c8 f6 __ __ __ __ __ __ __ __ __ __ __ __
protocol: "66" # // 102 - PNNI
code: "C8" # // 200
crc: "8F11"
destination_ip: "B5A95018" # Home address // 181.169.80.24
source_ip: "3FB6C8F6" # Original sender // 63.182.200.246
加上未在NDC消息中标识部分或已标题:
__ __ __ __ 00 00 00 51 __ __ __ __ __ __ __ __
__ __ __ __ __ __ __ __ 31 31 1c 30 30 32 1c 1c
1c 31 3b 1c 3b 35 32 36 34 30 32 31 37 30 33 32
36 34 30 32 34 3d 31 34 30 35 32 32 31 31 30 30
a: "" # Protocol Header // skipped
b: "1" # Message Class
c: "1" # Message Sub-Class
FS: 0x1c
d: "002" # Logical Unit Number (LUNO)
FS: 0x1c
FS: 0x1c
e: // empty ?
FS: 0x1c
f: "1" # Top of Receipt Transaction Flag
g: ";" # Message Co-Ordination Number // 0x3b
FS: 0x1c
h: ";526402******4024=1405221100" # Track 2 Data // masked and expired
下一个网络数据包/片段中NDC消息的其余部分。
答案 3 :(得分:1)
将十六进制转储反转为消息可能非常容易出错。 ISO8583协议的实现因其携带的数据和各个字段的格式而异。字段数据可以是BCD,ASCII等,它可以是固定数据或可变数据,其在数据之前具有长度指示符以启用解析。
如果我仔细查看你的消息,我会看到很多0x1C。这些通常是字段分隔符,它让我相信消息是atms规范中的原始atm消息,而不是传统的ISO8583消息。