マイコン工作実験日記

Microcontroller を用いての工作、実験記録

再度SIMをロックしてしまいそうになった

2015-10-11 16:15:45 | Weblog
新しいSIMカードにしたので今度はロックしないようにと思っていたのですが、STの提供しているサンプルSTM32011のの動作をちゃんと理解していなかったので、再びロックする寸前になってしまいました。そこで、新改めてサンプルの動きを確認することに。

SIMカード上のファイルへのアクセスは ISO7618-4で定められているコマンドを送信して行います。ISO標準は無料でダウンロードすることができませんが、GSMや3GPPのSIMに関する資料を参照すると必要なISO768-4のコマンドやその使い方も説明されているので、GSM11.11とかを参照すればISO標準を購入しなくてもSTM32011のコードを読んで理解することが可能です。

SIMカードにリセットがかかると、SIMカードはMF(Master File)という、ディレクトリ構成の最上位にあるファイルをアクセスできる状態にあります。STM32011のサンプルでは、いったんMFをSELECTコマンドで選択した後、GET RESPONSEコマンドを発行することでMFに関する情報を取得してますので、その内容を確認してみました。


22バイトの応答がありましたが、その内容は次のようになっています。

バイト位置意味長さ
1 -- 2未使用200 00
3 -- 4選択したディレクトリに割り当てあれていないメモリ量200 00
5 -- 6File ID23F 00
7ファイル種別101
8 -- 12未使用500 00 00 00 00
13以後の長さ109
14ファイルの特性1B3
15直下にあるDFの数103
16直下にあるEFの数109
17CHV, UNBLOCK CHV, 管理コードの数104
18未使用100
19CHV1ステータス181
20UNBLOCK CHV1ステータス18A
21CHV2ステータス183
22UNBLOCK CHV2ステータス190


CHV1ステータスが0x81となっていますが、これはPIN1が設定されており、すでに2回 PIN番号を間違えているので、残り1回間違えるとSIMロックがかかるという状態であることを意味しています。危ない崖っ淵です。ところが、ファイル特性バイトをみると0xB3となっており、CHV1の有効/無効を示すMSBが1になっています。ここがMSBだとCHV1は無効であるという状態を示しています。つまり、PIN番号照合をしなくてもカードにアクセスすることが可能な状態になっていたのです。サンプルのプログラムを改めて読んでみると、PIN番号照合が無効になっている場合には、いったんこれをわざと有効にしてから、照合をおこなうという作りになっていたのでした。それに気づかずに、PIN番号の照合をしている部分だけ直してアクセスを試行していたのでした。

比較のために、ロックしてしまったFOMAカードの方も確認してみました。



こちらも同様に22バイトが返ってきましたが...

バイト位置意味長さ
1 -- 2未使用200 00
3 -- 4選択したディレクトリに割り当てあれていないメモリ量200 00
5 -- 6File ID23F 00
7ファイル種別101
8 -- 12未使用500 00 00 00 00
13以後の長さ109
14ファイルの特性113
15直下にあるDFの数103
16直下にあるEFの数107
17CHV, UNBLOCK CHV, 管理コードの数104
18未使用100
19CHV1ステータス180
20UNBLOCK CHV1ステータス18A
21CHV2ステータス182
22UNBLOCK CHV2ステータス190


特性バイトが0x13となっておりCHV1(PIN1)確認が有効となっていることを示しています。またCHV1ステータスが 0x80となっており、もう試行回数が残っていないことを示しています。つまり、ロックされているこということです。