"অ্যাডবি ব্যাকআপ" এর মাধ্যমে তৈরি একটি সম্পূর্ণ ব্যাকআপ থেকে আপনি কীভাবে কোনও অ্যাপের ডেটা বের করবেন?


117

adb backupএকটি এনক্রিপ্ট করা ব্যাকআপে সমস্ত ফাইল ব্যাক আপ করার জন্য আমি আমার নেক্সাস 7 ব্যাক আপ করছি । আমি দেখতে পাচ্ছি যে আপনি এর মাধ্যমে ব্যাকআপ থেকে পুনরুদ্ধার করতে পারেন adb restoreতবে এটি ডিভাইসে আমার সমস্ত বিদ্যমান ডেটা মুছবে।

এই এনক্রিপ্ট করা ব্যাকআপ ফাইল থেকে আমি কীভাবে কোনও অ্যাপের ডেটা বের করব?


উত্তর:


113

অন্যের রেফারেন্সের জন্য, .ab ফাইল ফর্ম্যাটটির কিছু পটভূমি এখানে রয়েছে।

Android ব্যাকআপ (* .ab) ফাইল একটি সংকুচিত টিএআর ফাইল। এটি ডিফল্ট অ্যালগরিদম ব্যবহার করে সংকুচিত হয় । তার উপরে, সেখানে AES এনক্রিপশন ব্যবহার করা যেতে পারে । আপনি ব্যাকআপ তৈরি করার সময় এটি নির্ধারিত হয়, আপনি যদি কোনও পাসওয়ার্ড প্রবেশ করেন তবে ব্যাকআপটি এনক্রিপ্ট করা হবে, অন্যথায়; কোনও এনক্রিপশন নেই, এটি কেবল সংক্ষেপিত।

ফাইলের হেডার একটি সাধারণ ডিফল্ট সংরক্ষণাগার থেকে কিছুটা আলাদা। এটিতে ব্যাকআপ সম্পর্কে তথ্য রয়েছে এবং এটি নীচের মত দেখাচ্ছে:

ANDROID BACKUP
1
1
none

প্রথম লাইনটি "ম্যাজিক" লাইন । পরবর্তী লাইনটি অ্যান্ড্রয়েড ব্যাকআপ ফাইল ফর্ম্যাটের সংস্করণ। পরবর্তী লাইনটি একটি বুলিয়ান (সত্য বা মিথ্যা, 1 বা 0) নির্দেশ করে যা ফাইলটি সংকুচিত হয়েছে। শেষ লাইনটি এনক্রিপশনের ধরণ। এই উদাহরণটি কোনও এনক্রিপশন ব্যবহার করছে না। যদি কোনও পাসওয়ার্ড থাকে তবে লাইনটি "AES-256" পড়বে। এর পরে এনক্রিপশন সাইফার। যদি কোনও পাসওয়ার্ড না থাকে তবে ডিফল্ট "সংরক্ষণাগার" শুরু হয়।

