Chỉ để tham khảo của người khác, đây là một số nền tảng về định dạng tệp .ab.
Tệp sao lưu Android (* .ab) là tệp TAR được nén . Nó được nén bằng thuật toán DEFLATE . Trên hết, có thể sử dụng mã hóa AES . Điều này được xác định khi bạn tạo bản sao lưu, nếu bạn nhập mật khẩu thì bản sao lưu được mã hóa, nếu không; không có mã hóa, nó chỉ được nén.
Đầu trang của tệp khác một chút so với tệp lưu trữ DEFLATE bình thường. Nó chứa thông tin về bản sao lưu và trông như sau:
ANDROID BACKUP
1
1
none
Dòng đầu tiên là dòng "Magic" . Dòng tiếp theo là phiên bản của định dạng tệp Sao lưu Android. Dòng tiếp theo là boolean (đúng hoặc sai, 1 hoặc 0) cho biết nếu tệp được nén. Dòng cuối cùng là loại mã hóa. Ví dụ này không sử dụng bất kỳ mã hóa nào. Nếu có mật khẩu, dòng sẽ đọc "AES-256". Sau đó là mật mã mã hóa. Nếu không có mật khẩu, thì "kho lưu trữ" DEFLATE bắt đầu.
Nó được nén bằng cách sử dụng Java Deflater . Điều này, từ góc độ nhà phát triển, gây ra vấn đề nếu bạn muốn sử dụng bất cứ thứ gì ngoài Java để giải nén nó. Tôi đã không thể tìm thấy bất cứ thứ gì có thể xua tan nó bằng cùng một thuật toán, mặc dù tất cả những gì tôi đã tìm thấy (ví dụ như C #) được cho là tuân theo "ĐẶC BIỆT".
Như đã nói, có một dự án nguồn mở theo giấy phép Apache 2.0, được viết bởi Nikolay Elenkov , cho phép bạn trích xuất .ab vào một tệp tar.
Sử dụng:
java -jar abe.jar unpack <backup.ab> <backup.tar> <password>
Nếu bạn không chắc chắn làm thế nào để thực sự sử dụng nó (nằm ngoài phạm vi của câu trả lời này), phiên bản tiếp theo của Droid Explorer v0.8.8.7 ( có sẵn ở đây ) sẽ cho phép bạn thực hiện chính xác điều này và hơn thế nữa, ngay từ Explorer. Bạn có thể đọc thêm về các tính năng trên blog của tôi (vâng, tôi biết, phích cắm không biết xấu hổ. Tôi làm điều đó khi nó phù hợp với câu hỏi)