Làm thế nào để bạn mã hóa thiết bị của mình chạy CyanogenMod 12.1?


9

Cài đặt CyanogenMod 12 và 12.1 'Mã hóa điện thoại' đã bị hỏng và đã khá lâu. Có cách nào để mã hóa điện thoại theo một số cách khác không? CM có thể được tải lên điện thoại với thư mục được mã hóa / dữ liệu không? Có cách nào khác để giữ dữ liệu của bạn an toàn và âm thanh không? Thiết bị tôi đang làm việc là một LG G3 của Verizon.

Câu trả lời:


6

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):

  1. 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).
  2. Đảm bảo rằng chế độ gỡ lỗi USB (adb) và quyền truy cập Root cho ADB được bật.
  3. Nhập một vỏ gốc với adb roottheo sau adb shell.
  4. Tùy chọn: xem nhật ký bằng cách gọi adb logcattrong một vỏ khác.
  5. 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"')
    
  6. 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 enablecryptocó hai chế độ: wipe(xóa /datahoà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 /databê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à passwordchấ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( f66trong 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ó encryptablecờ đượ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.hammerheadtậ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

Wow @Lekensteyn cảm ơn bạn đã dành thời gian để viết bài này. Tôi sẽ phải dành một chút thời gian vào cuối tuần này để cố gắng thiết lập điều này. Trong trường hợp tôi hết, tôi có thể xóa mọi thứ khỏi TWRP và thử lại, phải không?
Zlatty

1
Vâng, nó chỉ là phân vùng dữ liệu. Tôi đã cố tình lau tôi nhiều lần khi tôi đang thử nghiệm.
Lekensteyn

2
LPT: Kể từ 6.0 (Marshmallow) vdc không sử dụng mật khẩu không được mã hóa ascii làm tham số (= Cleartext). Thật tuyệt khi thực hành với bảng ASCII khi tôi phát hiện ra điều này - chỉ vài phút sau khi tôi được yêu cầu nhập mật khẩu om boot. Tôi đã phải đặt mật khẩu của mình vào ASCII vì lỗi của tôi lol
Denys Vitali

4

Đối với tôi, câu trả lời ban đầu không hoạt động như mong đợi. Có vẻ như nó được mã hóa thành công, nhưng UI đã quay lại rất nhanh và cài đặt "Mã hóa" không cho thấy các thiết bị đã được mã hóa. Sau đó tôi đã áp dụng các lệnh được đưa ra trong bản cập nhật , nhưng nó vẫn không hoạt động. Sau đó tôi đã giảm kích thước của phân vùng dữ liệu và nó được mã hóa thành công. I E

mount | grep datađể tìm thiết bị khối thực tế của phân vùng dữ liệu. Hãy giả sử nó là /dev/block/mmcblk0p26.

umount /data cho các công cụ mở rộng để làm việc.

e2fsck -f -p /dev/block/mmcblk0p26 để không gặp rắc rối cho việc thay đổi kích thước sắp tới.

tune2fs -l /dev/block/mmcblk0p26 để có được số lượng khối. Hãy giả sử nó là 3057395.

resize2fs /dev/block/mmcblk0p26 3057375, tức là trừ một số tiền đủ như 20 từ số khối ban đầu.

e2fsck -f -p /dev/block/mmcblk0p26 tìm thấy một inode sai cho tôi.

Tôi cũng cần phải gắn kết /systemphân vùng để có được giữ resize2fs. Trên hệ thống của tôi, nhị phân đó được liên kết với phiên bản libc 64 bit, nhưng TWRP tôi đã sử dụng dường như không cung cấp điều đó. Vì vậy, tôi cần phải thêm tiền tố vào các lệnh với env LD_LIBRARY_PATH=/system/lib64.


Đối với hệ thống tệp F2FS: android.stackexchange.com/questions/146081/
triệt

2

Kể từ CM12.1 2015-10-15 , câu trả lời của Lekensteyn không còn hoạt động.

Rõ ràng mkfs.f2fs cần thiết để tạo hệ thống tệp, đã được chuyển từ /system/bin/sang/sbin/

Ngoài ra, chúng tôi phải tranh luận với SELINUX. Điều này có nghĩa là chúng ta cần thực hiện một số bước bổ sung:

  1. gốc adb
  2. vỏ adb
  3. thiết lập lực lượng 0
  4. gắn kết, giá trị / hệ thống
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. mã hóa vdc enableecrypto xóa mật khẩu 666f6f

2

Một bản cập nhật khác - bản dựng CM13 ngày 9 tháng 1 năm 2016 , sử dụng điện thoại Nubia Z7 Max, NX505J

Lệnh này ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs) không còn cần thiết vì tệp sống ở đây một lần nữa. Không cần phải tạo một liên kết tượng trưng.

Lệnh này không còn cần phải có trong HEX và nếu bạn nhập hex, PW của bạn sẽ là hex.
cryptfs enablecrypto wipe password 666f6f- Điều này thực sự tạo ra một mật khẩu cho tôi 666f6fkhôngfoo

Tôi vẫn đang nghiên cứu vấn đề này vì tôi đã vượt qua các khối bổ sung cần thiết cho dữ liệu meta. Bây giờ tôi cần vượt qua thực tế GUI và các lệnh thủ công để mã hóa cả hai kết quả mã hóa chỉ khả thi thông qua một chu kỳ khởi động. Tôi sẽ báo cáo lại khi tôi mã hóa thành công.

Ngay bây giờ tôi mã hóa và nó hoạt động tốt và tôi khởi động lần đầu tiên và nó nói điện thoại được mã hóa. Sử dụng TWRP tôi có thể xác nhận / dữ liệu được mã hóa nhưng mật khẩu HEX và ASCI tôi thử trong TWRP đều không hoạt động. Trong lần khởi động lại tiếp theo, HĐH Android không thể khởi động hoàn toàn CM13. Nó xác nhận tôi có mật khẩu mã hóa chính xác và sau đó tôi chỉ nhận được 1 boot được mã hóa. Sau lần khởi động được mã hóa thành công đầu tiên, nó sẽ khóa ở giai đoạn hoạt hình của chu kỳ khởi động sau đó. Thực tiễn bảo mật tốt nhất hiện nay khuyến nghị mã hóa điện thoại AES256.


Hệ thống đã đáng tin cậy như thế nào với mã hóa điện thoại AES256 trong CM13? Tôi đã mở một chủ đề về điều này ở đây android.stackexchange.com/q/134981/9897
Léo Léopold Hertz

2

Có một chiếc Moto X 2013 chạy Cyanogenmod 12.1 tôi cũng không thể mã hóa nó. Cuối cùng, tôi đã thành công với các bước sau:

  1. Bật root trong Cài đặt dành cho nhà phát triển trên điện thoại và mở shell (Ứng dụng đầu cuối, cũng có thể được bật trong Cài đặt dành cho nhà phát triển)
  2. Nhập suvà xác nhận quyền truy cập root
  3. Đi vào setenforce 0
  4. Bây giờ hãy mở Cài đặt , đi đến Bảo mật và chọn Mã hóa điện thoại . Android sau đó sẽ khởi động lại và bắt đầu mã hóa điện thoại.

Tôi đã đến với giải pháp này bằng cách kết hợp câu trả lời của Artchủ đề diễn đàn này .


Không làm việc cho tôi. Btw, bạn có thể đặt trạng thái SELinux trở lại 1 sau này không?
Marc.2377

1

Sau 6 giờ đau đớn và đổ mồ hôi tinh thần, tôi có thể vấp phải một giải pháp có ích cho tôi. Và đó là một tai nạn quá. Tôi đã làm điều này cho Samsung S4 Mini với CyanogenMod 13.0 và Android 6.0.1. Yếu tố quan trọng ở đây là, tôi đã khởi động nó từ một chiếc điện thoại sạch (phần sụn mới và chưa được phân phối), bởi vì khi điện thoại đã được root trước đó, thì điện thoại hoàn toàn không muốn hoạt động.

Tôi đã sử dụng giải pháp của Firelord và Lekensteyn cho vấn đề này, nhưng tôi đã cố quên một dòng trong các lệnh.

Đây là cách tôi đã làm nó:

  1. Tôi bật gỡ lỗi Androidtruy cập root để ADB chỉ trong Tùy chọn nhà phát triển .

  2. Trong Dấu nhắc lệnh ADB tôi đã sử dụng lệnh adb rootadb shell. Sau đó tôi đã mở một Dấu nhắc lệnh ADB khác và sử dụng adb logcatlệnh này.

  3. Trong lớp vỏ ADB đầu tiên, tôi đã tiếp tục setenforce 0và sau đó vdc cryptfs enablecrypto wipe password YOUR-PASSWORD.

THÔNG BÁO QUAN TRỌNG: Lệnh mật khẩu có thể khác với phiên bản Android bạn đang sử dụng. Nếu bạn đang sử dụng Android 5.X , bạn phải sử dụng hệ thập lục phân (Trong dòng Chr là ký hiệu trong mật khẩu của bạn, giá trị thập lục phân nằm trên dòng Hx). Nếu bạn đang sử dụng Android 6.X , thì PASSWORD CỦA BẠN sẽ là mật khẩu những gì bạn đã nhập vào đó.

Khi bạn nhận thấy sau đó tôi quên sử dụng mount -oremount,rw /systemlệnh. Sau đó tôi màn hình sẽ chuyển sang màu đen. Khi tôi thấy, vỏ ADB với nhật ký dừng lại và kết thúc, sau đó tôi khởi động lại điện thoại. Nhưng đối với mọi người, vấn đề là, CyanogenMod sẽ không tải. Và tôi đã cố gắng sửa nó khá dễ dàng:

  1. Giữ Vol Up & Home & Power xuống cho đến khi TWRP khởi động. Nó sẽ hỏi bạn mật khẩu mã hóa của bạn.
  2. Thực hiện phần cài đặt CyanogenMod với Google Apps bổ sung (Phần thứ hai của hướng dẫn).
  3. Sau khi hoàn thành, sau đó khởi động lại thiết bị. Khi nó khởi động, sau đó sẽ mất một lúc. Đầu tiên, nó sẽ khởi động điện thoại, sau đó nó sẽ hỏi mật khẩu mã hóa và sau đó sẽ mất một lúc cho đến khi nó khởi động.

Có bạn đi, nó sẽ làm việc. Lúc đầu, khi điện thoại được thiết lập xuất hiện, sau đó để nó trong một phút. Có thể có một sự cố nhỏ cho Trình hướng dẫn cài đặt nếu bạn vội vàng quá nhanh, nhưng nó sẽ tự động khởi động lại khi gặp sự cố.

Theo hiểu biết rất nhỏ của tôi về cách CyanogenMod và Mã hóa Android hoạt động, tôi nghĩ trong quá trình định dạng, nó sẽ xóa một số tệp Cyanogen hoặc Android quan trọng, điều gì ngăn nó khởi động.


1

Mã hóa không hoạt động trên điện thoại của tôi (SGS5; CM13, TWRP 3.0.2-2) - Tôi luôn có màn hình đen.

Tôi không muốn sử dụng các lệnh shell, vì vậy tôi đã tìm một cách khác:

Tôi đã cài đặt SuperSU, tôi đã gỡ cài đặt nó trong Ứng dụng và sau đó flash SU-Remover .

Sau đó, tôi đã có thể sử dụng mã hóa từ menu.

Cảnh báo:

  • Mã hóa đã xóa tất cả Dữ liệu & Ứng dụng của tôi (bao gồm Tệp trên SD nội bộ), vì vậy hãy tạo bản sao lưu trước !
  • Sau khi mã hóa, tôi chỉ còn lại 2 GB dung lượng bên trong (bình thường là 11 GB) - tôi phải xóa toàn bộ (cũng loại bỏ Cyanogenmod), cài đặt lại Cyanogenmod và một nỗ lực mã hóa khác để lấy lại Space của tôi.
  • Bạn cũng phải kích hoạt lại root, tôi đã sử dụng BETA-SuperSU-v2.68-20160228150503 cho điều đó (flash với twrp).
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.