How to Decode Magstripe Data

最近まで、クレジットカードのデータを読むには、リーダー(ID TECH製の多くのリーダーの1つなど)にカードを通し、仮想端末アプリ(または他のアプリ)に、リーダーから直接出てきたトラックデータを吸い取らせるだけでよかったのですが、それが簡単になりました。 問題のデータは、暗号化されていないキーストロークとして画面に表示されるだけです。

そのような時代でした。 今日、磁気ストライプ リーダーの多くは暗号化されたデータを USB 経由で出力し (多くの場合、キーボード モードではなく HID モード)、磁気ストライプ カードに加え、チップ カードも扱わなければならなくなりました。 チップカードのデータはTLV(tags, length, values)という形式をとっており、数年前の「古いマグストライプデータ」とはかなり異なっているようです。

最近の投稿では、業界標準のTDESおよびAES復号化アルゴリズムと、業界標準(ANSI X9.24)のDUKPTキー導出技術を組み合わせて、クレジットカードデータを復号する方法を紹介しましたが、そもそも、復号化した磁気ストライプデータを入手する方法については触れませんでした。 今、「クレジットカードの磁気ストライプデータ」とはどのようなものなのでしょうか。 どうやって入手し、どうやって復号化するのか? 最初の質問(magstripe データはどのようなものか)に対する答えは、使用しているカード読み取り装置のメーカーとモデルだけでなく、問題の取引が磁気スワイプ、ディップ(接触型 EMV)、または非接触型/NFC の相互作用によって行われたかによって、大きく異なります。 一般に、生のトラックデータを読み取るだけでなく、多くのことを行っています。 また、復号化に必要なKSN(Key Serial Number)を取得し、取引に関連する様々な種類のメタデータを採取しています。 確かに、(例えば)生のトラック 2 データを取得することにしか興味がないかもしれませんが、それを取得する過程で、他の多くのデータも扱わなければなりません。

Mesopotamian Kumquat-Absinthe Latte を突然使い切った後の埋め合わせとして、罪悪感に苦しむバリスタからもらった Starbucks ギフト カードを使って実例を簡単に見てみましょう。 このスターバックスカードを、キーボードモードで動作するID TECHのオーガスタカードリーダーに通し、メモ帳を開いた状態(カーソルはテキストウィンドウにある)で、メモ帳に以下のデータを取得しました:

02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03

これは、”生のトラックデータ “よりはるかに多いものです。 マスクされたトラックデータ(B%で始まり、多くのアスタリスクを含み、最終的に?*で終わる)を認識することができますが、これは実際には暗号化されているプライマリアカウントナンバー(PAN)を隠しているのです。 ここに表示されているのは、リーダーから出力されるバイナリ データを 16 進数で表したものです。

この大きなブロックの解析は、ノウハウさえあれば簡単にできます。 これは、データのすべての部分をわかりやすく表示することができる HTML フォームです。

すべてのカード リーダーは、カード データを表現する独自の方法を持っています。 ID TECHは、拡張暗号化MSRフォーマットと呼ばれるフォーマットでmagstripeデータを表現します。 このフォーマットには26のデータフィールドがあります。26のフィールドすべてについて、ドキュメントP/N 80000502-001, ID TECH Encrypted Data Outputで詳しく説明されています。 Parsomatic によると、この 5 バイトには次の情報が含まれています。

STX 02
LENGTH ED 01
カード エンサイデーズ Type 80
トラックステータス (1F)
0------- 0 Reserved for future use-0------ 1: Field 10 optional bytes length exists (0: No Field 10)--0----- 1: Track 3 sampling data exists (0: Track 3 sampling data does not exist)---1---- 1: Track 2 sampling data exists (0: Track 2 sampling data does not exist)----1--- 1: Track 1 sampling data exists (0: Track 1 sampling data does not exist)-----1-- 1: Track 3 decode success (0: Track 3 decode fail)------1- 1: Track 2 decode success (0: Track 2 decode fail)-------1 1: Track 1 decode success (0: Track 1 decode fail)

最初のバイト(02)は単にSTX.です。 スタート」バイトです。 次の 2 バイト(ED 01)は、データ全体のペイロードの長さを 16 進数で表す(リトルエンディアン: ED 01 は実際には 0x01ED または 493 バイトのデータを意味する)。 カードエンコードタイプは0x80であり、これは(英語で)読者がこれを金融カードであるとみなすことを意味する。 トラックステータス(値:0x1F)は8ビットのフラグを含むステータスバイトで、磁気ストライプにどのトラックが存在し(最大3つまで)、どのトラックが正常に読み取られたかを知らせます。 この場合、3つの物理トラックはすべて正常に読み取られましたが、データはトラック1と2にしか存在しません。

では、次の5バイトを見てみましょう。 Parsomaticによると、これらのバイトとその意味は次のとおりです。

