使用 .bat/.exe 文件在 Windows 中保护文件夹的密码:这是一种不好的做法吗?

信息安全 密码
2021-08-11 17:05:41

我一直在浏览互联网,寻找在 Windows 7 中使用密码保护文件夹的简单方法,无需任何额外软件或 BitLocker。

我发现有几个地方声明使用 .bat 文件(然后将其转换为 .exe 文件以避免人们在文本编辑器中打开它并理解它)将允许这样做。

然而,有些事情告诉我这是一个不太安全的系统。

我在这里分享一些他们声称可以工作的典型 .bat 文件代码,并用密码保护文件夹:

@ECHO OFF
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Private goto MDPrivate
:CONFIRM
echo Are you sure to lock this folder? (Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Invalid choice.
goto CONFIRM
:LOCK
ren Private "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
echo Enter password to Unlock Your Secure Folder
set/p "pass=>"
if NOT %pass%== wonderhowtogoto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Private
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDPrivate
md Private
echo Private created successfully
goto End
:End

导出为.exe文件后会不会很容易破解?如果我加密 .exe 文件以提高安全性怎么办?

而且,是否需要隐藏文件夹才能使这个“技巧”起作用?那些钥匙是什么样的21EC2020-3AEA-1069-A2DD-08002B30309D

非常感谢您在这里提供一些亮点。

4个回答

这个批处理脚本根本不保护任何东西。它只是重命名有问题的文件夹并设置系统和隐藏属性,这使文件夹更难找到,可能会让你 10 岁的孩子看不到它,但它不会阻止其他人。

最多,我们可以称其为“隐蔽安全”,但我什至不愿称其为,因为实际上,设置隐藏和系统属性并没有那么隐蔽。

根本没有加密 - 文件夹没有密码保护,密码仅在批处理文件中使用,以阻止某人使用批处理文件自动删除隐藏和系统属性并将文件夹重命名为理智的东西。

导出成.exe文件后会不会很容易破解?

是的。只需从文件中提取所有字符串.exe,您就会找到“密码”。

如果我加密.exe文件以获得额外的安全性怎么办?

同样,该脚本根本不提供任何安全性。如果您对批处理/.exe文件进行加密,则会使其更难使用,但实际上并没有使相关文件夹更安全。

那些钥匙是什么样的21EC2020-3AEA-1069-A2DD-08002B30309D

这些本身并不意味着任何东西(编辑:请参阅 Bob 和 Danny 关于连接点的评论以了解它们的含义)。它们可能是批处理文件所属的更大系统的一部分,但它们不会为实际文件夹的安全性添加任何内容——它只是文件夹新名称的一部分,而它是“隐藏的”。

该怎么做

您已经说过:使用 BitLocker 或 VeraCrypt。Veracrypt 可以处理包含整个文件夹树的容器文件,它提供真正的安全性,BitLocker 也是如此。

如果您不想使用任何额外的软件,请按照 Mike 的建议执行并压缩文件夹,并使用密码保护它。不过,这为您提供的安全性与 BitLocker、VeraCrypt 和同胞相去甚远。

首先,您应该阅读有关Kerchoff 原理的内容:

一个密码系统应该是安全的,即使系统的所有内容,除了密钥,都是公共知识。

您提出的系统只有在代码保密的情况下才有效(尽管我不会使用“安全”这个词)。即使您.bat通过将代码重命名为“隐藏”代码并将.exe该文件提供给任何技术中等的黑客,他们也会在比记事本更高级的文本编辑器中打开它,并在不到 30 秒的时间内弄清楚您做了什么。

相反,请尝试将其转变为无需隐藏代码的基于密钥的系统。例如,将文件夹压缩为受密码保护的 ZIP 并仅在内存中(即在 zip 查看器程序中)访问它,而不是将其解压缩到磁盘。

这是一个糟糕的做法吗?

是的。

批处理文件不使用密码来取消隐藏您的文件夹,它只是比较它,如果结果正确,则运行“解锁”命令。并且没有什么可以阻止您在不检查密码的情况下运行这些命令:

attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Private

砰,秘密文件夹被“解锁”了。不需要开裂。

这甚至不会提供模糊性 - 常规 Windows 搜索仍会搜索重命名和隐藏文件夹中的文件。只是出于好奇测试了它。

甚至打开 exe 文件也没有意义;只需对正确类型的文件进行通常的搜索 - 这正是试图窃取您文件的人的开始(好吧,也许就在您的文档之后),它会弹出。

它甚至不适合 .bat。如果目标是从不熟悉计算机的客人中隐藏文件,但要让所有高级用户都能看到它,您可以将它移动到没有分配字母的分区,通过 GUID 调用它。

还有一些比把它变成一个 exe 来掩盖蝙蝠的花哨的技巧,比如让它自我修改,但是没有加密就可以提供安全性。