rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

iPhone構成ファイルの暗号化スクリプト

2018-02-27 15:00:00 | iPhone
iPhone構成ファイルユーティリティのシミュレートで構成ファイルをテンプレートから生成したが、構成ファイル内に設定されたパスワードがある事から、デバイス毎に暗号化する事が求められる。
構成ファイルを暗号化するためには、「PayloadContnent」内の「array」データを取り出し暗号化する事。暗号化したデータを「EncryptedPayloadContent」として置き換える必要がある。エディターなどで編集することも可能であるが、一連の作業をスクリプトで自動化してみた。

構成ファイルから暗号化対象部分を取り出すのは、「iPhone構成ファイルユーティリティのシミュレート」で下記の処理で実現できることを示した。

Macでは、
/usr/bin/xmllint --xpath "/plist/dict/array" CertFile.mobileconfig > CertFile-CryptBody.mobileconfig
で、暗号化対象部分をファイル化できる。
構成ファイルの「Description」に2バイトコード(UTF-8)」の記述があると、抽出されたファイルでは、「松」が「松」などxml表記に変換される。ファイルとしては問題ないのだが、表示上「松」の文字が何であるか可読性が悪い。
また、構成ファイルから「暗号化対象」部分以外を取り出すのに「diff」を使用すると、暗号化対象部分にあるこれらの「2バイトコード」行が不一致行となってしまう。「暗号化対象」部分の抽出を行なっているのは、「xpath」なので、「xpath」を調べていると、OS Xには、「/usr/bin/xpath」があるらしい。直接実施してファイル化してみる。

/usr/bin/xpath CertFile.mobileconfig "/plist/dict/array" > CertFile-CryptBody.mobileconfig

「2バイトコード」の変換が行われていない。「xpath」を直接使うこととした。
構成ファイルを暗号化するために必要な一連のコマンドをまとめてみると

「WiFi_11nagb.mobileconfig」構成ファイルを対象とした暗号化プロセス
(1)暗号化対象部分の抽出
「/usr/bin/xpath WiFi_11nagb.mobileconfig "/plist/dict/array" > WiFi_11nagb-EncryptBody.txt」
(2)暗号化対象以外の抽出
「/usr/bin/diff -w --new-line-format='%L' --unchanged-line-format='' WiFi_11nagb.mobileconfig WiFi_11nagb-EncryptBody.txt > WiFi_11nagb-BasicBody.txt」
(3)暗号化対象部分の暗号化とBASE64化
「/usr/bin/openssl smime -encrypt -in WiFi_11nagb-EncryptBody.txt -outform der -CAfile CApub.pem device-cert.pem | /usr/bin/openssl base64 -out WiFi_11nagb-crypted.b64」
(4)「WiFi_11nagb-BasicBody.txt」内の「<key>PayloadContent</key>」を「<key>EncryptedPayloadContent</key>¥n<data>WiFi_11nagb-crypted.b64の内容</data>¥n」で置き換える
(5)置き換えられたテキスト(4)を「WiFi_11nagb-Encrypted.txt」ファイルとして書き出す
(6)署名する
「/usr/bin/openssl smime -sign -in WiFi_11nagb-Encrypted.txt -signer CApub.pem -inkey CAkey.pem -outform der -out WiFi_11nagb-Encrypted-Signed.mobileconfig -nodetach」

OS X標準で使用できる「perl」で作成した


実行



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Synology DS-216Jにサーバ証... | トップ | Synology DS-216JのDSMアップ... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

iPhone」カテゴリの最新記事