Frank4DD, @ 2000年5月
Viper 是一款针对使用 crypt 加密的密码进行暴力破解的 UNIX 风格密码破解工具。它源自 Hale 的 viper 1.4 Perl 程序。虽然市面上还有其他更强大的破解程序,但此工具主要用于研究密码安全性,同时硬件速度正急剧提升。如果我没记错,我记得在 PDP-11 上生成密码需要 30 秒。而现在,我们可以在单个系统的单个 CPU 核心上每秒执行超过 230,000 次生成,速度提升了数百万倍。不过,在全密钥空间中破解 8 字符密码仍需一些时间,详见 keyspace.txt。
最初,ufc-crypt 实现似乎是当时最快的 crypt 函数,使用它使得将程序移植到不同平台变得容易。
Viper 可在 Linux、Solaris、HPUX 和 DOS/Windows 上运行。
原始版本,Hale 的 viper.pl(Perl):
| 年份 | 系统 | CPU | 操作系统 | 版本 | CPS 速率 |
|---|---|---|---|---|---|
| 2000 | SparcStation | SUN U-Sparc 400Mhz | Solaris | 2.6 | 700 |
| 2000 | 台式电脑 | Pentium III 650Mhz | Linux | 2.2.13 | 16,000 |
修改后的 viper(C 语言):
Viper v1.6 (Hale 05/12/2000) - C version by Frank4DD (05/05/2014)
Wiltered Fire - www.wilter.com/wf, incl. bugfixes by David C. Rankin
-f File to load password from (required unless using lsf)
-u Username to load from file (required unless using lsf)
-lsf Load saved file from previous session
-pf Save progress to file at update interval
-rf # Amount of time in hours to run for (default infinite)
-c # Character set from charset.ini to use (default 1)
-pws # Minimum password length (starting value, default 1)
-pwl # Maximum password length (default 8 - maximum 16)
-ui # Console update interval (in minutes - default 10)
-v Verbose outputsusie112:/home/me/viper-1.6/src # ./viper -f passwd -u root -ui 1 -v Viper v1.6 (Hale 05/12/2000) - C version by Frank4DD (05/05/2014) Wiltered Fire - www.wilter.com/wf, incl. bugfixes by David C. Rankin Found: user root pw:reUJbHrFWYCQk Found: Charset 0 in charset.ini ...command line parameters loaded. Character set is 93 chars long Starting crack on: Sun Oct 3 23:04:44 2009 Cracking for pass length 1 (93 possibilities) Cracking for pass length 2 (8649 possibilities) Cracking for pass length 3 (804357 possibilities) Cracking for pass length 4 (7.48052e+07 possibilities) [ Length: | Last: | CPS: | Time Spent: | Time Remaining: | Done: ] ------------------------------------------------------------------------------- [ 4 | kq2r | 150000 | 000d:00h:01m:00s | 000d:00h:07m:18s | 12.03% ] The password has been located. Username : root Password : test Started : Sun Oct 3 23:04:44 2009 Finished : Sun Oct 3 23:06:30 2009 Duration : 000d:00h:01m:00s Viper exiting...
Viper 1.5 版本已更新,使用 OpenSSL DES 例程进行加密。UFC 库已弃用,因为已过时,甚至在某些系统上会导致段错误。使用 OpenSSL 库可带来约 25% 的性能提升。除库外,还需安装 OpenSSL 头文件(dev 包)才能编译 Viper。
Viper 1.6 版本获得了 David C. Rankin 的 bug 修复。
| 年份 | 系统 | CPU | 操作系统 | 版本 | 编译器 | CPS 速率 |
|---|
| 2000 | HP 9000-B180L | PA-7300LC 180Mhz | HPUX | 10.20 | gcc | 7000 |
| 2000 | SparcStation | SUN U-Sparc 400Mhz | Solaris | 2.6 | gcc | 25,000 |
| 2000 | 台式电脑 | Pentium III 650Mhz | Linux | 2.2.13 | gcc | 40,000 |
| 2000 | 台式电脑 | Pentium III 650Mhz | Windows | Win98 | gcc | 50,000 |
| 2000 | 台式电脑 | Pentium III 650Mhz | DOS | 7.0 | djgpp | 50,000 |
| 2004 | HP 笔记本电脑 | 1x 1.7 GHz AMD64 | Windows | WinXP | gcc | 120,000 |
| 2011 | 云服务器 | vCPU(未知) | Linux | 2.6.31 | gcc | 150,000 |
| 2016 | 云服务器 | Xeon E5-2680 2.5GHz | Linux | 4.4.0 | gcc | 250,000 |