Ctfnoob01-换行符
跨平台换行符差异导致的密码破解失败
在进行密码破解任务时,我遇到了一个典型但容易被忽视的问题:不同操作系统间的换行符差异。在这篇博客中,我将分享我的经验和解决方案,希望能帮助那些可能面临同样挑战的人。
背景
在 Windows
系统上生成了一个用于密码破解的字典文件,文件中的换行符遵循
Windows 的标准,即 CRLF
(\r\n)。然而,我的破解工具运行在 WSL
环境中,该环境以及大多数 Linux 工具期望的换行符是
LF (\n)。
我确定字典中有正确密码。当使用 VSCode 的
WSL
终端运行如下fcrackzip命令时,破解尝试失败了
1 | fcrackzip -D -p ./vspro/passwords.txt -u flag.zip |
通过file命令检查字典文件,确认了问题所在:
1 | ➜ code file ./vspro/passwords.txt |
这表明文件是用 CRLF 作为换行符的,而不是
WSL 和 Linux 工具期望的 LF
解决方案
If conditions permit
在 linux 环境中使用脚本生成字典。
Else
使用指令转换换行符
为了解决这个问题,我需要将字典文件中的 CRLF
换行符转换为LF。Linux和WSL提供了一个非常方便的工具dos2unix,它可以实现这种转换。
1 | sudo apt update && sudo apt install dos2unix |
安装完成后,使用dos2unix命令转换文件:
1 | dos2unix ./vspro/passwords.txt |
验证转换
转换完成后,再次使用file命令验证文件的换行符:
1 | ➜ code file ./vspro/passwords.txt |
这次,文件描述不再提到CRLF换行符,说明转换成功。
重新尝试破解
转换换行符后,我再次运行了fcrackzip命令,这次成功破解了ZIP文件的密码。