http://blog.csdn.net/pony_maggie/article/details/6568192
不要以为我这篇文章是告诉你什么是8583,告诉你map的原理,然后分析各个域是什么意思,格式如何, 再有详细一点的甚至告诉你如何写程序等等. 不是, 之所以不写上面这些,基于两点:
1 太多的人写这些了, 网上一搜8583,出来的文章都是关于这些的.
2 作用不大, 因为这些规范上都有, 大家一看规范就明白了, 我写了也是无用.
我篇文章适合两类人看:
1 对8583报文非常熟悉,属于这一领域的资深工程师, 为什么这一类人要看呢, 因为他们看了,可以给我提一些意见和建议.
2 看了很多遍规范,但是还有一些细节不是很明白.
好,我要开始了.
8583报文大部分情况下用在POS终端与后台收单系统的数据交换, 一般情况下(请注意这里的用词)一段完整的报文由以下几个部分组成
图1
不同的应用领域, 上面几个部分大长度和格式上有一些差别, 有一些应用甚至前面的"长度"部分.所以如果等一下你看到下面一些数据的长度或格式跟你的不一样,不要惊讶.
先说说"长度"部分, 一般两个字节, 表示报文的总长度(即"报文头"+"数据"部分的长度), 在两个字节在报文里的表示方法因系统与终端的协议不同而不同. 一般有两种:
1 BCD方法, 比如报文的总长度是134字节, 那么在实际的报文中, 这两个字节为"01h,34h"(注意16进制)
2 实际的计算的长度, 比如还是134长度的字节, 实际的报文中,两个字节为"00h, 86h"(注意也是16进制,00h*256+86h = 134d).
然后说说"报文头", 这一部分不同的系统应用差别也不小, 但一般这部分中会包含TPDU, 这个TPDU决定了终端与系统之间的网络协议. TPDU是一个10位的数字, 实际传输的报文, 有些用ASCII表示这10位数字, 有些用BCD表示, 举个例子:
TPDU是"6000120000",
如果用ASCII表示, 报文中的字节是"36h,30h,30h,30h,31h,32h,30h,30h,30h,30h"(10个字节).
如果用BCD表示, 报文中的字节如下:"60h,00h,12h,00h,00h"(5个字节).
重头戏来了, "数据"部分.
这一部分就是8583了, 我上面说了,我这篇文章只写别人没写过的东西,
so.....,
直接上例子.一段8583报文.
"02 00 70 20 00 00 20 C0 82 00 19 06 20 51 32 00 00 00 02 61 20 60 00 00 00 00 00 02 00 00 00 00 73 37 06 20 51 32 00 00 00 02 61 20 d1 91 12 01 00 00 00 00 00 30 30 30 30 31 31 31 31 31 30 32 32 35 30 31 35 33 31 31 31 31
31 31 01 56 00 44 9f 26 08 92 b6 ae 9a 9b 10 2e d6 9f 27 01 80 9f 10 13 07 01 01 03 a0 a0 10 01 0a 01 00 00 00 10 37 51 3a 22 be"
这是一串实际传输的报文, 上面显示的是这些数据的16进制. 你准备好了吗, 我要开始分析了.
<02 00>
这个是信息类型(MTI), 是一个四位的数字, 这里为"0200", 传输时用BCD表示即为"02h,00h"(如果用ASCII呢?看看上面的内容). 这个四位数字,每一位都有它的意义,
第一位:8583 version number
第二位:message class
第三位:message sub-class
第四位:transaction originator
就不翻译了,毕竟本来就是老外的东西, 自己理解吧.
<70 20 00 00 20 C0 82 00>
bit map域, 指示哪些域存在, 容易计算出, 下面几个域存在:2, 3, 4, 11, 35, 41, 42, 49, 55.
<19 06 20 51 32 00 00 00 02 61 20>
field 2, 账号, n..19, LLVAR, 一字节表示长度(19), 账号是19位, 前面补0后, 用10字节BCD表示.
<60 00 00>
field 3, 处理码, n6, 定长, 用3字节BCD表示
<00 00 00 02 00 00>
field 4, 交易金额, n12, 定长, 用6字节BCD表示, 这里的金额是200.00元
<00 00 73>
field 11, 流水号, n6, 定长, 用3字节BCD表示.流水号为"000073".
<37 06 20 51 32 00 00 00 02 61 20 d1 91 12 01 00 00 00 00 00>
field 35, 二磁道数据, z..35, LLVAR, 一字节表示长度(37), 后面是19字节BCD表示的磁道数据
<30 30 30 30 31 31 31 31>
field 41, 终端号, ans8, 定长, ASCII表示, 这里终端号为"00001111"
<31 30 32 32 35 30 31 35 33 31 31 31 31 31 31>
field 42, 商户号, ans15, 定长, ASCII表示, 这里商户号为"102250153111111"
<01 56>
field 49, 货币代码, n3, 定长, 前面补0后,用两字节BCD表示, 这里货币代码为"156"
<00 44 9f 26 08 92 b6 ae 9a 9b 10 2e d6 9f 27
01 80 9f 10 13 07 01 01 03 a0 a0 10 01 0a 01
00 00 00 10 37 51 3a 22 be>
field 55, 这是IC卡交易的相关数据, 最大长度是255, 这一域用的IC卡数据一般在PBOC/EMV规范里
都有自己的定义(包括格式), 所以,一般在报文里的格式跟它们在PBOC/EMV里定义的一致.一般是TLV(tag+lenght+value)表示一个数据.简单介绍一下数据的意义.
"00 44":长度, 表示44个字节
"9f 26 08 92 b6 ae 9a 9b 10 2e d6":应用密文(application cryptogram), TLV, b8
"9f 27 01 80":密文信息数据(cryptogram information data), TLV, b1
"9f 10 13 07 01 01 03 a0 a0 10 01 0a 01 00 00 00 10 37 51 3a 22 be":
发卡行应用数据(issuer application data), TLV, 变长,最大32字节. b..32.
分享到:
相关推荐
6. **C语言实现**:在提供的代码片段中,可以看到一个简单的C语言实现,用于解析ISO8583报文。`master`数组包含了每个域的定义,如字段名称、最大长度、是否必填等信息。 7. **编码规则**:BCD编码是一种将十进制...
SNMP(Simple Network Management Protocol)简单网络管理协议,是一种广泛应用于网络设备管理的标准协议,它允许网络管理员远程监控和管理网络设备。SNMP报文是SNMP协议中的基本通信单元,包含了管理信息的请求和...
- **熟悉IRIS的特点**:简单易用,轻量级的设计使得捕获网络报文变得更为便捷。 - **分析明文内容**:解读报文中的明文信息,进一步理解网络通信的实际内容。 #### 实验四:网络报文捕获 ##### 实验目的: 1. *...
无线报文的简单分析 本文档对无线关联过程中的报文进行了简单的分析,了解了无线关联过程中的一些相关报文分析。802.11 帧分为三个部分:帧头(Mac header)、帧实体(body)和 FCS 域。MAC header 由 4 个字段构成...
【标题】:“16进制报文分析器 Qt 源码”是一个基于Qt框架的C++编程项目,专门设计用于解析和分析十六进制数据流。Qt是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面和其他软件。 【描述】:这个小工具...
计算机网络实践指南 - 网络报文抓取与分析实验报告 本实验报告详细介绍了计算机网络实验的指南,涵盖了网络报文抓取与分析的实验目的、实验环境、实验步骤和实验结果。 实验目的 1. 学习了解网络侦听 2. 学习抓包...
**CIP 报文与工控协议分析** CIP(Common Industrial Protocol)是EtherNet/IP协议的基础,由Rockwell Automation开发,广泛应用于工业自动化领域。它是一种应用层协议,旨在提供一套通用的方法来控制和通信各种...
网络报文的分析,简单使用网络分析工具(如WireShark(Ethereal)、Sniffer、科来等)抓取网络报文。 对抓取的网络报文进行分析,加深对网络数据分层封装理论的理解。
### SNMP报文格式分析及实现 #### 一、引言 简单网络管理协议(Simple Network Management Protocol, SNMP)是当前广泛应用于计算机网络管理的一种协议。众多网络管理软件都是基于SNMP技术开发的。理解SNMP报文的...
在实际应用中,我们可以编写一个简单的C/C++程序,利用这些API来实现报文捕获。以下是一个基本的步骤: 1. **初始化wpcap**:使用`pcap_open_live()`函数打开网络接口,指定设备名称、缓冲区大小、读取超时时间等...
在本实验中,学生们使用了网络协议分析软件Wireshark来捕获并分析了FTP(文件传输协议)和SMTP(简单邮件传输协议)的相关报文。这两个协议是互联网上用于文件传输和邮件传输的重要协议。在理解实验内容前,我们需要...
无论是简单的ASCII串行通信还是复杂的规约如MODBUS、CAN总线、IEC 60870-5-104等,PMA都能够精确地解析并显示每条报文的结构和内容。这包括但不限于起始标识符、地址、功能码、数据域和校验码等关键元素,帮助用户...
本次实验的主题是进行Internet协议分析,具体涉及两个重要的协议:简单网络管理协议(SNMP)和远程登录协议(Telnet)。实验的目的是通过实际抓取和分析这两种协议的报文来加深对它们工作原理的理解和掌握。 首先,...
本文将探讨Ethereal的报文分析,特别是其文件头格式。 Ethereal的文件头包含了关键信息,用于识别和解析网络报文。首先,文件头中有40个字节的未知内容,接着是第一个报文的以太网地址。每个报文结束后会有16个字节...
**IPS报文简单介绍** IPS(Intrusion Prevention System,入侵防御系统)是一种网络安全设备,它的主要任务是对网络流量进行实时监测,识别出潜在的攻击行为,并采取阻止、报警等措施,以保护网络免受恶意攻击。IPS...
根据提供的信息,我们可以提炼出与“Iptool报文分析工具”相关的知识点,但由于提供的内容主要围绕一本书《太傻十日谈》而非Iptool工具,因此以下内容将侧重于解释Iptool工具的相关知识点。 ### Iptool报文分析工具...
在Windows操作系统中,进行网络报文回放和抓包是网络诊断、性能测试以及安全分析的重要环节。这里我们将深入探讨两个关键工具:报文回放工具和抓包工具,并以"xcap"这个文件为例来讲解它们的工作原理和使用方法。 ...
现在我们来详细探讨这些协议以及相关的报文分析工具。 **IEC 101** IEC 101,也称为“基本远动规程”,是最早的用于远程数据采集的通信协议之一。它定义了数据链路层和应用层的规范,支持串行通信,包括ASCII和二...