Android Mの内部ストレージに登ります

Android 6.0では、メモリカードをフォーマットして、独立したストレージではなく、内部メモリに追加できるようにする機能を導入しました。 これにより、特にいくつかのデータストアを手動でインストールする場合に、2つのデータストアとの混乱を回避できます。 常に公正に購入されたわけではない パーツで提供される大規模なアプリケーション。 ただし、警告が1つあります。この場合、カードへの直接アクセスがすべて厳しくブロックされています。 何かをデバイスに転送する場合は、ファイル転送速度など、シェルに衝撃を受けたカメの歩行ステップに匹敵する、MTPを使用します。 カードはケーブルを介してPCに直接接続できるだけでなく、科学やコンピューターにとって未知の形式にフォーマットされているため、電源を切った電話からカードリーダーを介してカードをマウントすることはできません。







しかし、ルールはそれらを破るために作成されますか? この不cru慎な制限を回避してみましょう。







最初の方法、シンプル:adb push / pull



毎日の使用に推奨。 どうやら、それはルートを必要としません。 必要なのはADBだけです。 知識のある人は、2番目の方法にスクロールできます。







転送では、すべてが簡単です。最初の引数はwhere、2番目の引数はwhereです。 / sdcard-ユーザーがアクセス可能なストレージがAndroidでマウントされる場所、つまり Androidのほぼすべてのデバイスの通常のファイルマネージャーのルートディレクトリ。







$ adb push chunk.bin /sdcard chunk.bin: 1 file pushed. 4.8 MB/s (44040192 bytes in 8.667s)
      
      





受信も同様です。







 $ adb pull /sdcard/chunk.bin chunk2.bin /sdcard/chunk.bin: 1 file pulled. 16.0 MB/s (44040192 bytes in 2.627s) $ cmp chunk.bin chunk2.bin
      
      





主な利点は、非常に満足のいく速度での双方向のデータ交換です(MTPと比較した場合)。 また、このすべての美しさには、素晴らしい進行状況メーターが付いていますが、残念ながらここからは見えません。 何らかの方法でグラフィカルファイルマネージャーに似たものを添付できると思いますが、実際にはそのようなプラグインを扱う必要はありませんでした。 おそらく、Androidが私たちをカードに入れないわけではありませんが、まあ、誰がそれを求めているのでしょうか?







2番目の方法は興味深い:暗号化されたパーティションを手動でマウントする



今回は、スマートフォンとLinuxシステムを搭載したPCへのルートアクセスが必要です。







開始するには、デバイスからカードを引き出し、PCに接続してすぐに内容を確認します。







 $ parted /dev/mmcblk0 print Model: SD SD32G (sd/mmc) Disk /dev/mmcblk0: 31.2GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 17.8MB 16.8MB fat32 android_meta 2 17.8MB 31.2GB 31.2GB android_expand
      
      





素晴らしい、少なくともパーティションテーブルが利用可能です。







肉眼で見ると、ロインは正体不明のファイルシステムを持つ2番目のセクションであることがわかります。 最初のセクションはfat32に完全にマウントされており、美しくも空いているので、忘れることができます。 健康な人によって何が保存されているのかわかりません。







不吉な計画の2番目の部分が鍵です。 はい、データは暗号化されています。partedがターゲットパーティションのFSを検出できなかっただけではありません。 キーを使用すると、すべてがほぼ同じように簡単になります。Androidデバイスのアドレス/data/misc/vold/expand_PARTUUID.keyのバイナリファイルに格納されます。PARTUUIDは、区切り文字なしの小文字の暗号化セクションのUUIDです。 ディレクトリ以外のすべてのユーザーが読み取れないディレクトリ/ data / misc / voldを介してこのファイルにアクセスするために、ルートが必要になります。







 $ partuuid=$(lsblk /dev/mmcblk0p2 -o PARTUUID | tail -1 | tr -d '-') $ adb root $ adb pull /data/misc/vold/expand_$partuuid.key magic.key /data/misc/vold/expand_9d292da2b76a9179118aaa217f23e4a7.key: 1 file pulled. 0.0 MB/s (16 bytes in 0.110s)
      
      





できた 貴重な情報の128ビット。







Merlezonバレエの最後の部分は、接続セクションです。 それを標準のLinux dm-cryptにしましょう。実際には、Android自体によって使用されます。







残念ながら、Androidがどの暗号化方式を使用しているかわからないので、-cipherを未指定のままにして、デフォルトのデフォルトを希望します。







 $ cryptsetup open --type plain --key-file=magic.key --key-size=128 /dev/mmcblk0p2 dm-magic
      
      





彼らは私を非難しません、それは良いことです。 マウント。







 $ mount /dev/mapper/dm-magic /mnt $ ls -l /mnt total 21 drwxrwx--x 33 alpha alpha 3488 Mar 16 08:51 app drwxr-x--x 3 root root 3488 Nov 29 00:34 local drwxrwx--- 4 1023 1023 3488 Nov 29 08:01 media drwxrwx--t 3 alpha 9998 3488 Nov 30 03:02 misc drwx--x--x 3 alpha alpha 3488 Nov 29 00:34 user drwx--x--x 3 alpha alpha 3488 Nov 29 00:34 user_de
      
      





うまくいくようです。 身元不明のUIDは、カードがPCからのものではないことを思い出させてくれるので、ここで特別なことをしなければより良いでしょう。







ディレクトリを掘り下げると、メモリカードに保存されているアプリケーションのデータだけでなく、SDカードの内容を直接見ることができます。これは、/ sdcardで最初の方法でスリップしました。 ディレクトリ/ mnt / media / 0にあります。







それだけです、いい選択です。








All Articles