从恢复中删除加密


10

我每晚在G900T(klte)上运行CyanogenMod 12。除默认的加密密码外,其他所有功能都可以正常工作,这会导致我的手机启动循环。

我已经格式化了数据并进行了出厂重置,但是/data仍然被加密并显示为/dev/dm-0

我可以执行删除加密的命令吗?我不在乎数据,我希望所有数据都消失了。我只想回到/data内部并将内部存储以纯文本格式存储在磁盘上,以便能够启动到CyanogenMod中。

如何使用adb shell删除这些分区上的加密?


您闪过什么恢复?
Jordy19年

1
球队获胜恢复项目(TWRP)
Naftuli Kay 2015年

我在这里读过,您可以通过刷新新的ROM摆脱加密,不确定是否适合您的情况,但是值得尝试。
Jordy19年

没用 我正在尝试手动dd if=/dev/zero,然后格式化数据分区。
Naftuli Kay 2015年

Answers:


12

对我来说,答案涉及很多方面,但我认为这确实是关键。

使用“恢复”命令,兄弟

这使用CyanogenMod / AOSP的recovery程序擦除用户数据并禁用加密。(可在Stack Overflow的此答案中找到)启动到恢复中,然后从计算机运行

adb shell recovery --wipe_data --set_filesystem_encryption=off

您的手机将重新启动进入系统,并且有望按计划工作。

如果您需要通过手机本身运行它(即:您附近没有电脑adb):

recovery --wipe_data --set_filesystem_encryption=off

它应该擦除,禁用加密并重新启动系统。

如果其他都失败了

除非以上方法不起作用或不适用于您的方案,否则请不要使用此方法。