Track 1 Length 4C
Track 2 Length 28
Track 3 Length 00
Clear/Mask Data Sent Status (83)
1------- Bit 7: 1 Serial Number present; 0 not present-0------ Bit 6: 1 PIN Encryption Key; 0 Data Encryption Key--0----- Bit 5: 1 Chip present on card. (First byte of service code was '2' or '6'.) Use EMV transaction if possible.---0---- Bit 4: 0 TDES; 1 AES----0--- Bit 3: 1 if fixed key; 0 DUKPT Key Management-----0-- Bit 2: 1 if Track3 clear/mask data present------1- Bit 1: 1 if Track2 clear/mask data present-------1 Bit 0: 1 if Track1 clear/mask data present
Encrypted/Hash Data Sent Status (9B)
1------- Bit 7: if 1, KSN present-0------ Bit 6: if 1, session ID present --0----- Bit 5: if 1, track3 hash data (SHA digest) present---1---- Bit 4: if 1, track2 hash data (SHA digest) present----1--- Bit 3: if 1, track1 hash data (SHA digest) present-----0-- Bit 2: if 1, track3 encrypted data present------1- Bit 1: if 1, track2 encrypted data present-------1 Bit 0: if 1, track1 encrypted data present

金融カードにおいて、以下のようになる可能性があります。 トラック1の長さは最大79バイトです。 トラック2は最大40バイト、トラック3は最大107バイトです。 この場合、トラック1のデータは76バイト(16進数0x4C)、トラック2のデータは40バイト(0x28)となっています。 (これらの長さは、マスクされたトラックデータを解析するためだけでなく、暗号化されたバージョンのトラックの長さを決定するためにも知っておくことが重要である。 暗号化された長さは、実際のネイティブのトラック長とは異なります。トラック データは、TDES 暗号化では 8 の倍数、AES では 16 の倍数の最終長さになるようにパディングされなければならないからです。 その情報は、Clear/Mask Data Sent Status バイトのビット 4 にあります(上図参照)。 暗号化されたトラックデータ(および検証用ハッシュ)が存在するかどうか、また KSN が存在するかどうかを知るための Encrypted/Hash Data Sent Status バイト(上図)もあります。

さて、トラック 1 とトラック 2 のマスクデータ、それらの暗号化バージョン、ハッシュデータ(この場合、すべてゼロ)、その他のデータ(以下で説明)にたどり着きました。 Parsomatic は、ASCII のトラック データを以下のように 16 進表現に変換しています。

Track1 Data 25 2A 36 30 31 30 2A 2A 2A 2A 38 37 36 35 5E 30 32 35 34 2F 53 45 52 56 49 43 45 52 45 43 4F 56 45 52 59 55 53 44 5E 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A
Track2 Data 3B 36 30 31 30 2A 2A 2A 2A 38 37 36 35 3D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A
Track1 暗号化データ 95 02 5C 86 98 7E 4F 7D D0 7D 58 73 0E B7 9F DF B9 0A B7 F2 3E 6E CA 6F 4F 04 A6 7B F5 11 EE 13 F9 50 90 3B DE 77 62 46 80 C4 60 E9 C3 6C 4F 91 36 25 6B B9 3A 38 CB 98 F9 56 26 DC FA F9 33 5C E0 A2 13 07 4C C1 CD 84 CC 91 13 98 E0 67 56 C4 このデータの解読
Track2 暗号化データ 64 AB 03 6B 69 42 28 AD A7 EC 01 8F 49 5A 01 3A F8 A0 4C 97 62 88 FE 2F 80 27 1E 6E 53 D9 87 DE 19 AC A2 70 7B FF 2C 78 このデータ
トラック1 解読 ハッシュド 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
トラック2 ハッシュド 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
リーダーシリアル番号 36 31 33 54 35 33 35 36 31 38
KSN 62 99 49 00 75 00 02 A0 03 08
LRC 10
Checksum 8E
ETX 03

Parsomatic が、暗号化データの横に “Decrypt this data” というリンクを挿入することに注意してください(上述)。 このリンクをクリックすると、ID TECH の暗号化/復号化ツールが表示され、問題のデータを復号化して表示することができます。

データの最後のフィールドには、リーダー シリアル番号、キー シリアル番号 (KSN)、LRC、チェックサム、および ETX (End of transmission) があります。 LRCはペイロードデータの全バイトのXOR(排他的論理和)を表すバイト値で、チェックサムはペイロードの全バイトの1バイト算術和(オーバーフローは当然無視)である。 LRC とチェックサムは、ペイロードのデータの完全性を確認するために使用される。 (これらは適切な CRC よりもいくらか簡単ですばやく計算できます。)

Conclusion

お分かりのように、magstripe データには「トラックデータ」以外にも多くのものがあります。 いくつかのデータフィールドの重要性についてはまだ触れていません(今後の記事で触れるかもしれません)。 また、EMVデータについても触れていません(これは間違いなく別の記事で取り上げることになるでしょう)。 しかし、ID TECH クレジットカード リーダーから出力されるデータをデコードしようとする場合は、これで始めることができます。

詳細については、先に述べたように、Enhanced Encrypted MSR データ形式に関する当社の技術資料を参照してください。 ID TECH暗号化データ出力。 または、以下のリンクをクリックして、決済の合理化に向けて第一歩を踏み出しましょう!

コメントを残す

メールアドレスが公開されることはありません。