2013-07-12 54 views
9

私はWinSCardを使用しているMiFareカードのシリアル番号を読み取る必要があります。私はMiFareカードから7B UIDを読むことができます。MiFare - MiFareカードのUIDとシリアル番号の違い

私はUIDと MiFareカードのシリアル番号が同じであるかどうか分かりません。

私はこの問題を尋ねましたが、部分的な成功しか得られませんでした。私もquestionをstackoverflowで見つけましたが、それは助けになりませんでした。

UXとシリアル番号が異なるNXPオンラインのdocumentが見つかりました。 (ページ番号3、行番号5)

カードのシリアル番号を読み取るOmniKeyのアプリケーションがあり、UIDだけも返します。

NXPのドキュメントは、UID <>シリアル番号および他の標準OMNIKEYアプリケーションがシリアルナンバーとしてUIDを返すと言います。

私はこの問題について私の頭を引っ張り始めました。誰でも手伝っていただければ幸いです。

+2

MiFareタグには、読み取り可能なシリアル番号がありません。彼らにはUIDしかありません。あなたが混乱している理由は、誰もがUIDが何であるかを知っているわけではないが、誰もがシリアル番号が何であるか知っているからです。したがって、UIDはしばしばシリアルと呼ばれることはありません。 NXPはこれを明確にしようとしますが、シリアルが存在することを暗示することによってさらに混乱を招いています。 NXPの文書は途方もない誤解を招いています。 –

+0

したがって、このUIDは読み取り専用の唯一のIDですか?私はWinSCardを使ってUIDを読むことができました。シリアルナンバーが判読不可能な場合は、それを提供するポイントは何ですか? #JustCurious :-) –

+1

そのドキュメントからの完全な引用は「UIDは「シリアル番号」ではなく、一意の識別子です。バイト配列を整数に変換する方法はありません。彼らは数字を*に変換することは、彼らが定義しているものではなく、さまざまな方法で行うことができることを指摘しています(例えば、リトルエンディアンとビッグエンディアン) – Eric

答えて

14

各スマートカードには、製造プロセス中に一意の永続識別番号(UID)が焼き付けられた統合チップが含まれています。 このUIDは、しばしばカードシリアル番号(CSN)と呼ばれます。カードのシリアル番号は暗号化されておらず、ISOに準拠しているリーダーはカードのシリアル番号を読み取ることができます。

編集1:

のMifareカードのシリアル番号は、ISO 14443-3Aで定義された一意の識別子です。スタンダードには、シングル(4Byte)、ダブル(7バイト)、トリプル(10バイト)の3種類のUIDが定義されています。古いバージョンのMifareカードのみ、UIDは4バイトでしたが、現在は7バイトに移行しました。

EDIT 2:それはあなたに役立つかもしれない ...

What is the difference between a 4 Byte UID and a 4 Byte ID? 

は、4バイトのUIDは、制御されたデータベースを使用してカード 製造元によって割り当てられた識別子です。このデータベースは、 単一識別子が2回使用されないことを保証します。矛盾して、4バイトのIDは 識別子であり、 以上の非接触チップに割り当てられ、同一の を有するカードが1つ以上特定の非接触システムに展開されるように製品の生産時間を指定する。

+0

はい、これは分かります。しかし、NXPの公式文書によると、UIDとシリアルナンバーは2つの異なるものだという。だから私は混乱しているだけです。 –

+0

編集部分を参照してください... – vikky

+0

私は既にあなたが答えに記載されたリンクを訪問していました。しかし、リンクには「UID =シリアル番号」の回答は含まれていません。 :-( –

3

この場合の差別化は、「シリアル番号」とは、番号がシリーズであり、したがって順次割り当てられていることを意味します。

MIFAREカードには、内部規則によって生成される一意の識別番号(または短いUID)がありますが、これは必ずしも順不同ではありません。これは、あなたがUID 01020304050607のカードを見ると、これまでに作られたカードが少なくともそれ以上あるということではありません。

カードシリアル番号を参照している人がいる場合は、実際にはUIDを参照しています。

唯一の混乱は、MIFAREカードがアクティブ化中にランダムIDを返すように設定できるという事実から来る可能性があります。その場合、カードを有効にするたびに異なる「UID」を取得します。このシナリオでは、カードの実際のUIDを取得するために、ブロック0(セクタ0のキーを知る必要がある)に含まれるデータを読み取る必要があります。

+0

私の質問であなたの努力をいただきありがとうまだ立っている:( –

関連する問題