Có các lệnh thấp (er) -level có thể được sử dụng trong trình bao để mã hóa phân vùng dữ liệu người dùng của bạn. Tuyên bố từ chối trách nhiệm / Cảnh báo: các hướng dẫn sau sẽ xóa sạch dữ liệu của bạn , đảm bảo rằng bạn tạo bản sao lưu nếu cần.
Thực hiện theo các bước sau, bạn sẽ có thể xóa phân vùng dữ liệu của mình và mã hóa nó sau đó (tương tự như khôi phục cài đặt gốc):
- Khởi động điện thoại của bạn bình thường (hoặc khôi phục không hoạt động nữa hoặc tôi gặp phải một vấn đề khác).
- Đảm bảo rằng chế độ gỡ lỗi USB (adb) và quyền truy cập Root cho ADB được bật.
- Nhập một vỏ gốc với
adb root
theo sau adb shell
.
- Tùy chọn: xem nhật ký bằng cách gọi
adb logcat
trong một vỏ khác.
Nhập lệnh này, nhập mật khẩu của bạn và nhấn Enter. Điều này thực sự sẽ thiết lập mật khẩu của bạn. Lệnh này đọc một dòng đầu vào ( head -1
), loại bỏ dòng mới ở Enter ( tr -d '\n'
) và chuyển đổi nó thành một đại diện thập lục phân ( hexdump ...
). Nếu nó trông đáng sợ hoặc nếu bạn không chắc lệnh này làm gì, hãy xem bên dưới.
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
- Nếu mọi thứ đều ổn, thiết bị của bạn sẽ đặt khóa và khởi động lại để hoàn thành mã hóa.
Lệnh trên vdc
("Volume Daemon Client") được liên lạc với vold
(Volume Daemon) có một số lệnh con như cryptfs
để mã hóa. Tiểu ban enablecrypto
có hai chế độ: wipe
(xóa /data
hoàn toàn) và inplace
(được cho là áp dụng mã hóa trong khi sao chép bản gốc của bạn /data
bên trong container).
Sau đó, bốn tùy chọn có sẵn bắt đầu với Android 5.0, một trong số đó là password
chấp nhận một chuỗi thập lục phân duy nhất làm khóa. Vì vậy, nếu mật khẩu của bạn foo
, sau đó các đại diện thập lục phân là 666f6f
( f
là 66
trong hex, o
được 6f
, xem http://www.asciitable.com/ ). Lệnh cho việc này là:
vdc cryptfs enablecrypto wipe password 666f6f
Điều này đã được thử nghiệm trên Nexus 5 (tên đầu búa, chạy cm-12.1-20150814) có phân vùng riêng để lưu trữ siêu dữ liệu. Điều quan trọng là phân vùng userdata có encryptable
cờ được đặt theo sau là đường dẫn đến phân vùng hoặc chuỗi đặc biệt footer
. Một dòng (viết tắt) từ /fstab.hammerhead
tập tin của tôi :
/ dev / block / pl platform / msm_sdcc.1 / by-name / userdata / data ext4 ..., kiểm tra, mã hóa = / dev / block / pl platform / msm_sdcc.1 / by-name / metadata
Khi có chuỗi đặc biệt footer
( encryptable=footer
), thì 16 KiB ở cuối phân vùng dữ liệu được sử dụng để lưu trữ siêu dữ liệu mã hóa.
Để đọc thêm, xem:
Phụ lục: đoạn trích logcat từ lúc tôi thực hiện lệnh mã hóa cho đến khi hoàn thành và khởi động lại (bỏ qua các thông báo đồ họa không liên quan ở cuối). Lưu ý rằng Nexus 5 này có tiền điện tử được tăng tốc phần cứng (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