内側を見て、ADBバックアップ作成されたファイルを調整する方法はありますか? - backup フィールド と adb フィールド android 関連 問題

Is there a way to look inside and modify an adb backup created file












43
vote

問題

日本語

adb backup で、Galaxy Nexusのバックアップを作成しました。結果のファイルはbackup.dbという名前で、どういうわけか暗号化されています。

バックアップを復元したいが、 998877666544335 の復元になると停止します。 <コード> 99887766544336 を使用して、復元プロセス中に<コード> 99887765544337 がクラッシュすることを見つけて見つけました。

バックアップのデータにアクセスし、連絡先データベースを削除してすべての携帯電話に戻します。バックアップからデータを復元する他の方法はありますか?

     
 

回答リスト

57
 
vote

私はこれに取り組んできました。私はここでここで私の結果を「コミュニティウィキ」としての2つの理由で答えています。まず、他の誰かが参加したい場合は、話す場所があります。第二に、私がこのプロジェクトから引き離すと、他の誰かが作業を開始するためのヒントがあるでしょう。

ホスト上のバックアップロジックは、 https://に完全に含まれています。 github.com/android/platform_system_core/blob/master/adb/commandline.cpp 。 998877665444333 。この関数は eerm> simple:コマンドラインオプションを検証し、コマンドをAS-IS-IS-IS-IS-ISEに電話機のADBデーモンに送信し、電話の出力をファイルに書き込みます。エラーチェックさえもありません。たとえば、電話でバックアップを拒否した場合、<コード> 998877666544334 は空のファイルを書き出します。

電話機では、バックアップロジックは https://github.com/android/platform_system_core/blob/master/adb/services.cpp 。この関数は、ホストからのコマンドが<コード> 9988777666554336 であることを識別し、 9988776654337 に渡します。 Android / platform_frameworks_base / blob / master / cmds / bu / bu "rel =" noreferrer "> Trivial Shell Script 新しいAndroidアプリプロセスのメインクラスとして<コード> 99887766544338 を起動します。これは、 99887766654339 を呼び出して、バックアップサービスを<コード> 998877666666666543310 として取得し、 9988776666543311 を呼び出し、それを静止していないファイル記述子(非常に間接的に)接続されている<コード> 9988776666433312 ファイルのホスト上のファイルに。

