Понимание журнала обмена сообщениями ISO 8583

Я прочитал об обмене сообщениями ISO 8583 на WIKI и Проект кода; Я понял, что сообщения ISO 8583 можно разделить на 3 части:

  1. MTI (индикатор типа сообщения)

1.1. Версия

1.2. Класс сообщения

1.3. Сообщение Функция

1.4. Источник сообщения

  1. Битовая карта

Укажите, какие элементы данных присутствуют.

  1. DataElement

Суть всего сообщения ISO содержит информацию о транзакции, такую ​​как:

  • Тип операции,

  • количество,

  • Customerid и др.

Итак, после прочтения этих двух веб-ссылок, я хочу разделить мой журнал обмена сообщениями 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)

Но моя проблема в том, что у меня уже есть журнал обмена сообщениями ISO 8583 с моего банкомата.

Этот фактический журнал обмена выходными сообщениями не очень ясен, как в приведенном выше фрагменте.

Поэтому я не могу разделить это сообщение на элементы MTI, Bitmap и Data, как в верхнем примере.

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       ]

У меня нет предыдущего опыта работы с сообщениями ISO 8583, и я приветствую предложения.


person Frank Myat Thu    schedule 03.11.2011    source источник
comment
Думаю, вам помогут на специализированном форуме, это, кажется, очень локализованный вопрос.   -  person CharlesB    schedule 04.11.2011
comment
спасибо @CharlesB, не могли бы вы подсказать мне, какой форум подходит.   -  person Frank Myat Thu    schedule 04.11.2011
comment
Понятия не имею, так как я не в этой сфере, но обширный поиск на форумах по специальности может помочь   -  person CharlesB    schedule 04.11.2011
comment
Между прочим, я предложил специальный сайт под платформой обмена стеками для таких вопросов, и поверьте мне, их очень много. area51.stackexchange.com/proposals/36383/   -  person A.Rashad    schedule 11.11.2011


Ответы (3)


Понятно,
Это сообщение разделено следующим образом:

Первые 2 байта - это длина сообщения 00 5B = 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 00 00 = Поле 70 существует

Не уверен, где MTI, это будет 0820 в трейлере шапки? поскольку он находится в ASCII и обычно имеет числовое значение 08 20, но это может быть частью спецификации. 0820 означает совет по управлению сетью

в любом случае, поля из декодированного BMP выглядят следующим образом:

  • DE 11 = 362910
    Номер аудита системной трассировки
  • DE 12 = 102957
    Время местной транзакции чч (24) ммсс
  • DE 13 = 1031
    Местная дата транзакции MMDD
  • DE 41 = 10000005
    идентификатор терминала
  • DE 48 = (031) SU20111031102957201110311029573 - обратите внимание на поле длиной 3 цифры, предшествующее остальным данным в этом поле. которое является общим полем (для будущего / частного использования)
  • DE 70 = 001
    код информации управления сетью ‹001 = вход в систему>

При значении 001 DE 70 это сообщение входа в систему, которое должно быть 0800 MTI.

Чтобы получить дополнительную информацию о расположении MTI и значении DE 48, вы должны прочитать руководство (технические характеристики) этого устройства, чтобы получить дополнительную информацию.

person A.Rashad    schedule 10.11.2011
comment
Кстати, а какой софт анализатора ISO 8583 вы используете? Если да, дайте мне знать и об этом инструменте. - person Frank Myat Thu; 11.11.2011
comment
Добро пожаловать, @MyatThu. Хотите верьте, хотите нет, я использую My Own Brain v 1.0, я работаю в ISO почти 13 лет, читать сообщение дампа было бы так же просто, как читать по-английски. Тем не менее, я видел несколько бесплатных инструментов, способных декодировать сообщения ISO и раньше. попробуйте ознакомиться с техническими характеристиками, используйте блокнот, и это будет легкая задача, проще, чем готовое ПО - person A.Rashad; 11.11.2011
comment
Пожалуйста, не поймите меня неправильно, @ A.Rashad. Я считаю, что у вас большой опыт работы с ISO 8583, но почему я спрашиваю вас о программном обеспечении анализатора, я просто хочу протестировать с помощью этого инструмента. Я так уверен, что вам не нужен какой-либо инструмент для перевода сообщения, потому что ваш собственный опыт может помочь вам понять. Пожалуйста, не поймите меня неправильно. - person Frank Myat Thu; 11.11.2011
comment
не волнуйтесь, я полностью понимаю, о чем вы говорите, поэтому мне хотелось бы иметь какой-нибудь сайт для обсуждения таких вопросов. В 90-х мы сильно пострадали, и нам приходилось декодировать сообщения ISO карандашом и бумагой, то же самое касается других форматов сообщений, таких как NDC и D912. Я считаю, что нам нужно создать сообщество, чтобы передавать инструменты и опыт новому поколению. хорошая работа и так держать - person A.Rashad; 11.11.2011
comment
Я очень ценю вашу помощь @ A.Rashad. Теперь я понял обзор ISO 8583 из-за вашего ответа. Но у меня все еще есть еще один вопрос, и я также надеюсь, что, если вы не возражаете, вы ответите мне. Видя, как вы анализируете ISO 8583, я думаю, что вы не используете цифры ниже, когда читаете это сообщение. 0000: в первой строке, 00020: во второй строке, 00040: в третьей строке моего журнала. Разве эти цифры не нужны при чтении сообщения ISO? Если да, то почему? - person Frank Myat Thu; 11.11.2011
comment
ну, это только для того, чтобы сообщить вам номер первого байта в этой строке. так что 00 - это до свидания # 0, 5B - это байт # 1 и так далее. это будет отличаться от одного дампа данных к другому, в этом случае он показывает 20 байтов на строку и показывает номер байта в десятичном виде. некоторые другие будут отображать только 16, а байтовые номера показаны в шестнадцатеричном формате - person A.Rashad; 11.11.2011

при отправке сообщения ISO 8583 мы конвертируем его в форму BCD / HEX, используйте инструмент Wireshark для

отслеживать связь между IP и портами.

person Tush    schedule 18.06.2013

Хороший онлайн-инструмент для анализа растровых изображений - https://neapay.com/online-tools/bitmap-fields-decoder.html.

Иногда помогает инструмент https://codebeautify.org/hex-string-converter.

Для лучшего понимания формата сообщения ISO 8583 полезно проанализировать каждое поле вручную. Однако каждое поле может иметь подполя длины и значения в разных форматах (BCD, EBCDIC, ASCII ...). И некоторые поля могут иметь внутренние поля, например BMP 48 или 60, часто используемые в качестве контейнеров для вложенных деревьев полей. Эти внутренние поля могут иметь тег, длину и значение. И вложенные поля этих полей могут опять иметь другой формат :). Например, https://github.com/credibledoc/credible-doc/blob/master/iso-8583-packer/doc/ebcdic/ebcdic-decimal-tag-packer.md страница описывает поле с EBCDIC тег и значение BCD.

Вы можете использовать https://github.com/credibledoc/credible-doc/tree/master/iso-8583-packer Библиотека Java (я являюсь автором) для создания сообщений ISO 8583. Пример сообщения ISO выше можно распаковать и упаковать с помощью библиотеки iso-8583-packer.

Данные сообщения:

<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>

Структура сообщения:

<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>

Пример выше можно найти на GitHub https://github.com/credibledoc/credible-doc/blob/master/iso-8583-packer/src/test/java/com/credibledoc/iso8583packer/examples./UnderstandingIso8583MessageLogTest.java

BMP 55 часто содержит данные TLV EMV. В случае, если .

person Kyrylo Semenko    schedule 05.01.2020