आप अपने डिवाइस को CyanogenMod 12.1 पर कैसे एन्क्रिप्ट करते हैं?


9

CyanogenMod 12 और 12.1 'एन्क्रिप्ट फोन' सेटिंग टूट गया है , और काफी समय से है। क्या किसी अन्य तरीके से फोन को एन्क्रिप्ट करने का कोई तरीका है? क्या सीएम को एक एन्क्रिप्टेड / डेटा डायरेक्टरी वाले फोन पर साइडलोड किया जा सकता है? क्या आपके डेटा को सुरक्षित और सुरक्षित रखने के लिए कोई अन्य तरीके हैं? मैं जिस डिवाइस पर काम कर रहा हूं, वह एक Verizon LG G3 है।

जवाबों:


6

आपके उपयोगकर्ता डेटा विभाजन को एन्क्रिप्ट करने के लिए शेल में कम (एर) -लेवल कमांड्स का उपयोग किया जा सकता है। अस्वीकरण / चेतावनी: निम्नलिखित निर्देश आपके डेटा को मिटा देंगे , सुनिश्चित करें कि आप एक बैकअप बनाते हैं यदि आवश्यक हो।

इन चरणों का पालन करते हुए, आपको अपना डेटा विभाजन मिटा देना चाहिए और बाद में इसे एन्क्रिप्ट करना चाहिए (फ़ैक्टरी रीसेट के समान):

  1. अपने फोन को सामान्य रूप से बूट करें (या तो रिकवरी काम नहीं करती है, या मैं एक अलग मुद्दे में भाग गया)।
  2. सुनिश्चित करें कि ADB के लिए USB डिबगिंग मोड (adb) और रूट एक्सेस सक्षम है।
  3. adb rootइसके बाद एक रूट शेल दर्ज करें adb shell
  4. वैकल्पिक: adb logcatकिसी अन्य शेल में शामिल करके लॉग देखें ।
  5. इस कमांड को दर्ज करें, अपना पासवर्ड टाइप करें और एंटर दबाएं। यह वास्तव में आपका पासवर्ड सेट करेगा। यह कमांड इनपुट की एक लाइन पढ़ता है ( head -1), एंटर ( tr -d '\n') से ट्रेलिंग न्यूलाइन को स्ट्रिप्स करता है और इसे हेक्साडेसिमल प्रतिनिधित्व ( hexdump ...) में परिवर्तित करता है । यदि यह डरावना दिखता है या यदि आप सुनिश्चित नहीं हैं कि यह कमांड क्या करता है, तो नीचे देखें।

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
    
  6. यदि सबकुछ ठीक हो जाता है, तो आपका डिवाइस कुंजी सेट करेगा और एन्क्रिप्शन को पूरा करने के लिए रिबूट करेगा।

उपरोक्त vdcकमांड ("वॉल्यूम डेमन क्लाइंट") के साथ संचारित vold(वॉल्यूम डेमन) में cryptfsएन्क्रिप्शन के लिए कुछ उप-क्षेत्र हैं । enablecrypto: Subcommand के दो स्वरूप हैं wipe(स्पष्ट /dataपूरी तरह से) और inplace(माना जाता है कि एन्क्रिप्शन लागू करते समय अपने मूल को कॉपी /dataकंटेनर के अंदर)।

