8583协议实例分析

ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。 8583包前面一段为位图,用来确定包的字段域组成情况。其中位图是8583包的灵魂,它是打包解包确定字段域的关键,而了解每个字段域的属性则是填写数据的基础。

位图描述如下:

位图位置:1

格式:定长

类型:B16(二进制16位,16*8=128bit)

描述:如将位图的第一位设为‘1‘,表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。如使用某数据域,应在位图中将相应的位设位‘1‘,如使用41域,需将位图的41位设为‘1‘。

从第二域开始则为数据包的数据域,数据域不一定是每一个域都有值,数据域是否有值是由位图域来决定的。以银联的消费交易为例,下面来解析一段报文:60001300006022000000000200302004C030C198011900000000000049251631180210001237622848299836XXXXXXXD23122209656980000F010499622848299836XXXXXXXD156156000000000000000000000021414142312DD000000000000D000000000000D0023813000000003635393030333139383938363539303438313430303033010350414333313330303030303030303020202020202020202031313030303031333030303030303030302020202020202020203130313030383035343031303631343130323731363331313832353133353935202020202020202020202020202020202020202023313536FD7FCC695E6083DC2000000000000000333A84758CBA943C

解析后的结果为:

TPDU= 【6000130000】

MSGHEAD= 【602200000000】

报文类型 = 【0200】

F000.位图 =【016】【302004C030C19801】

F003.交易处理码 =【006】【190000】

F004.交易金额 =【012】【000000004925】

F011.系统跟踪号 =【006】【163118】

F022.服务点输入方式码 =【003】【021】

F025.服务点条件码 =【002】【00】

F026.服务点PIN获取码 =【002】【12】

F035.第二磁道数据 =【037】【622848299836XXXXXXXD23122209656980000】

F036.第三磁道数据     =【104】【99622848299836XXXXXXXD156156000000000000000000000021414142312DD000000000000D000000000000D002381300000000】

F041.受卡机终端标识码 =【008】【65900319】

F042.受卡方标识码 =【015】【898659048140003】

F048.附加数据-私有 =【103】【PAC313000000000         11000013000000000        
10100805401061410271631182513595                    #】

F049.交易货币代码 =【003】【156】

F052.个人标识码数据 =【016】【FD7FCC695E6083DC】

F053.安全控制信息  =【016】【2000000000000000】

F064.MAC = 【008】【333A84758CBA943C】

具体的解析步骤如下:TPDU为固定5个字节的长度,MSGHEAD为固定6个字节长度,接下来的两个字节为消息类型,0200代表消费请求交易。接下来的8个字节代表位图域,位图域的最高字节为0则代表该报文只用的了8583协议的前64个域,解析完8个字节的位图域302004C030C19801则能分析出3,4,11,22,25,26,35,36,41,42,48,49,52,53,64域是有值的。

第3域解析:第三域为属性为数字类型长度为6且组包类型为BCD压缩方式,故可以直接数6位即可,这样就解析出第三域的内容为190000;

第4域解析:第4域和第三域一样,唯一不同的是长度为12,故数12位,解析出来的内容为000000004925,注意此处的单位为分。

第11域解析:第11域与第3域完全一样,故数6位即可,解析出来的内容为163118。

第22域解析:第22域属性为数字,长度为3,组包类型为BCD压缩方式,注意此处因为是BCD压缩的方式,故不能直接数3位了,此处要数4位,且去掉最后一位补的0,故解析出来的结果为021

第25域解析:第25域和第三域一样,唯一不同的是长度为2,故数两位即可,解析出来的结果为00

第26域解析:第26域和第25域完全一样,故数两位即可,解析出来的结果为12

第35域解析:第35域为两位变长,分长度域和数据域,先分析长度域,长度域为2且组包类型为BCD码压缩方式,故数两位长度,长度值为37,根据长度域来解析该域的数据域,数据域的组包类型为BCD码压缩方式,故需要数48位,并去掉最后面在组包的时候补的F,故解析出来的结果为622848299836XXXXXXXD23122209656980000。

第36域解析:第36域为三位变长,分长度域和数据域,同样先分析长度域,长度域为3且组包类型为BCD码压缩方式,故数四位长度,长度值为0104,去掉最左侧在组包的时候补的0,故解析出来的长度域为104,根据长度域解析数据域,因为数据域的组包方式为BCD码压缩方式,故数104位即可,解析出来的结果为99622848299836XXXXXXXD156156000000000000000000000021414142312DD000000000000D000000000000D002381300000000。

第41域解析:第41域属性为字母数字特殊符号的组合,长度为8,组包方式为ASCII方式,故此处要数16位,此处数出值为3635393030333139,将ASCII转换为数字、字母、特殊字符后就变成解析结果,故此域的解析结果为65900319

