「ATコマンドインタラクション-PINコード」には、修正PINコードの入力にATコマンドを使用する旨が記載されており、ここでは、ダイレクトAPDUインタラクション方式によるPINコードの動作について説明する。
PINコード操作
コマンド | 価値 | 意味 |
---|---|---|
CHVを確認する | 「20」 | PINを確認 |
CHVを変更する | 「24」 | PINコードを変更 |
CHVを無効にする | 「26」 | PINの確認をオフにする |
CHVを有効にする | 「28」 | PIN確認をオンにする |
1. CHV確認PINを確認する
コマンド | CLA | INS | P1 | P2 | P3 |
---|---|---|---|---|---|
CHVを確認する | 00 | 20 | 00 | CHV NO。 | 08 |
=>00 20 00 01 08
<=20
=>31 32 33 34 FF FF FF FF //默认PIN码1234
<=90 00
(ATコマンドと同等:AT + CPIN = 1234)
PINコード入力時間のクエリ
=>00 20 00 01 08
<=63 C3 //最后一个数据3代表PIN码还剩余3次可输入
一度間違ったPINを入力すると、次のように1つ減ります。
=>00 20 00 01 08
<=63 C3 //剩余3次
=>00 20 00 01 08
<=20
=>32 32 33 34 FF FF FF FF //PIN码输入错误2234
<=63 C2 //剩余2次
=>00 20 00 01 08
<=63 C2 //剩余2次
PIN確認がオンになっていないときにこのコマンドを入力するとどうなりますか
=>00 20 00 01 08
<=20
=>31 32 33 34 FF FF FF FF
<=69 84 //引用的数据失效
2. CHVの変更PINコードの変更
コマンド | CLA | INS | P1 | P2 | P3 |
---|---|---|---|---|---|
CHVを変更する | 00 | 24 | 00 | CHV NO。 | 10 |
=>00 24 00 01 10
<=24
=>31 32 33 34 FF FF FF FF 34 33 32 31 FF FF FF FF //默认PIN码1234,修改成4321
<=9000 //引用的数据失效
入力が間違っている場合、PINコードは1つ減ります
=>00 20 00 01 08
<=63 C3 //剩余3次
=>00 24 00 01 10
<=24
=>31 32 33 34 FF FF FF FF 34 33 32 31 FF FF FF FF //上面修改一次后PIN码已经变成4321了,此时再用1234去修改PIN则会出错
<=63 C2 //剩余2次
=>00 20 00 01 08
<=63 C2 //剩余2次
(ATコマンドと同等:AT + CPWD = "SC"、 "1234"、 "4321")
3. CHVを無効にするPINコード検証を無効にする
コマンド | CLA | INS | P1 | P2 | P3 |
---|---|---|---|---|---|
CHVを無効にする | 00 | 26日 | 00 | 01 | 08 |
=>00 26 00 01 08
<=26
=>31 32 33 34 FF FF FF FF //使用PIN码1234关闭PIN码验证
<=9000
(ATコマンドと同等:AT + CLCK = "SC"、0、 "1234")
4. CHVを有効にすると、PINコードの検証が開始されます
コマンド | CLA | INS | P1 | P2 | P3 |
---|---|---|---|---|---|
CHVを有効にする | 00 | 28 | 00 | 01 | 08 |
=>00 28 00 01 08
<=28
=>31 32 33 34 FF FF FF FF //使用PIN码1234打开PIN码验证
<=9000
(ATコマンドと同等:AT + CLCK = "SC"、1、 "1234")
5. PINステータスクエリ
ATコマンドにはAT+CLCK="SC",2
、PINコード機能がオンになっているかどうかを判別するコマンドもありますが、APDUデータを使用して、PINコード機能がオンになっているかどうかをどのように判断しますか?
MF、DF、またはADF FCPについては、フィールド(PINステータステンプレートDO)C6を含む「SIM Data Interaction-FCP」で説明しました。その中のPS_DOバイトは、PINコード検証がオンになっているかどうかを判断できます機能。
PINコード検証機能がONになっていない場合の3F00に対応するFCPの内容:
=>80 F2 00 00 00
<=6C 2B
=>80 F2 00 00 2B
<=F2 62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A 9000
ATコマンドと同等:
AT+CLCK=\"SC\",2
AT+CLCK="SC",2
+CLCK: 0
OK
PINコード検証機能をONにした場合の3F00に対応するFCPの内容:
=>80 F2 00 00 00
<=6C 2B
=>80 F2 00 00 2B
<=F2 62278202782183023F00A507800171C00200018A01058B032F0602C60C9001E083010183018183010A 9000
ATコマンドと同等:
AT+CLCK=\"SC\",2
AT+CLCK="SC",2
+CLCK: 1
OK
上記の2つのデータを比較すると、PINコード検証機能をオンにすると、PS_DOバイトの最上位ビットが1に設定されることがわかります。
PINコード検証機能をオンにしてオンにしないで、ADFのFCPまたは他のDFのFCPを読み取ると、PS_DOバイトの最上位ビットが変化することがわかります
したがって、PINコード検証機能が有効かどうかを判断するには、MF / DF / ADFのFCPに対応するPS_DOバイトの最上位ビットを見つけるだけで済みます。
参照:3GPP、ISO7816、Baidu Encyclopediaなど