फिर, एंड्रॉइड 5.0 के साथ शुरू होने वाले चार विकल्प उपलब्ध हैं, उनमें से passwordएक कुंजी के रूप में एक एकल हेक्साडेसिमल अनुक्रम को स्वीकार करता है। इस प्रकार अगर अपना पासवर्ड है foo, तो हेक्साडेसिमल प्रतिनिधित्व है 666f6f( fहै 66हेक्स में, oहै 6f, को देखने के http://www.asciitable.com/ )। इसके लिए आदेश है:

vdc cryptfs enablecrypto wipe password 666f6f

यह एक नेक्सस 5 (कोड नाम हैमहेड, रनिंग सेमी-12.1-20150814) पर परीक्षण किया गया था जिसमें मेटाडेटा को संग्रहीत करने के लिए एक अलग विभाजन है। यह महत्वपूर्ण है कि उपयोगकर्ताडेटा विभाजन में encryptableफ्लैग सेट है जिसके बाद विभाजन या विशेष स्ट्रिंग के लिए रास्ता है footer। मेरी /fstab.hammerheadफ़ाइल से एक (संक्षिप्त) पंक्ति :

/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., check, एन्क्रिप्ट करने योग्य = /dev/block/platform/msm_sdcc.1/by-name/meterata

जब विशेष स्ट्रिंग footer( encryptable=footer) मौजूद होती है, तो डेटा विभाजन के अंत में 16 KiB एन्क्रिप्शन मेटाडेटा को संग्रहीत करने के लिए उपयोग किया जाता है।

आगे पढ़ने के लिए, देखें:


परिशिष्ट: logcat पल से मैं एन्क्रिप्शन कमांड निष्पादित जब तक यह खत्म और रिबूट (अंत में असंबंधित ग्राफिक्स संदेश छोड़)। ध्यान दें कि इस Nexus 5 में हार्डवेयर-त्वरित क्रिप्टो (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

वाह @Lekensteyn इस लिखने के लिए समय निकालने के लिए धन्यवाद। मुझे इस सप्ताह के अंत में कुछ समय बिताने की कोशिश करनी होगी। अगर मैं उकता जाता हूं, तो मैं TWRP से सब कुछ मिटा सकता हूं और फिर से कोशिश कर सकता हूं, है ना?
ज़्लाटी

1
हां, यह सिर्फ डेटा विभाजन है। जब मैं प्रयोग कर रहा था तो मैंने जानबूझकर कई बार मेरा सफाया किया।
लेकेनस्टेय

2
LPT: 6.0 (मार्शमैलो) vdc में पैरामीटर (= क्लियरटेक्स्ट) के रूप में कूटबद्ध नहीं की गई कूटशब्द का उपयोग किया जाता है। एएससीआईआई टेबल के साथ अभ्यास करना बहुत अच्छा था, जब मुझे यह बात पता चली - मेरे पासवर्ड ओएम बूट में प्रवेश करने के लिए कहने के कुछ मिनट बाद। मुझे अपनी गलती के कारण ASCII में अपना पासवर्ड डालना पड़ा
Denys Vitali

4

मेरे लिए, मूल उत्तर अपेक्षा के अनुरूप काम नहीं किया। ऐसा लग रहा था कि यह सफलतापूर्वक एन्क्रिप्ट किया गया था, लेकिन यूआई बहुत जल्दी वापस आ गया और "एन्क्रिप्शन" सेटिंग ने यह नहीं दिखाया कि डिवाइस एन्क्रिप्ट किए गए थे। मैंने तब अपडेट में दिए गए कमांड को लागू किया , लेकिन यह अभी भी काम नहीं किया। मैंने तब डेटा विभाजन का आकार कम कर दिया और इसे सफलतापूर्वक एन्क्रिप्ट किया। अर्थात

mount | grep dataडेटा विभाजन के वास्तविक ब्लॉक डिवाइस को खोजने के लिए। चलिए मान लेते हैं /dev/block/mmcblk0p26

umount /data काम करने के लिए पूर्व उपकरणों के लिए।

e2fsck -f -p /dev/block/mmcblk0p26 आगामी आकार बदलने के लिए मुसीबत में नहीं दौड़ने के लिए।

tune2fs -l /dev/block/mmcblk0p26 ब्लॉक की गिनती प्राप्त करने के लिए। चलिए मान लेते हैं 3057395

resize2fs /dev/block/mmcblk0p26 3057375, यानी मूल ब्लॉक गिनती से 20 की तरह पर्याप्त मात्रा में घटाना।

e2fsck -f -p /dev/block/mmcblk0p26 मेरे लिए गलत तरीके से रखा गया इनकोड पाया गया।

मुझे /systemपकड़ बनाने के लिए विभाजन को माउंट करने की भी आवश्यकता थी resize2fs। मेरे सिस्टम पर, उस बाइनरी को 64 बिट के परिवाद के खिलाफ जोड़ा गया था, लेकिन मुझे जिस TWRP का उपयोग किया गया था, वह प्रदान नहीं किया गया था। इसलिए मुझे आदेशों के साथ उपसर्ग करने की आवश्यकता थी env LD_LIBRARY_PATH=/system/lib64


F2FS फाइल सिस्टम के लिए: android.stackexchange.com/questions/146081/…
Marc.2377

2

के रूप में CM12.1 2015/10/15 जवाब Lekensteyn से अब काम नहीं करता।

जाहिरा तौर पर mkfs.f2fs जिसे फाइल सिस्टम बनाने के लिए आवश्यक है, से स्थानांतरित कर दिया गया /system/bin/है/sbin/

इसके अलावा हमें SELINUX के साथ भी संघर्ष करना होगा। इसका मतलब है कि हमें कई अतिरिक्त कदम करने की आवश्यकता है:

  1. अदब की जड़
  2. अदब का खोल
  3. सेटेनफोर्स 0
  4. आरोह / प्रणाली
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto पासवर्ड 666f6f पोंछें

2

एक और अपडेट- CM13 Jan 9, 2016 बिल्ड, नूबिया Z7 मैक्स, NX505J फोन का उपयोग करके

इस कमांड ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs) की अब कोई जरूरत नहीं है क्योंकि फाइल फिर से यहां रहती है। प्रतीकात्मक लिंक बनाने की कोई आवश्यकता नहीं है।

इस कमांड को अब HEX में रहने की आवश्यकता नहीं है और यदि आप हेक्स में प्रवेश करते हैं तो आपका PW हेक्स होगा।
cryptfs enablecrypto wipe password 666f6f- यह सचमुच मेरे लिए 666f6fनहीं एक पासवर्ड बनायाfoo

मैं अभी भी इस मुद्दे पर शोध कर रहा हूं क्योंकि मुझे मेटा डेटा के लिए आवश्यक अतिरिक्त ब्लॉक पिछले मिल गए हैं। अब मुझे जीयूआई और मैनुअल कमांड को एन्क्रिप्शन में परिणाम दोनों को एन्क्रिप्ट करने के लिए अतीत को प्राप्त करने की आवश्यकता है जो केवल एक बूट चक्र के माध्यम से व्यवहार्य है। जब मेरे पास एक सफल एन्क्रिप्शन होगा, तो मैं वापस रिपोर्ट करूँगा।

अभी मैं एन्क्रिप्ट करता हूं और यह ठीक काम करता है और मैं पहली बार बूट करता हूं और यह कहता है कि फोन एन्क्रिप्टेड है। TWRP के उपयोग से मैं पुष्टि कर सकता हूं / डेटा एन्क्रिप्ट किया गया है लेकिन HEX और ASCI पासवर्ड्स जो मैं TWRP में कोशिश करता हूं, दोनों काम नहीं करते हैं। अगले रिबूट पर Android OS CM13 को पूरी तरह से बूट नहीं कर सकता है। यह पुष्टि करता है कि मेरे पास सही एन्क्रिप्शन पासवर्ड है और फिर मुझे केवल 1 एन्क्रिप्टेड बूट मिलेगा। पहले सफल एन्क्रिप्टेड स्टार्टअप के बाद यह उसके बाद बूट चक्र के एनीमेशन चरण पर बंद हो जाता है। सुरक्षा सर्वोत्तम अभ्यास अब AES256 फोन एन्क्रिप्शन की सिफारिश करते हैं।


CM13 में AES256 फोन एन्क्रिप्शन के साथ सिस्टम कितना विश्वसनीय है? मैं बात के बारे में यहाँ एक धागा खोला android.stackexchange.com/q/134981/9897
लियो लियोपोल्ड हर्ट्ज 준영

2

Moto X 2013 में CyanogenMod 12.1 चलाने के बाद मैं इसे एन्क्रिप्ट करने में सक्षम नहीं था। अंत में, मैं इन चरणों के साथ सफल हुआ:

  1. फोन पर डेवलपर सेटिंग्स में रूट सक्षम करें और एक शेल खोलें (टर्मिनल ऐप, डेवलपर सेटिंग्स में भी सक्षम किया जा सकता है)
  2. suरूट एक्सेस दर्ज करें , और पुष्टि करें
  3. दर्ज setenforce 0
  4. अब सेटिंग्स खोलें , सिक्योरिटी पर जाएं और एनक्रिप्ट फोन का चयन करें । एंड्रॉइड फिर फोन को रिबूट और एन्क्रिप्ट करना शुरू कर देगा।

मैं आर्ट के उत्तर और इस फोरम थ्रेड को मिलाकर इस समाधान पर आया ।


मेरे लिए काम नहीं किया। Btw, क्या आप इसके बाद SELinux स्थिति को 1 पर सेट कर सकते हैं?
मार्क.2377

1

6 घंटे के मानसिक दर्द और पसीने के बाद मैं एक समाधान पर ठोकर खा सकता हूं जो मेरे लिए काम करता है। और यह एक दुर्घटना भी थी। मैंने सैमसंग S4 मिनी के लिए CyanogenMod 13.0 और Android 6.0.1 के साथ ऐसा किया। यहां महत्वपूर्ण महत्वपूर्ण कारक यह है कि मैंने इसे एक साफ फोन (ताजा फर्मवेयर और अनरोटेड) से शुरू किया है, क्योंकि जब फोन पहले रूट था, तब फोन बिल्कुल भी काम नहीं करना चाहता था।

मैंने फायरलॉर्ड और लेकेनस्टाइन की समस्या के समाधान का उपयोग किया, लेकिन मैं कमांडों से एक पंक्ति को भूलने में कामयाब रहा।

यहाँ देखें कि मैंने यह कैसे किया:

  1. मैंने एंड्रॉइड डीबगिंग और रूट एक्सेस को केवल एडीबी में चालू किया डेवलपर विकल्पों

  2. एडीबी कमांड प्रॉम्प्ट में मैंने adb rootऔर का इस्तेमाल कियाadb shell कमांड का । उसके बाद मैंने एक और एडीबी कमांड प्रॉम्प्ट खोला और कमांड का इस्तेमाल किया adb logcat

  3. पहले एडीबी शेल में, मैं आगे setenforce 0और उसके बाद आगे बढ़ा vdc cryptfs enablecrypto wipe password YOUR-PASSWORD

महत्वपूर्ण सूचना: पासवर्ड कमांड आपके द्वारा उपयोग किए जा रहे Android संस्करण से भिन्न हो सकती है। यदि आप एंड्रॉइड 5.X का उपयोग कर रहे हैं , तो आपको हेक्साडेसिमल सिस्टम का उपयोग करना होगा (Chr लाइन आपके पासवर्ड में प्रतीक है, हेक्साडेसिमल मान Hx लाइन पर है)। यदि आप Android 6.X का उपयोग कर रहे हैं , तो आपका पासवर्ड आपके द्वारा दर्ज किए गए पासवर्ड होगा।

जैसा कि आप नोटिस तो मैं का उपयोग करने के लिए भूल गया mount -oremount,rw /system कमांड । उसके बाद मैं स्क्रीन काली हो जाएगी। जब मैंने देखा, कि लॉग के साथ एडीबी शेल बंद हो गया और समाप्त हो गया, तो मैंने फोन को रिबूट किया। लेकिन सभी के लिए, समस्या यह है कि, CyanogenMod लोड नहीं होगा। और मैं इसे आसानी से ठीक करने में कामयाब रहा:

  1. होल्ड TWRP बूट अप होने तक Vol Up & Home & Power को नीचे । यह आपसे आपका एन्क्रिप्शन पासवर्ड मांगेगा।
  2. करते हैं CyanogenMod अतिरिक्त Google Apps (गाइड का दूसरा भाग) के साथ भाग स्थापित करता है
  3. ऐसा होने के बाद, फिर डिवाइस को रिबूट करें। जब यह बूट होगा, तब इसमें थोड़ा समय लगेगा। पहले यह फोन को स्टार्ट करेगा, फिर यह एन्क्रिप्शन पासवर्ड पूछेगा और फिर इसे बूट होने तक थोड़ा समय लगेगा।

वहां तुम जाओ, यह काम करना चाहिए। सबसे पहले, जब फोन सेट अप आता है, तो इसे एक मिनट के लिए रहने दें। सेटअप विज़ार्ड के लिए थोड़ी सी दुर्घटना हो सकती है यदि आप इसे बहुत तेज़ी से बढ़ाते हैं, लेकिन क्रैश होने पर यह स्वचालित रूप से पुनरारंभ हो जाएगा।

मेरे बहुत छोटे से ज्ञान में कि CyanogenMod और Android एन्क्रिप्शन कैसे काम करता है, मुझे लगता है कि प्रारूप के दौरान यह कुछ महत्वपूर्ण Cyanogen या Android फ़ाइलों को हटा देता है, जो इसे बूट करने से रोकते हैं।


1

एनक्रिप्टिंग ने मेरे फोन पर काम नहीं किया (एसजीएस 5; सीएम 13, TWRP 3.0.2-2) - मुझे हमेशा एक काली स्क्रीन मिली।

मैं शेल कमांड का उपयोग नहीं करना चाहता था, इसलिए मुझे एक और तरीका मिला:

मैंने सुपरसु स्थापित किया था, मैंने इसे ऐप में अनइंस्टॉल कर दिया और फिर एसयू-रिमूवर को फ्लैश किया

उसके बाद, मैं मेनू से एन्क्रिप्शन का उपयोग करने में सक्षम था।

चेतावनी:

  • एन्क्रिप्शन ने मेरे सभी डेटा और एप्लिकेशन (आंतरिक एसडी पर फ़ाइलें सहित) को हटा दिया, इसलिए पहले बैकअप लें !
  • एन्क्रिप्शन के बाद, मेरे पास केवल 2 जीबी इंटरनल स्पेस बचा था (सामान्य रूप से 11 जीबी) - मुझे एक पूर्ण पोंछना था (स्वयं स्यानोजेनमॉड को हटाकर भी), स्यानोजेनमॉड को पुन: स्थापित करें और अपने स्पेस को वापस पाने के लिए एक और एन्क्रिप्शन प्रयास करें।
  • आपको रूट को फिर से सक्रिय करना होगा, मैंने उसके लिए BETA-SuperSU-v2.68-20160228150503 का उपयोग किया (फ्लैश के साथ फ्लैश)।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.