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
- このリポジトリをサブモジュールを含めてcloneする
git clone --recursive 'https://github.com/common-creation/sim-applet-imsi-test.git'
- lib/bootstrap.shを実行して、UICC Toolkitなどをダウンロード・展開する
./lib/bootstrap.sh
-
sample.env
を.env
にコピーしてREADER
を書き換える -
env/sample.key.env
をenv/key.env
にコピーしてENC_KEY
MAC_KEY
KEK_KEY
を書き換える -
IntelliJ IDEAで読み込む
-
Build
を実行すると、./out/applet.cap
が生成される
./install.sh
を実行してCAPをeSIMにインストールする
./tool.sh
を使用すると、IMSIの確認・バックアップ・リストア・書き込みができます。
現在の生のIMSIと整形済みのIMSIを表示します。
バックアップ領域の生のIMSIと整形済みのIMSIを表示します。
バックアップ領域に生のIMSIを書き込みます。
Warning
このバックアップ領域はAppletをアンインストール・再インストールすると破棄されます。
バックアップ領域から生のIMSIを書き戻します。
Caution
生のIMSIの値を知らない状態で、バックアップ実行前にこのコマンドを実行すると、SIMが通信不能のまま復旧できなくなります。
./tool.sh read-current
の値を書き留めておくか、 ./tool.sh read-backup
を実行し、確実にバックアップされていることを確認してください。
指定した生のIMSIをSIMに書き込みます。
Applet側から書き込みを行うので、ADMキーが無くても実行できます。
QuickOpsを利用して、ビルド・アーティファクト保存をすることもできます。
.quickops.yamlを同梱しているので、このリポジトリをGitHubまたはBacklog Gitにコピーするとすぐに利用できます。