10

WIKICodeProjectでISO8583メッセージングについて読みました。ISO8583メッセージは基本的に3つの部分に分けることができることを理解しました。

  1. MTI(メッセージタイプインジケータ)

1.1。バージョン

1.2。メッセージクラス

1.3。メッセージ機能

1.4。メッセージの発信元

  1. ビットマップ

どのデータ要素が存在するかを示します。

  1. DataElement

ISOメッセージ全体の本質には、次のようなトランザクションに関する情報が含まれています。

  • トランザクションタイプ、

  • 額、

  • customeridなど。

したがって、これら2つの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マシンからのISO8583メッセージングログをすでに持っていることです。

この実際の出力メッセージングログは、上記のスニペットのようにあまり明確ではありません。

したがって、このメッセージを上の例のようにMTI、ビットマップ、およびデータ要素に分割することはできません。

00000:00 5B 30 31 31 30 30 30 30 30 30 30 30 38 32 30 80 38 00 00  [.[01100000000820.8..]
00020:00 81 00 00 04 00 00 00 00 00 00 00 33 36 32 39 31 30 31 30  [............36291010]
00040:32 39 35 37 31 30 33 31 31 30 30 30 30 30 30 35 30 33 31 53  [2957103110000005031S]
00060:55 32 30 31 31 31 30 33 31 31 30 32 39 35 37 32 30 31 31 31  [U2011103110295720111]
00080:30 33 31 31 30 32 39 35 37 33 30 30 31                       [0311029573001       ]

私はISO8583メッセージと歓迎の提案の経験がありません。

4

3 に答える 3

15

了解しました。
このメッセージは次のように分かれています。

最初の2バイトはメッセージの長さ005B=91
の後に14バイトのヘッダー=01100000000820が続きます


どういうわけか次のようにBMPが続きます:

  • プライマリBMP=80 38 00 00 00 81 00 00 =フィールド{1、11,12、13、41、48}が存在する
    フィールド1は、セカンダリBMPが存在することを意味します
  • セカンダリBMP=04 00 00 00 00 00 0000=フィールド70が存在します

MTIがどこにあるかわかりませんが、ヘッダーのトレーラーにある0820になりますか?ASCIIであり、通常は08 20の数値で提供されるためですが、これは仕様の一部である可能性があります。0820はネットワーク管理のアドバイスを意味します

とにかく、デコードされたBMPからのフィールドは次のとおりです。

  • DE 11 = 362910
    System Trace Audit Number
  • DE 12 = 102957
    Local transaction time hh(24)mmss
  • DE 13 = 1031
    Local transaction date MMDD
  • DE 41 = 10000005
    terminal ID
  • DE 48 = (031) SU20111031102957201110311029573
    notice the 3 digits length field preceding the remaining data in this field. which is a generic (future/private use) field
  • DE 70 = 001
    network management information code <001 = sign on>

From DE 70 value 001 this is a sign on message, which must be a 0800 MTI.

To get more information about the location of the MTI and the meaning of DE 48, you should read the manual (technical specs) of this device to get more information.

于 2011-11-10T05:32:13.933 に答える
5

while sending ISO 8583 message we are converting it in BCD/HEX form ,use Wireshark tool to

track communication between IP and Ports.

于 2013-06-18T07:16:17.860 に答える
0

A good online bitmap analysis tool is https://neapay.com/online-tools/bitmap-fields-decoder.html.

Sometime helps the https://codebeautify.org/hex-string-converter tool.

For a better understanding of the ISO 8583 message format, it is useful to analyse each field manually. However, each field can have length and value subfields in different formats (BCD, EBCDIC, ASCII ...). And some fields may have inner fields, for example BMP 48 or 60 often used as containers for nested field trees. These inner fields may have tag, length and value. And nested fields of these fields may have different formats again :). For example the https://github.com/credibledoc/credible-doc/blob/master/iso-8583-packer/doc/ebcdic/ebcdic-decimal-tag-packer.md page describes a field with EBCDIC tag and BCD value.

You can use the https://github.com/credibledoc/credible-doc/tree/master/iso-8583-packer Java library (I am the author) for building ISO 8583 messages. The example of ISO message above can be unpacked and packed with the iso-8583-packer library.

Message data:

<f name="Root" lenHex="005B">
    <f name="Header" val="0110000000" valHex="30313130303030303030"/>
    <f name="MTI" val="0820" valHex="30383230"/>
    <f name="Bitmap" bitmapHex="80380000008100000400000000000000" bitSet="{1, 11, 12, 13, 41, 48, 70}">
        <f name="SystemTraceAuditNumber" fieldNum="11" val="362910" valHex="333632393130"/>
        <f name="LocalTransactionTimeHHMMSS" fieldNum="12" val="102957" valHex="313032393537"/>
        <f name="LocalTransactionDateMMDD" fieldNum="13" val="1031" valHex="31303331"/>
        <f name="TerminalId" fieldNum="41" val="10000005" valHex="3130303030303035"/>
        <f name="PrivateData_48" fieldNum="48" val="SU20111031102957201110311029573" lenHex="303331" valHex="53553230...39353733"/>
        <f name="NetworkManagementInformationCode" fieldNum="70" val="001" valHex="303031"/>
    </f>
</f>

Message Structure:

<f type="LEN_VAL" name="Root" lengthPacker="BinaryLengthPacker" bodyPacker="AsciiBodyPacker">
    <f type="VAL" name="Header" bodyPacker="AsciiBodyPacker" len="10"/>
    <f type="VAL" name="MTI" bodyPacker="AsciiBodyPacker" len="4"/>
    <f type="BIT_SET" name="Bitmap" bitMapPacker="IfbBitmapPacker">
        <f type="VAL" fieldNum="11" name="SystemTraceAuditNumber" bodyPacker="AsciiBodyPacker" len="6"/>
        <f type="VAL" fieldNum="12" name="LocalTransactionTimeHHMMSS" bodyPacker="AsciiBodyPacker" len="6"/>
        <f type="VAL" fieldNum="13" name="LocalTransactionDateMMDD" bodyPacker="AsciiBodyPacker" len="4"/>
        <f type="VAL" fieldNum="41" name="TerminalId" bodyPacker="AsciiBodyPacker" len="8"/>
        <f type="LEN_VAL" fieldNum="48" name="PrivateData_48" lengthPacker="AsciiLengthPacker" bodyPacker="AsciiBodyPacker"/>
        <f type="VAL" fieldNum="70" name="NetworkManagementInformationCode" bodyPacker="AsciiBodyPacker" len="3"/>
    </f>
</f>

The example above can be found on GitHub https://github.com/credibledoc/credible-doc/blob/master/iso-8583-packer/src/test/java/com/credibledoc/iso8583packer/examples/UnderstandingIso8583MessageLogTest.java

BMP 55 often contains TLV EMV data. The https://paymentcardtools.com/emv-tlv-parser tool is useful in the case.

于 2020-01-05T17:07:40.447 に答える