コントロールは com.android.server.backup.backupManagerService は、ユーザーにバックアップを確認/拒否するようにGUIをポップアップします。ユーザーがそうすると、<コード> 99887766655443314 (同じファイル)が呼び出されます。ユーザーが要求を承認した場合、バックアップが暗号化されている場合は、<コード> adb uninstall com.google.android.apps.maps 5 は、メッセージを<コード> 998877665444333317 に渡します。インスタンス化してキックオフをオフにして(href = "https://github.com/android/platform_frameworks_base/blob/8e7057cf3824d1421a12abad7a2ba8b07e877c6/services/backup/java/com/android/server/backup/backupManagerService .java#l4004 "REL =" NOREFERRER ">同じファイル、4004 書き込み時点で

最後に、行4151 と行4330 。

最初に、<コード> backup20 は4つまたは9つのASCII回線で構成されているヘッダーを書き込みます。

  1. <コード> restore1
  2. バックアップ形式のバージョン:現在 backup22
  3. 998877655443323 99887766543324
  4. の場合
  5. 暗号化方法:現在<コード> 998876655443325 または<コード> 998877665443326
  6. (暗号化されている場合)、Hexでエンコードされた「ユーザーパスワード塩」
  7. (暗号化されている場合)、Hexでエンコードされた「マスターキーチェックサムソルト」
  8. (暗号化されている場合)、10進数として「使用されているPBKDF2ラウンド数」:現在<コード> 998876655443327
  9. (暗号化されている場合)、HEXでエンコードされた「ユーザーキーのIV」、すべてのCAPS
  10. (暗号化されている場合)、Hexでエンコードされた「マスターIV +キーBLOB」、すべてのCAPS
  11. でエンコードされています。

    実際のバックアップデータは、(圧縮と暗号化に応じて)<コード> 9988877665443328 、<コード>、<コード>、<コード>、<コード>、<コード>、または<コード>、または<コード>、または<コード>、または<コード> 99887666554443333 。

    todo :TAR出力を生成するコードパスを書き込みます - エントリが正しい順序にある​​限り、Tarを使用することはできます(下記参照)。

    tarアーカイブ形式

    アプリデータはApp / Directory、STの下に格納されています _manifestファイル、apk(要求されている場合)は、a / db / db / db / sp /の共有環境設定で、a / appファイル内のAPK(要求された場合)。外部ストレージバックアップを要求した場合(-Sharedオプションを使用)、外部ストレージファイルを含むアーカイブに共有/ディレクトリがあります。

     <コード> backup32  

    暗号化の詳細

    1. AES 256キーは、ランダムに生成された512ビット塩で10000ラウンドのPBKDF2を使用してバックアップ暗号化パスワードから派生しています。
    2. AES 256マスターキーはランダムに生成されています
    3. マスターキー 'checksum'は、新しいランダムに生成された512ビット塩で10000ラウンドのPBKDF2を介してマスターキーを実行して生成されます。
    4. ランダムなバックアップ暗号化IVが生成されます。
    5. IV、マスターキー、およびチェックサムは連結され、1に派生したキーで暗号化されています。結果のBLOBは、ヘッド文字列としてヘッダーに保存されます。
    6. 実際のバックアップデータはマスターキーで暗号化され、ファイルの終わりに追加されます。
    7. サンプルパック/アンパックコード実装(プロダクション/使用)tarアーカイブ: https://github.com/nelenkov/android-backup-extractor

      ここでの詳細: http://nelenkov.blogspot.com /2012/06/unpaking-android-backups.html

      梱包/解凍および壊れたアーカイブの固定のためのPerlスクリプト:

      http://forum.xda-developers.com/ShowThread。 PHP?P = 27840175#Post27840175

 
 
         
15
 
vote
vote
ベストアンサー
 

バックアップを作成するときに指定した場合を指定しない限り、ファイルは暗号化されません。しかし、圧縮されています(デフレートを使用)。 Androidソース(COM / Android / Server / BackupManagice.java)コードを見ることで、正確なフォーマットを調べることができます。そして、技術的には特定のデータを抽出できるはずです。ただし、IIRC、一部のファイルの整合性チェックがありますので、それはただそれからのデータを削除するだけではおそらく機能しません。残念ながら 9988776554432 コマンドは、特定のApp / Packageのみを復元するか、パッケージを除外するオプションを持っていないようです。

 
 
         
7
 
vote

Nikolay Elenkov 。しかし、私はすでにそのままでそれをここでパッケージ化するソフトウェアをすでに開発するように追加する必要があります。 http:// SourceForge。ネット/プロジェクト/ adbextractor /

パッケージには、JavaツールとPerlツールの両方が含まれています。私は自分自身がJavaを介して任意の日を好むので、私はPerlコードを抽出し、それらが実行可能なものであることを確認し、必要なPerlライブラリをインストールし、 998877666543333 をADBバックアップファイルに対して実行して変換します。問題なしのTARまたはGZIPのtarファイル。

Bash 3で1つのライナーを形成したことさえ、gzipped tarファイルに直接ADBバックアップを行うことを可能にする:

<事前> <コード> backup34

それが役立つことを願っています。

 
 
   
-4
 
vote

既存のバックアップファイルを探るために、<a href="https://www.adb-backup.com/www.adb-backup.com/www.adb-backup.com/www.adb-backup.com/www.adb-backup.com http://www.adb-backup.com 、「DD」、「tar」、... </p>なしでは簡単です。

データはこのサーバには保存されません。 DD / TARで操作せずにバックアップを表示する、または追加のソフトウェアをインストールすることなく、このオンラインサービスを開発しました。私はwww.adb-backup.com

を作っています

 
 
       

関連する質問

1  私はOdinで回復しました、なぜ私の電話機の起動はなぜ弓ではありませんか?  ( I flashed recoveries with odin why doesnt my phone boot bow ) 
Samsung S3 Android携帯電話、根強い、株式ファームウェア。 年代順に: FastBootを使用できませんでしたが、USBデバッグをオンにしました。 私はOdinを使って複数の回復を点滅させましたが、私は成功したとは思わない、私は電話が最初に根...

7  再起動なしでADBを使用して「優先ネットワークモード」を変更する方法  ( How to change preferred network mode using adb without reboot ) 
「GSM / WCDMA」(0)から「WCDMAのみ」(2)までの携帯電話(CM 12、Stock 4.2、両方の根本的なネットワークモード)を変更しようとしています。コマンドラインのみを使用するだけです。この回答コマンドを使用して 9988776654433...

49  'su'を入力せずにrootとしてADBシェルを実行する方法はありますか?  ( Is there a way for me to run adb shell as root without typing in su ) 
9988776665544332 を入力せずにrootとしてADBシェルを実行する方法はありますか?私はシェルに入らずにrootアクセスを持つことができたいです。 ...

0  Amazon 4K Fire TVスティックでの起動ループ  ( Boot looping on amazon 4k fire tv stick ) 
私はAmazon 4K Fire TVに問題があります。 昨日、私は私たちの家の中で私のリモコンを別の棒にペアしなければならなかった(誰かが彼ら自身のリモートを忘れたから)それ以来、スティックはオレンジ色のアマゾンフォントと白い背景を起動していますテレビ'。...

1  Xiaomi M8SE FastBootループTWRPをインストールしようとします  ( Xiaomi m8se fastboot loop when trying to install twrp ) 
TWRP(Xiaomi MI 8SEの最新バージョン)をインストールしようとする場合は、ADB(FastBoot Flash Recovery "C:¥Program Files(x86)¥、FastBoot¥TWRP.IMGを使って最新のTWRPをインスト...

3  私のNexus 4のADBに関する問題(不正な電話)  ( Problem with adb on my nexus 4 unauthorized phone ) 
CMDでADBデバイスを実行するときは、私の電話が不正であると言います。 RSAの指紋プロンプトと関係があるようです。私はそのようなプロンプトを取得したことがありません。はい、私はPTPモードで実行されていて、デバッグが有効になっています。私はインターネット...

3  「ADB再マウント」は在庫携帯電話で使用できます(未承認)。  ( Can adb remount be used on a stock phone unrooted ) 
998877666544330 を標準のファームウェアで使用することはできません。そうでなければ、装置を根付せずにシステムに書き込み/システムを書き込み可能にするように強制するための別の方法はありますか? ...

13  "ADB PULL"で新しいファイルだけを引く方法? (Android SDKユーティリティ)  ( How to pull only newer files with adb pull android sdk utility ) 
コマンド "ADB PULL / SDCARD /" MY Android Phoneの内部メモリのすべての内容を現在のローカルディレクトリにコピーできます(および「ADB PULL / MNT / EXTSDCARD /」は外部SDと同じです。カード)。しか...

3  MLS / SPCコードをテストできるADBシェルコマンド? [閉まっている]  ( Adb shell command that can test mls spc codes ) 
この質問は将来の訪問者を助けることはほとんどありません。それは、小さな地理的地域、特定の瞬間、またはインターネットの世界的な聴衆に一般的に適用されない非常に狭い状況に関連しています。この...

0  PCからWiFiに接続するためのAndroidタブレットを強制する  ( Forcing an android tablet to connect to a wifi from pc ) 
houth前、私はタブレット(Coby Kyros MID9742)を持っていました。 HDMIケーブルを介したビデオプレーヤーとしてのVideo Playerとしての使用のために、リモコンとして、Projectorへのビデオプレーヤーとして使用しようとし...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有