এটি জাভা ডিফলার ব্যবহার করে সংকুচিত করা হয় । বিকাশকারীদের দৃষ্টিকোণ থেকে যা জাভা ছাড়াও অন্য কিছু বের করতে চাইলে সমস্যা সৃষ্টি করে। আমি অ্যালগোরিদম ব্যবহার করে এটি ডিলেট করতে পারে এমন কোনও কিছুই খুঁজে পাইনি, যদিও আমি যা কিছু পেয়েছি (যেমন সি # এর জন্য) "স্পেক" অনুসরণ করার কথা রয়েছে।

এই কথাটি বলে, নিকোলে এলেনকভের লিখিত অ্যাপাচি ২.০ লাইসেন্সের আওতায় একটি ওপেন সোর্স প্রকল্প রয়েছে যা আপনাকে ডাব ফাইলটিতে .ab বের করতে দেবে।

ব্যবহার:

java -jar abe.jar unpack <backup.ab> <backup.tar> <password>

কীভাবে সত্যই এটি ব্যবহার করবেন তা আপনি যদি নিশ্চিত না হন (যা এই উত্তরটির বাইরে নয়) ড্রয়েড এক্সপ্লোরার v0.8.8.7 এর পরবর্তী সংস্করণ ( এখানে উপলভ্য ) ঠিক ঠিক এক্সপ্লোরার থেকে এবং আরও কিছু করার অনুমতি দেবে। আপনি আমার ব্লগে ফিচারগুলি সম্পর্কে আরও পড়তে পারেন (হ্যাঁ, আমি জানি, নির্লজ্জ প্লাগ I

মোড়ক খোলা


1
আমার খ্যাতি থাকলে আমি আপনাকে ভোট দিতাম, আমার manশ্বর মানুষ ধন্যবাদ!

আপনাকে স্বাগতম আমি কেবলমাত্র সে সমস্ত তথ্যই জানি কারণ এটি এমন একটি বৈশিষ্ট্য যা আমি সম্প্রতি ডিড্রয়েড এক্সপ্লোরার কোড বেসে যুক্ত করেছি, সুতরাং আমাকে এটি নিয়ে কিছু গবেষণা করতে হয়েছিল।
রায়ান কনরাড

হাই রায়ান, ড্রয়েড এক্সপ্লোরার ব্যবহার করার চেষ্টা করেছিল তবে এটি ইনস্টল থাকা সত্ত্বেও অ্যান্ড্রয়েড এসডিকে অবস্থান সম্পর্কে অভিযোগ করা শুরু করতে ব্যর্থ হয়েছে এবং আমি সঠিক পথ সরবরাহ করছি।
ওমর ফারুক খাজা

@ উমারফারউখখাজাডা ড্রয়েড এক্সপ্লোরারের জন্য প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন at শেষ প্রশ্ন / এ আপনার সমস্যার সমাধান করে।
রায়ান কনরাড

ঠিক আছে, প্রাসঙ্গিক 'com.app.name' ফোল্ডারটি টার থেকে বের করেছেন তবে আমি কীভাবে অ্যাপটির ডেটা পুনরুদ্ধার করতে এটি ব্যবহার করব? কেবলমাত্র ফোল্ডারটি এসডিকার্ড / অ্যান্ড্রয়েড / ডেটা / এ অনুলিপি করা কাজ করছে বলে মনে হচ্ছে না ...
পেলস

90

বা একটি এক-লাইনার সহ:

( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) |  tar xfvz -

2
নিস! আপনার কাছে কি "প্যাক" এর সমতুল্য রয়েছে (সঙ্কুচিত ডিরেক্টরি গাছটি নিতে এবং একটি .db ফাইল তৈরি করতে)?
দৈনিকলেগ

4
আপনি উত্তর একটি ব্যাখ্যা যোগ করতে পারেন?
ভাগ্যবান

2
এটি সেরা উত্তর: ডি পুরোপুরি সূক্ষ্মভাবে কাজ করে! এখন তোলা হচ্ছে।
xdevs23

16
ব্যাখ্যা: লেখক কমান্ডের .tar.gzসাথে একটি ফাইলের জন্য একটি স্ট্যান্ডার্ড জালিব ফাইল শিরোলেখ তৈরি করে printf( 0x1F 0x8Bএটি একটি স্বাক্ষর, 0x08সংকোচন পদ্ধতি, 0x00পতাকা এবং 4 এক্স 0x00টাইমস্ট্যাম্প), তারপরে backup.abঅফসেস 25 ডি থেকে শুরু করে এই শিরোনামটিতে ফাইলের বিষয়বস্তু সংযোজন করা হয়। এই জাতীয় স্ট্রিমটি একটি বৈধ .tar.gzফাইল এবং tar xfvzকমান্ডটি এটিকে স্বীকৃতি দেয় যাতে এটি স্ট্রিমটিকে সাফল্যের সাথে সঙ্কুচিত করতে পারে।
অ্যান্টোনোন

3
আমি এডিবি 1.0.36 (পরিবর্ধন ও পরিবর্তন তালিকা 1.7.0.0 + + r33-2) সঙ্গে একটি ব্যাকআপ তৈরি এবং এই পদ্ধতি zgip থেকে একটি ত্রুটি উৎপন্ন:invalid compressed data--format violated
Rache

31

আরও একটি বিকল্প হ'ল ব্যবহার করা bash, catএবং gunzip( gzip)।

সম্পূর্ণ প্রক্রিয়াটি এটি হতে পারে ( একটি এনক্রিপ্ট করা ব্যাকআপ সহ ):

  1. একটি অ্যাপ্লিকেশন এর ডেটা ব্যাকআপ (উদাহরণস্বরূপ " KitKat জন্য DNS ওভাররাইড "):

    $ adb backup -f net.mx17.overridedns.ab -noapk net.mx17.overridedns
    Now unlock your device and confirm the backup operation.
    
  2. সংকুচিত ডেটা বের করুন

    $ dd if=net.mx17.overridedns.ab bs=1 skip=24 > compressed-data
    1285+0 records in
    1285+0 records out
    1285 bytes (1,3 kB) copied, 0,00745877 s, 172 kB/s
    
  3. সংকুচিত ডেটা সংক্ষেপিত করুন

    $ printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" \
        | cat - compressed-data | gunzip -c > decompressed-data.tar
    gzip: stdin: unexpected end of file
    
  4. তারার ফাইলটি "অবারিত"

    $ tar xf decompressed-data.tar
    

4
"ফাইলের অপ্রত্যাশিত পরিণতি" আশা করা যায়?
hft

2 এ নিষ্কাশনটি আশ্চর্যজনকভাবে একটি এনক্রিপ্ট করা ফাইলটিতে কাজ করেছিল। এটা কিভাবে সম্ভব? এর পরে ডিকম্প্রেশনটি ব্যর্থ হয়েছিল gzip: stdin: invalid compressed data--format violated। আমি ধরে নিলাম নিষ্কাশন সফল হয়েছে, হিসাবে ddরিপোর্ট 22763821+0 records in 22763821+0 records out
টম রাসেল

4

আর একটি বিকল্প এই এক্সডিএ থ্রেড থেকে পার্ল অ্যাডবিব্যাকআপআরটাইনগুলি ব্যবহার করছে । যদিও তাদের কয়েকটি প্রয়োজনীয়তা রয়েছে: স্পষ্টতই পার্ল, প্লাস libterm-readkey-perl, libcrypt-cbc-perlএবং libcrypt-pbkdf2-perl(যদি আপনার ব্যাকআপগুলি এনক্রিপ্ট করা না থাকে তবে আপনি backupdecrypt.plযেখানে অন্তর্ভুক্ত হয়েছেন তার 103 লাইনটি কেবল মন্তব্য করে শেষ নির্ভরতা এড়িয়ে যেতে পারেন - আমার পক্ষে কাজ করে)।

ব্যবহার বেশ সহজ:

./backupdecrypt.pl [options] <backupfile.ab> <outfile.tar>

ফলস্বরূপ .tarফাইলটি অন্য যে কোনও টার্বলের মতো তদন্ত করা যায়। এর কাঠামোটি কমপক্ষে একটি দিকটিতে বেশ আকর্ষণীয়: এটি ফাইলগুলি যেখানে নেওয়া হয়েছিল (সেইগুলি নয় /data/data/com.app.name/databases/whatever.db, পরিবর্তে apps/com.app.name/db/whatever.db) যেখানে প্রকৃত পথগুলি প্রতিফলিত করে না - যা কোনও ডিভাইসে অ্যাপ্লিকেশন ব্যাক-আপকে নির্দেশ করে / রমটিতে পুনরুদ্ধার করা হতে পারে ঝামেলা ছাড়াই অন্য কোনও ডিভাইস / রম, যেমন adb restoreসত্যিকারের পাথগুলি নিজেই খুঁজে বের করতে হবে।


: অন্য সরঞ্জাম (কিছুটা ভালো বজায়) যে এই আছে এর github.com/nelenkov/android-backup-extractor
ঢাকনা

ধন্যবাদ, @ লিড! আমি আমার সরঞ্জাম আডেবার (অ্যান্ড্রয়েড ডিভাইস ব্যাকআপ অ্যান্ড রিপোর্ট) এর সাথে একটি সামান্য শেল-স্ক্রিপ্ট (প্রায় এক-লাইনার) অন্তর্ভুক্ত করেছি , যা এডিবি ব্যাকআপগুলিকে ( .ab) .tar.gzসংরক্ষণাগারগুলিতে রূপান্তর করে :)
ইজি

4

অন্যের তথ্যের উপর ভিত্তি করে, এখন আমি জানি যে ব্যাকআপ ফাইলটি কেবলমাত্র একটি প্রিফিক্সড ডিফ্লেটেড (জিজেপ) স্ট্রিম, এই তথ্যের উপর ভিত্তি করে এই সাধারণ প্রোগ্রামটি এটি আপনার জন্য আনপ্যাক করতে পারে:

import java.io.*;
import java.util.zip.*;

/** Run: javac unab.java && java unab backupfile.ab */
public class unab {
    private static final int BACKUP_HEADER_LENGTH = 24;
    public static void main(String[] args) throws IOException {
        InputStream in = new FileInputStream(args[0]);
        try {
            OutputStream out = new FileOutputStream(args[0] + ".tar");
            try {
                if (in.skip(BACKUP_HEADER_LENGTH) != BACKUP_HEADER_LENGTH) {
                    throw new IOException("Unexpected end of file while skipping backup header.");
                }
                byte[] buffer = new byte[100 * 1024];
                int count;
                InputStream zip = new InflaterInputStream(in);
                while ((count = zip.read(buffer)) > 0) {
                    out.write(buffer, 0, count);
                }
            } finally {
                out.close();
            }
        } finally {
            in.close();
        }
    }
}

আমি এটি লিখেছিলাম কারণ উপরে উল্লিখিত ইউনিক্স সরঞ্জামগুলির মধ্যে আমার কাছে নেই এবং এটি সাইগউইন বা অন্যান্য সরঞ্জাম ইনস্টল করার চেয়ে সহজ ছিল।

সুবিধা :

  • ক্রস-প্ল্যাটফর্ম
  • সরল (কোনও গৌণ প্যারামিটার নেই)
  • পাইপিং সরঞ্জামের প্রয়োজন নেই

অসুবিধাগুলি :

  • একটি জেডিকে দরকার (যা সম্ভবত আপনার কাছে ইতিমধ্যে রয়েছে কারণ আপনি অ্যান্ড্রয়েড এসডিকে মেস করছেন)
  • এনক্রিপ্টড ব্যাকআপগুলির জন্য কোনও সমর্থন নেই
  • ফলাফলযুক্ত ফাইলটি বের করার জন্য কিছু দরকার (আমি মোট কমান্ডার ব্যবহার করি)

এটিকে একটি কমান্ড লাইন সরঞ্জাম তৈরি unab.batকরতে সামগ্রীতে: java -cp "%~dp0." unab %*এবং ডিরেক্টরিটি তৈরি করুন PATH


4

অন্তর্নিহিত প্রশ্নটিও হ'ল, কীভাবে কোনও একক অ্যাপ্লিকেশন ডেটা পুনরুদ্ধার করবেন, আমি এই নিফটি স্ক্রিপ্টটি উল্লেখ করতে চাই, এটি সিঙ্গেল-অ্যাপ.এব ফাইলগুলিতে প্রদত্ত পুরো ব্যাকআপ.এবকে বিভক্ত করে:

https://sourceforge.net/projects/adb-split/

এটির জন্য জার ফাইলগুলি দরকার: অ্যাবে.জার এবং টার-বিন-স্প্লিট.জার যা এখানে পাওয়া যাবে:

এটি কমপক্ষে আমার টেস্টকেসের জন্য কাজ করেছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.