第42域解析:第42域与第41域相同,只是长度为15,故此处要数30位,解析的结果为898659048140003。

第48域解析:第48域为3位变长,故分数据域和长度域,长度域的解析跟36域的长度域解析方式一样,长度域解析结果为103,数据域的编码方式为ASCII,故此处要数206位,此处数出值为50414333313330303030303030303020202020202020202031313030303031333030303030303030302020202020202020203130313030383035343031303631343130323731363331313832353133353935202020202020202020202020202020202020202023,将此处的ASCII码转换为数字、字符、字母后的结果为PAC313000000000        
11000013000000000         10100805401061410271631182513595                    #。

第49域解析:第49域跟第41域一样,不同的是此域的长度为3,故此处数6位,数出来的数据为313536,将ASCII转换为数字后,此域的解析结果为156

第52域解析:第52域属性为二进制数据,长度为64,组包方式为二进制,所以此处数8位,解析出来的结果为FD7FCC695E6083DC

第53域解析:第53域与第3域相同,长度为16,故数16位即可,所以此处解析出来的结果为2000000000000000

第64域解析:第64域与第52域完全一样,故解析出来的结果为333A84758CBA943C

至此该数据包解析完成,特别说明一下,此数据是从生产环境的日志中取的报文,其中包含用户银行卡的二三磁道数据等敏感信息,故此处对报文进行了处理,该处理是将卡号后七位影藏为XXXXXXX,也就是上面红色的XXXXXXX部分,但此处的处理不影响此处对报文解析的理解。

时间: 2024-10-27 05:46:18

8583协议实例分析的相关文章

TCP协议详解即实例分析

 TCP协议详解 3.1 TCP服务的特点 TCP协议相对于UDP协议的特点是面向连接.字节流和可靠传输. 使用TCP协议通信的双方必须先建立链接,然后才能开始数据的读写.双方都必须为该链接分配必要的内核资源,以还礼链接状态和连接上数据的传输.TCP链接是全双工的,即双方的数据读写可以通过一个连接进行.完成数据交换之后,通信双方都必须断开连接以释放系统资源. TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务.而无连接协议UDP则非常适合于广

【协议分析】HTTP2报文头及数据帧格式解析实例分析

一.HEAD HPACK压缩协议格式说明,HPACK压缩的二进制格式采用以下2种格式: 1.用索引标识头域,如下所示,0位固定为1,其它7bit标识索引值,索引参考下面的静态表格,如82代表 -> :method: GET. 0   1   2   3   4   5   6   7 +---+---+---+---+---+---+---+---+ | 1 |        Index (7+)         | +---+---------------------------+ Figur

深入理解HTTP协议、HTTP协议原理分析

深入理解HTTP协议.HTTP协议原理分析 目录(?)[+] http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本.其中最著名的就是RFC 26

HTTP的上传文件实例分析

HTTP的上传文件实例分析 由于论坛不支持Word写文章发帖. 首先就是附件发送怎么搞,这个必须解决.论坛是php的.我用Chrome类浏览器跟踪请求,但是上传的文件流怎么发过去没找到,估计流可能多或者什么的不好显示,只知道发送了文件名字.需要实际了解下post文件,不能只会后台或界面不了解前台数据处理和协议怎么传送数据. 图中:有些相关文章 HTTP请求中的form data和request payload的区别 AJAX POST请求中参数以form data和request payload

【转】Linux I2C设备驱动编写(三)-实例分析AM3359

原文网址:http://www.cnblogs.com/biglucky/p/4059586.html TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 支持7bit.10bit设备地址模式 32字节FIFO缓冲区 可编程时钟发生器 双DMA通道,一条中断线 三个I2C模块实例I2C0\I2C1\I2C2 时钟信号能够达到最高48MHz,来自PR

Linux I2C设备驱动编写(三)-实例分析AM3359

TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 支持7bit.10bit设备地址模式 32字节FIFO缓冲区 可编程时钟发生器 双DMA通道,一条中断线 三个I2C模块实例I2C0\I2C1\I2C2 时钟信号能够达到最高48MHz,来自PRCM 不支持 SCCB协议 高速模式(3.4MBPS) 管脚 管脚 类型 描述 I2Cx_SCL I/O

【OpenGL】Shader实例分析(七)- 雪花飘落效果

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shadertoy.com/view/4d2Xzc Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChan

Apache漏洞利用与安全加固实例分析

Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义.本文将结合实例来谈谈针对Apache的漏洞利用和安全加固措施. Apache HTTP Server(以下简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,是最流行的Web服务器软件之一.虽然近年来Nginx和Lighttpd等Web Server的市场份额增长得很快,但Apache仍然是这个领

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".