CyanogenMod 12および12.1 「電話の暗号化」設定が壊れており、かなり長い間使用されていました。他の方法で電話を暗号化する方法はありますか?/ dataディレクトリが暗号化された電話にCMをサイドロードできますか?データを安全かつ健全に保つ他の方法はありますか?私が取り組んでいるデバイスはVerizon LG G3です。
CyanogenMod 12および12.1 「電話の暗号化」設定が壊れており、かなり長い間使用されていました。他の方法で電話を暗号化する方法はありますか?/ dataディレクトリが暗号化された電話にCMをサイドロードできますか?データを安全かつ健全に保つ他の方法はありますか?私が取り組んでいるデバイスはVerizon LG G3です。
回答:
シェルでユーザーデータパーティションを暗号化するために使用できる低レベルのコマンドがあります。免責事項/警告:次の手順でデータを消去します。必要に応じてバックアップを作成してください。
次の手順に従って、あなたがすべきであるあなたのデータパーティションを消去でき、それがその後(工場出荷時のリセットに類似)暗号化があります。
adb root
続けてを入力しadb shell
ます。adb logcat
別のシェルで呼び出してログを監視します。このコマンドを入力し、パスワードを入力してEnterキーを押します。これにより、実際にパスワードが設定されます。このコマンドは、1行の入力(head -1
)を読み取り、Enter(tr -d '\n'
)から末尾の改行を取り除いて、16進表記(hexdump ...
)に変換します。恐ろしいように見える場合、またはこのコマンドの動作がわからない場合は、以下を参照してください。
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
(Volume Daemon)vdc
と通信する上記のコマンド( "Volume Daemon Client" vold
)にはcryptfs
、暗号化などのいくつかのサブコマンドがあります。enablecrypto
:サブコマンドは、2つのモードがありますwipe
(クリア/data
完全に)とinplace
(元のコピー中におそらく暗号化を適用する/data
コンテナ内)。
次に、Android 5.0以降、4つのオプションが利用可能になりました。そのうちの1つpassword
は、単一の16進シーケンスをキーとして受け入れるものです。パスワードがある場合はこのようにfoo
、その後、16進数表現である666f6f
(f
ある66
、進にo
されて6f
参照、http://www.asciitable.com/を)。このためのコマンドは次のとおりです。
vdc cryptfs enablecrypto wipe password 666f6f
これは、メタデータを格納するための個別のパーティションを持つNexus 5(コード名hammerhead、cm-12.1-20150814を実行)でテストされました。userdataパーティションにフラグセットがあり、その後にパーティションへのパスまたは特別な文字列が続くことが重要です。私のファイルの(省略された)行:encryptable
footer
/fstab.hammerhead
/dev/block/platform/msm_sdcc.1/by-name/userdata /データ ext4の...、チェック、暗号化可能 = /dev/block/platform/msm_sdcc.1/by-name/metadata
特別な文字列footer
(encryptable=footer
)が存在する場合、データパーティションの最後にある16 KiBを使用して暗号化メタデータが保存されます。
詳細については、以下を参照してください。
付録:暗号化コマンドを実行した瞬間から終了して再起動するまでのlogcatの抜粋(最後に関係のないグラフィックスメッセージを省略)。このNexus 5にはハードウェアアクセラレーション暗号化(QSEECom)があることに注意してください。
--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager( 184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs ( 186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs ( 186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs ( 186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs ( 186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:18.058 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs ( 186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs ( 186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:18.797 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs ( 186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs ( 186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:20.796 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs ( 186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs ( 186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs ( 186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs ( 186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs( 186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs( 186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs( 186): Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs( 186): Block size: 4096
08-16 12:57:21.448 I/make_ext4fs( 186): Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs( 186): Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs( 186): Inode size: 256
08-16 12:57:21.448 I/make_ext4fs( 186): Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs( 186): Label:
08-16 12:57:21.449 I/make_ext4fs( 186): Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs( 186): Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs( 186): Block groups: 103
08-16 12:57:21.459 I/make_ext4fs( 186): Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs( 186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs( 186): Total files: 0
08-16 12:57:21.465 I/make_ext4fs( 186): Total bytes: 0
08-16 12:57:42.926 D/Cryptfs ( 186): Successfully created filesystem on /dev/block/dm-0
私にとって、元の答えは期待どおりに機能しませんでした。正常に暗号化されたように見えましたが、UIはすぐに戻ってきて、「暗号化」設定はデバイスが暗号化されていることを示していませんでした。次に、updateで指定されたコマンドを適用しましたが、それでも機能しませんでした。次に、データパーティションのサイズを縮小すると、暗号化に成功しました。すなわち
mount | grep data
データパーティションの実際のブロックデバイスを検索します。それがそうだとしましょう/dev/block/mmcblk0p26
。
umount /data
ext-toolsが機能するようにします。
e2fsck -f -p /dev/block/mmcblk0p26
今後のサイズ変更で問題が発生しないようにします。
tune2fs -l /dev/block/mmcblk0p26
ブロック数を取得します。それがそうだとしましょう3057395
。
resize2fs /dev/block/mmcblk0p26 3057375
つまり、元のブロック数から20などの十分な量を差し引きます。
e2fsck -f -p /dev/block/mmcblk0p26
誤って配置されたiノードを見つけました。
また、/system
を取得するためにパーティションをマウントする必要がありましたresize2fs
。私のシステムでは、そのバイナリは64ビットバージョンのlibcにリンクされていましたが、私が使用したTWRPはそれを提供していないようです。したがって、コマンドの前にを付ける必要がありましたenv LD_LIBRARY_PATH=/system/lib64
。
以下のようCM12.1 2015年10月15日の答え Lekensteynによっては動作しなくなります。
どうやら、ファイルシステムの作成に必要なmkfs.f2fsはからに移動され/system/bin/
ました/sbin/
また、SELINUXと競合する必要があります。つまり、さらにいくつかの手順を実行する必要があります。
adbルート
adbシェル
setenforce 0
mount -oremount、rw / system
ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
vdc cryptfs enablecryptoワイプパスワード666f6f
別の アップデート-CM13 2016年1月9日ビルド、Nubia Z7 Max、NX505J電話を使用
ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
ファイルが再びここに存在するため、このコマンド()は不要になりました。シンボリックリンクを作成する必要はありません。
このコマンドはHEXである必要がなくなり、16進数を入力するとPWは16進数になります。
cryptfs enablecrypto wipe password 666f6f
-これは文字通り私のためのパスワードを作成しません666f6f
でしたfoo
メタデータに必要な追加のブロックを通過したので、私はまだこの問題を調査しています。次に、GUIと手動で両方を暗号化するコマンドを実行すると、1回のブートサイクルでしか実行できない暗号化が発生するという事実を回避する必要があります。暗号化が成功したら、報告します。
現在、私は暗号化し、それは正常に動作し、私は初めて起動し、電話は暗号化されていると言います。TWRPを使用すると、/ dataが暗号化されていることを確認できますが、TWRPで試行したHEXパスワードとASCIパスワードはどちらも機能しません。次の再起動時に、Android OSはCM13を完全に起動できません。正しい暗号化パスワードがあることを確認し、暗号化されたブートを1つだけ取得します。最初の暗号化された起動が成功した後、それはその後の起動サイクルのアニメーションステージにロックします。セキュリティのベストプラクティスでは、AES256電話暗号化を推奨しています。
Moto X 2013でCyanogenmod 12.1を実行していると、暗号化することもできませんでした。最後に、私はこれらのステップで成功しました:
su
、ルートアクセスを確認します。setenforce 0
Artの回答とこのフォーラムスレッドを組み合わせることで、このソリューションに到達しました。
6時間の精神的な痛みと汗の後で、自分にとって有効な解決策を見つけたかもしれません。そしてそれも事故でした。CyanogenMod 13.0とAndroid 6.0.1を搭載したSamsung S4 Miniでこれを行いました。ここで重要な重要な要素は、クリーンな電話(新しいファームウェアとルート化されていない)から始めたことです。これは、以前にルート化された電話はまったく機能しないためです。
私はFirelordとLekensteynの問題の解決策を使用しましたが、コマンドから1行を忘れることができました。
ここに私がそれをした方法があります:
私はオンにAndroidのデバッグおよびルートのアクセスにのみADBに開発者向けのオプション。
ADBコマンドプロンプトでは、adb root
and adb shell
コマンドを使用しました。その後、別のADBコマンドプロンプトを開いてadb logcat
コマンドを使用しました。
最初のADBシェルでは、setenforce 0
それ以降に進みましたvdc cryptfs enablecrypto wipe password YOUR-PASSWORD
。
重要なお知らせ:パスワードコマンドは、使用しているAndroidバージョンと異なる場合があります。Android 5.Xを使用している場合は、16進法を使用する必要があります(Chr行はパスワードの記号で、16進値はHx行にあります)。Android 6.Xを使用している場合、YOUR-PASSWORDはそこで入力したパスワードになります。
お気づきのように、mount -oremount,rw /system
コマンドを使用するのを忘れました。その後、画面が真っ暗になります。私が見たとき、ログのあるADBシェルが停止して終了したので、電話を再起動しました。しかし、誰にとっても問題は、CyanogenModが読み込まれないことです。そして私はそれを非常に簡単に修正することができました:
これでうまくいきます。最初に、電話のセットアップが表示されたら、しばらく待ちます。急いでセットアップウィザードを起動すると、少しクラッシュする可能性がありますが、クラッシュすると自動的に再起動します。
CyanogenModとAndroid暗号化がどのように機能するかについての非常に小さな知識の中で、フォーマット中に重要なCyanogenファイルまたはAndroidファイルが削除されて、起動できなくなると思います。
暗号化が私の電話で機能しませんでした(SGS5; CM13、TWRP 3.0.2-2)-常に黒い画面が表示されました。
シェルコマンドを使用したくなかったので、別の方法を見つけました。
SuperSUをインストールし、アプリでそれをアンインストールしてから、SU-Removerをフラッシュしました。
その後、メニューから暗号を使うことができました。
警告: