/sim-applet-imsi-test

IMSIを書き換えることで、SIM Applet単独で回線を遮断するデモ用リポジトリ

Primary LanguageJavaMIT LicenseMIT

sim-applet-imsi-test

概要

IMSIを書き換えることで、SIM Applet単独で回線を遮断するデモ用リポジトリです。
NTTコミュニケーションズ株式会社より提供されている、IoT Connect Mobile Type SのeSIMにインストールされるのを想定していますが、USIM ApplicationのAIDが一致すれば他社のSIMでも動作する可能性があります。

Caution

このAppletはSIMを不可逆的に通信不能にする可能性があります。
後述のバックアップを必ず実行し、生のIMSIを控えるようにしてください。
このAppletと付属のツールを使用してSIMが通信不能になっても自己責任です。

ビルド

IntelliJ IDEA CommunityまたはUltimateに対応しています。
スクリプトはLinuxまたはmacOS環境を前提としています。

Warning

このリポジトリのサブモジュールに含まれるJCDKは、Oracle社の著作物です。
利用する場合は、以下の利用規約に同意する必要があります。
https://github.com/martinpaljak/oracle_javacard_sdks/tree/master/jc305u4_kit/legal

  1. このリポジトリをサブモジュールを含めてcloneする
git clone --recursive 'https://github.com/common-creation/sim-applet-imsi-test.git'
  1. lib/bootstrap.shを実行して、UICC Toolkitなどをダウンロード・展開する
./lib/bootstrap.sh
  1. sample.env.env にコピーして READER を書き換える

  2. env/sample.key.envenv/key.env にコピーして ENC_KEY MAC_KEY KEK_KEY を書き換える

  3. IntelliJ IDEAで読み込む

  4. Build を実行すると、 ./out/applet.cap が生成される

  1. ./install.sh を実行してCAPをeSIMにインストールする

バックアップ・リストア

./tool.sh を使用すると、IMSIの確認・バックアップ・リストア・書き込みができます。

./tool.sh read-current

現在の生のIMSIと整形済みのIMSIを表示します。

./tool.sh read-backup

バックアップ領域の生のIMSIと整形済みのIMSIを表示します。

./tool.sh backup

バックアップ領域に生のIMSIを書き込みます。

Warning

このバックアップ領域はAppletをアンインストール・再インストールすると破棄されます。

./tool.sh restore

バックアップ領域から生のIMSIを書き戻します。

Caution

生のIMSIの値を知らない状態で、バックアップ実行前にこのコマンドを実行すると、SIMが通信不能のまま復旧できなくなります。
./tool.sh read-current の値を書き留めておくか、 ./tool.sh read-backup を実行し、確実にバックアップされていることを確認してください。

./tool.sh write <raw IMSI>

指定した生のIMSIをSIMに書き込みます。
Applet側から書き込みを行うので、ADMキーが無くても実行できます。

QuickOpsを利用したビルド

QuickOpsを利用して、ビルド・アーティファクト保存をすることもできます。
.quickops.yamlを同梱しているので、このリポジトリをGitHubまたはBacklog Gitにコピーするとすぐに利用できます。