销毁用于文件系统加密的LUKS标头

  1. 您需要进行恢复,以便恢复为 root,因此TWRP适用于我的情况。
  2. userdata环顾四周,找到分区/dev/block/platform/*/by-name/userdata
  3. 在该分区的开头写一吨零以擦除LUKS标头:

    dd if=/dev/zero of=$PATH_TO_YOUR_USERDATA bs=4096 count=512
    

    我对您使用此命令所做的工作不承担任何责任。如果您搞砸了,可以通过覆盖引导加载程序或其他关键分区来对电话进行修改。确保$PATH_TO_YOUR_USERDATA指向实际userdata分区。检查该分区的大小,以确保您擦拭了正确的东西。我有16GB的手机,userdata是10.4GB,其余的专用于system,但您的手机会有所不同。

  4. 重新格式化分区ext4使用make_ext4fs $PATH_TO_YOUR_USERDATA

    可能有错误,但是通常它们与无法找到内部“ sdcard”有关,这可以。

完成所有这些操作后,为了安全起见,请再次重新启动恢复,然后运行出厂重置。

为什么这样工作?

简单地恢复出厂设置似乎对我无济于事,手机仍然会在那看到LUKS分区。我认为这是因为LUKS标头仍然存在于磁盘级别,而ext4分区只是覆盖在其顶部。出于某种原因,Android优先将LUKS分区的检测优先于ext4分区,并尝试(并成功)安装该分区。

从这往哪儿走

(如果您知道自己在做什么,您可能还希望system从头擦除并安装ROM。同样,对于您对本文所包含信息的任何处理,我也不承担任何责任。

klteG900T(三星Galaxy S5 T-Mobile)上为我工作。你的旅费可能会改变。


这种工作方式(dd / make_ext4fs选项)。-当我重新启动时,它仍然要求在TWRP恢复中输入密码,并且高级格式选项不起作用-但是当我执行常规数据分区格式时,它起作用了。-我无需任何密码提示即可重启进入恢复状态。:-)
BrainSlugs83 '16

1
纳夫图利,你是救命稻草!我的S6 edge(SM-G925F)处于死引导循环,因为它可能无法加密,这可能是由于自定义恢复(TWRP)造成的,我认为加密是通过库存恢复进行的。一直说“加密未完成。恢复出厂设置并重新启动”。我什至尝试快速恢复库存,但无法启动(可能是错误的,但标记为我的设备)。整个rom也不好(无法找到合适的,我发现的一个被odin拒绝)。最后,我做了您在这里所说的一切,dd命令终于完成了。非常感谢!
Mixaz '16

recovery命令似乎对我不起作用。我从称之为ADB ShellTWRP恢复。我的主要问题是,USB调试未启用,并/system已损坏,所以我不能启动,并启用它。此外,磁盘加密功能已启用,似乎使我无法fastboot flash system system.zip正常运行。
anon58192932 '10 / 10/22

1
您挽救了我的一天,或更美好的夜晚。三个小时后,尝试在我的Huawei P8 Lite上安装lineageOS 14.1,并始终收到加密失败的消息,dd最后输入命令,即可结束操作。谢谢!
Matteo De Felice

ls -l /dev/block/platform/soc.0/7824900.sdhci/by-name/userdata说: lrwxrwxrwx 1 root root 21 Sep 16 06:04 /dev/block/platform/soc.0/7824900.sdhci/by-name/userdata -> /dev/block/mmcblk0p26 df -h /dev/block/mmcblk0p26说:```使用的文件系统大小可用使用%安装在/ dev / block / mmcblk0p26 10.5G 27.2M 10.5G 0%/ data````所以我做到了:dd if=/dev/zero of=/dev/block/platform/soc.0/7824900.sdhci/by-name/userdata bs=4096 count=512 是吗?
LarS

8

在我的Moto G第三代(osprey)上,调用恢复或擦除LUKS标头(在分区的开始和结束处)均无效-我仍然需要在Cyanogen Mod启动期间输入加密密码,然后卡在“加密错误”消息中。

我终于发现,我的TWRP 3.0.1恢复在“擦除”部分中具有“格式化数据”选项。这会完成一次完整的出厂重置,这也会禁用加密。

像魅力一样工作。如果您可以访问体面的TWRP版本(例如使用Flashify轻松刷新),请首先尝试。


1
谢谢。当一个简单的解决方案可行时,为什么要寻求一个复杂的解决方案呢?
Peter Gordon

这个选项的唯一问题是文字暗示它也会擦除SD卡。如果您的卡很容易拿到,那不是什么大问题。:-|
zaTricky

1
@pgmann:“格式数据”选项不久前出现在TWRP中,这就是原因。可以肯定的是,在2014年没有提供这些答复时。同样,该dd方法在清除脚本中的加密时很有用,因为TWRP命令中没有“格式数据”选项,而现有命令无法擦除加密。希望他们在将来添加这样的命令...
Mixaz

5

前提是您使用的是TWRP或类似产品。

  • 重新启动到TWRP(输入密码),然后将Data分区备份到外部SDOTG Drive
  • 重新启动到TWRP(取消密码),并将数据分区格式化为 f2fs
  • 将第一步中的备份还原到新创建的Data分区
  • 重启系统
  • 享受Android的乐趣,保存所有数据,并删除加密

4

手动擦除Naftuli Tzvi Kay提供的LUKS标头的解决方案工作正常,除了一件事。我不知道它的依赖关系,但是根据我的经验,Android将LUKS标头保留在分区的末尾。如果您的设备属于这种情况,则可以运行

dd if=/dev/zero of=$PATH_TO_YOUR_USERDATA bs=4096 count=512

将无法删除页眉(页脚?),因为它仅擦除分区的开头。当然,可以擦除整个分区,但这将花费不必要的时间。所以...

要擦除分区的末端(任意大小),请在运行上述命令后,还运行以下命令:

dd bs=512 if=/dev/zero of=$PATH_TO_YOUR_USERDATA count=22048 seek=$((`blockdev --getsz $PATH_TO_YOUR_USERDATA` - 22048))

对我来说,仅擦除标头可以正常工作(可能是因为加密未完成-不确定)。但由于您的业力较低而无法回答))
Mixaz '16

4

您是否正在使用自定义恢复?

如果是,则在启动到自定义恢复(在我的情况下为TWRP)之后执行以下操作:

  1. 恢复开始时,请勿解密设备。在询问密码或图案时,只需轻按取消

  2. 擦除数据分区。(刷卡修改系统后,在TWRP上:擦除>高级>检查:数据)

当然,这将擦除userdata分区中的所有内容。整个数据分区将重新格式化,包括加密密钥


1
擦除数据分区仅会删除分区开头的文件系统标头。它不起作用,因为在许多版本的Android上,LUKS / dm-crypt头位于文件系统的末尾
Naftuli Kay 2016年

1
你试过了吗?因为它只是在我的Nexus 9的工作
Majal

1
不知道为什么有人不赞成这个答案,这行得通,并且是摆脱加密的最简单方法
ArtDeineka 17-4-18

1
这就是我最终要做的-并且奏效了。:)
zaTricky

1
同样在这里。像魅力一样工作。
Linus Kleen

1

我的票投给了@Naftuli Kay,还有其他有用的答案,但我想分享一些信息。评论太久了,那就让它成为答案。

由于TWRP的某些版本,“擦除”屏幕上有“格式数据”项。它不仅擦除/ data分区,而且还处理加密的FS问题。就我而言,三星J500H上的TWRP 3.0.2会擦除加密,这是唯一的方法,恢复出厂设置无效。CMR(在我的CM 12.1 rom上为J500H构建的那个)也无法清除加密。

--set_encrypted_filesystem=off 在TWRP和CMR中也不起作用。

通过OpenRecoveryScript https://twrp.me/faq/openrecoveryscript.html擦除数据也不起作用

Android 3.0开始将/ sdcard映射到/ data / media,因此他们不得不将/ data擦除重做为/ data / media,而rm -rf改为执行。有关更多详细信息,请参见https://twrp.me/faq/datamedia.html

当您执行“格式化数据”时,您可能会在恢复日志(/ cache / recover / log或/ cache / recovery / last_log)中看到以下信息:

I:Successfully wiped crypto footer.

在格式化/数据之前 make_ext4fs。TWRP代码具有许多检查,以查找LUKS标头在哪里,在我的情况下,它在页脚中找到了它。

我查看了TWRP源,但没有找到从命令行“格式化数据”的方法(我需要在自定义rom中擦除应用程序中的加密存储),因此此选项仅在UI中存在。唯一的例外-如果TW_OEM_BUILD启用了TWRP编译,它将在出厂重置 “格式化数据”,清除加密头并格式化数据分区,否则将使用不带格式的常规擦除操作。

我将尝试dd使用零,实际上TWRP会执行相同的操作以清除加密,只是它知道在哪里精确查找标头))


0

在上面扩展Naftuli Tzvi Kay的答案...

好吧,这个答案将我带到了正确的位置,但是我的手机(CM11 / i9300)没有recovery命令,并且该wipe命令没有禁用加密的选项。因此,我通过查看命令源代码recovery中的注释(从上述问题中链接的答案链接的文件)手动完成了此操作:

* The recovery tool communicates with the main system through /cache files.
* /cache/recovery/command - INPUT - command line for tool, one arg per line
* /cache/recovery/log - OUTPUT - combined log file from recovery run(s)
* /cache/recovery/intent - OUTPUT - intent that was passed in
*
* The arguments which may be supplied in the recovery.command file:
* --send_intent=anystring - write the text out to recovery.intent
* --update_package=path - verify install an OTA package file
* --wipe_data - erase user data (and cache), then reboot
* --wipe_cache - wipe cache (but not user data), then reboot
* --set_encrypted_filesystem=on|off - enables / diasables encrypted fs
*
* After completing, we remove /cache/recovery/command and reboot.

因此,要手动执行(使用adb):

  1. 出现具有root用户访问权限的提示,例如
    $ adb shell
    > su
    
  2. 使用echo或vi将以下文本放入文件/ cache / recovery / command中:

    --wipe_data
    --set_encrypted_filesystem=off
    

    例如与 echo -e "--wipe_data\n--set_encrypted_filesystem=off" > /cache/recovery/command

  3. 重新启动到CWM或类似的恢复

您应该会看到一个不错的进度条,它应该已完成:)


恢复命令在我的TWRP(3.1.1)中可用,它通过/ cache / recovery / command或命令行接受--wipe-data和--set_encrypted_filesystem = off,但是一旦请求访问数据分区(通过--wipe-data)TWRP提示输入密码。因此,它在最新的TWRP中不起作用。取而代之的是“格式数据”,请参见其他文章
Mixaz,

0

最好的工作方法是启动到TWRP,并使用内置终端将其格式化为ext2(coz,这是终端唯一支持的功能),然后使用Mount下的“修复文件系统”选项将分区更改为ext4。

格式化为ext2:

mkfs.ext2 /dev/block/mmcbl0p23 (通过在/ dev / block / platform / * / by-name / userdata中查看来替换您的userdata分区的值)

将文件系统更改为ext4:

擦除->高级擦除->选择“数据”->修复或更改文件系统->更改文件系统-> EXT4

现在,您应该删除加密,并且能够从TWRP挂载/ data分区。希望这可以帮助 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.