重装系统尤其是格式化重装系统之后,如果没有正确地备份私钥,那么加密的文件将无法打开,加密的文件也暂时没有办法进行快速破解。
并非重装后用相同用户名+密码就可以解密的。
Advanced EFS Data Recovery这个软件对格式化重装系统后恢复EFS文件没有任何效果。
把NTFS分区转换成FAT32分区无效。
私钥不是在刚做完系统时产生,而是第一次加密时产生,所以加密完再用GHOST还原为刚做完系统时,肯定丢失私钥。
EFS加密恢复的关键
加密过的文件的名称在电脑中显示为绿色。私钥是第一次使用加密的时候随机产生。
备份私钥的方法如下:开始菜单的运行中输入certmgr.msc并回车→个人→证书→选择证书→点击右键,选择”所有任务”→导出→选择”导出私钥”。接下来按照向导操作即可。当需要恢复证书(私钥)的时候,双击导出来的文件,输入之前设置的密码按向导导入就可以了。
恢复的关键有三点:(建议在恢复过程中尝试把所有的用户文件夹C:\Documents and Settings\Administrator\Application Data里的东西全部恢复出来.)
第一、获得公钥和公钥证书、私钥保存的文件、主密钥文件;
第二、知道原来用户的密码和用户名;
第三点、知道原来用户的SID+RID
私钥保存在
C:\Documents and Settings\Administrator\Application Data\Microsoft\Crypto\RSA
公钥和公钥证书保存在
C:\Documents and Settings\Administrator\ApplicationData\Microsoft\SystemCertificates\My\Certificates
加密后的主密钥保存在
C:\Documents and Settings\Administrator\Application Data\Microsoft\Protect
找回关键的文件和文件夹
知道加密的文件不能打开之后,应该马上关机,然后进入PE环境。在这个环境里使用数据恢复工具把需要的文件给找回来。如果电脑比较老,可以使用老毛桃或者深山红叶的PE,如果电脑比较新,可能需要附加驱动包或者寻找网友制作的新版工具PE,有兴趣可以到无忧启动寻找。而数据恢复工具则可以直接找它们的绿色版放在U盘上,在PE里直接运行它们的主程序即可进行恢复工作。恢复工具可以使用easyrecovery、finaldata、r-studio、Winhex等等,本文用easyrecovery作为讲解的例子,如果你在实际恢复过程中,发现文件找不到或者找到的文件是坏的,那么请换另一个软件试试看。
用U盘引导进入pe环境,直接运行U盘上的easyrecovery主程序。在easyrecovery主界面中选择”数据恢复”→格式化恢复→选择分区→点击”下一步”。等待扫描和目录构建完成。在找到的文件中,根据目录树把前面提到的几个文件夹全部恢复出来放置到U盘中,另外还要记下私钥C:\Documents and Settings\Administrator\Application Data\Microsoft\Crypto\RSA”文件夹的名称。如果目录树中找不到文件夹,那么请进入”Lostfile”文件夹,在里面的”DIR*”文件夹中逐一寻找。或者使用”查找”功能查找”Crypto”关键词。但是我觉得这个查找功能不够强大,如果”查找”功能查找不到的话,建议大家还是手动找一次吧,别轻易放弃。而且需要提醒大家的是,如果找到多个文件,可以通过”日期”判断需要恢复哪一个。
回忆用户名和密码或者问当事人要原来的用户名和密码。
构造一个可以解密文件的用户,解密被加密文件
如果你对系统有”洁癖”不愿意增加任何多余的文件和垃圾配置,那么可以在进行这一步之前对当前系统做一个GHOST备份。
例如私钥为:S-1-5-21-842925246-879983540-1417001333-1003,SID是前面的部分,后面的1003是RID
一、构造SID,这里我们用微软提供的一个小工具来改变SID,工具的名称叫做Newsid。程序之后,先同意协议,然后一路下一步直到”Choose a SID”;这里选择”Specify”下面输入需要修改的SID,之后继续”Next”,完成之后自动重启系统,SID就修改好了。提醒一下,如果只是删除了用户而不是重装系统的话,可以跳过这一步,因为SID本来就是一样的。
二、获得system权限。因为修改HKEY_LOCAL_MACHINESAM需要system用户权限。所以这里我们使用微软提供的psexec工具,在开始菜单的运行中输入cmd命令并回车,打开命令提示符窗口。之后使用CD命令定位到psexec所在的目录或者直接以绝对路径例如c:psexec -i -d -s %windir%\regedit.exe这样的命令以system用户身份运行注册表编辑器。
小知识:Windows新建用户的RID值由HKEY_LOCAL_MACHINESAMSAMDomainsAccount注册表项的”F”键值确定。具体的说是在0048偏移量的4个字节,是二进制数据。通过修改这个数据可以让新建用户拥有一样的RID。也就是说我们要指定的RID需要通过新建用户实现。
三、修改注册表键值。定位到HKEY_LOCAL_MACHINESAMSAMDomainsAccount,找到并打开F键值。因为注册表中键值数据是用16进制形式存放的,而且是反转形式保存。所以在这里我们需要这样做:我们要修改的RID是1003,1003转换为16进制是03EB,翻转过来就是EB03。数据的进制转换可以使用Windows自动的”计算器”转换,别以为这东西没用哦。如果转换出来的数据是3位数例如3EB,则需要在前面补一个0变成4位数03EB。找到对应的0048偏移量,把数值修改为我们上面推算出来的数值。
四、依次:①重启更换管理员账户登录→使用EFS随便加密一个文件(目的就是产生私钥、公钥、主钥的文件夹)→把恢复出来的文件复制到对应文件夹→重启。-----亲测可行。
或者:②重启电脑→新建一个同名账户,密码也一样→用新建用户登录系统,使用EFS随便加密一个文件(目的就是产生私钥、公钥、主钥的文件夹),然后注销。
就可以正常解密文件了。