利用 John the Ripper 破解用户登录密码

一、什么是 John the Ripper ?

看到这个标题,想必大家都很好奇,John the Ripper 是个什么东西呢?如果直译其名字的话就是: John 的撕裂者(工具)。 相比大家都会觉得摸不着头脑,撕裂者是啥玩意啊?

事实上,John the Ripper 是一款大受欢迎的、免费的开源软件。也是一个基于字典的快速破解密码的工具,是一款用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如 DESMD4MD5 等。 John the Ripper 支持字典破解方式和暴力破解方式。它支持多种不同类型的系统架构,包括 UnixLinuxWindowsDOS 模式、 BeOSOpenVMS ,主要目的是破解不够牢固的 Unix/Linux 系统密码。

如果你想使用专门针对特定操作系统优化、并生成相应本地代码的商业版本的该产品,那么你可以使用 John the Ripper Pro ,主页地址在这里:http://www.openwall.com/john/pro/,你可以根据你的需要去购买或者下载破解字典表。本文以 Linux 下的 John the Ripper 为例来给大家讲解其用法。

目前 John the Ripper 的最新版本是 1.8.0 ,我们可以通过输入 john 命令去查看当前的版本信息和帮助信息。

如果想了解 John the Ripper 的最新动态,请参看官网:https://www.openwall.com/john/

如果你想添加新功能, Github 项目链接在这里:https://github.com/magnumripper/JohnTheRipper

二、John the Ripper 的安装和使用

John the RipperWindowsLinuxMacOS 都有对应的安装包,去官网下载即可。

官网链接:https://www.openwall.com/john/

而在这里我就介绍 Debian/Ubuntu 的简便安装方法。由于在 apt 仓库中已经内置了 John the Ripper ,我们只需要通过以下命令即可安装。

sudo apt-get install john

john 命令的具体参数选项如下表:

选 项

描 述

--single

single crack 模式,使用配置文件中的规则进行破解

--wordlist=FILE--stdin

字典模式,从 FILE 或标准输入中读取词汇

--rules

打开字典模式的词汇表切分规则

--incremental[=MODE]

使用增量模式

--external=MODE

打开外部模式或单词过滤,使用 [List.External:MODE] 节中定义的外部函数

--stdout[=LENGTH]

不进行破解,仅仅把生成的、要测试是否为口令的词汇输出到标准输出上

--restore[=NAME]

恢复被中断的破解过程,从指定文件或默认为 $JOHN/john.rec 的文件中读取破解过程的状态信息

--session=NAME

将新的破解会话命名为 NAME ,该选项用于会话中断恢复和同时运行多个破解实例的情况

--status[=NAME]

显示会话状态

--make-charset=FILE

生成一个字符集文件,覆盖 FILE 文件,用于增量模式

--show

显示已破解口令

--test

进行基准测试

--users=[-]LOGIN|UID[,..]

选择指定的一个或多个账户进行破解或其他操作,列表前的减号表示反向操作,说明对列出账户之外的账户进行破解或其他操作

--groups=[-]GID[,..]

对指定用户组的账户进行破解,减号表示反向操作,说明对列出组之外的账户进行破解。

--shells=[-]SHELL[,..]

对使用指定 shell 的账户进行操作,减号表示反向操作

--salts=[-]COUNT

至少对 COUNT 口令加载加盐,减号表示反向操作

--format=NAME

指定密文格式名称,为 DES/BSDI/MD5/BF/AFS/LM 之一

--save-memory=LEVEL

设置内存节省模式,当内存不多时选用这个选项。 LEVEL 取值在 1~3 之间

下面我们以破解 Linux 用户密码为例子简单讲解一些 John the Ripper 的用法。

三、John the Ripper 破解 Linux 用户登录密码

环境准备

  • Debian/Ubuntu
  • John the Ripper 工具
  • /etc/passwd
  • /etc/shadow

注:/etc/passwd/etc/shadow 两个文件包含了用户的信息和密码 hash

破解过程

1、创建一个测试用户

我们可以添加一个测试用户 test ,并把它密码设置为 password

创建新用户test:

sudo useradd -m test -G sudo -s /bin/zsh

zsh 是我当前默认的 shell ,你可以通过如下命令查看你当前的 shell

echo $SHELL

设置 test 用户的密码:

sudo passwd test

出现如下信息,即说明成功了。

2、利用 unshadow 组合 /etc/passwd/etc/shadow 两个文件

unshadow 命令会将 /etc/passwd 的数据和 /etc/shadow 的数据结合起来,创建 1 个含有用户名和密码详细信息的文件。

我们可以通过以下命令将这两个文件结合起来:

cd ~
sudo unshadow /etc/passwd /etc/shadow > test_passwd

3、使用 John the Ripper 破解 Linux 用户登录密码

我们这时候还需要一个字典,由于 John 自带了一个字典,字典位于 /usr/share/john/password.lst 。当然你也可以自行去网上选择适合你的字典。

我们可以开始对Linux登录用户名和密码进行破解:

john --wordlist=/usr/share/john/password.lst test_passwd

破解结果如下:

我们可以看到, test_passwd 文件中存在的三个用户名 roottestpython 的密码,均被破解了。

我们可以查看破解信息:

john --show test_passwd

以上是关于 John the Ripper 其中一个简单地使用,更多高级用法,像暴力破解,增量模式等等,请参看官方文档:https://www.openwall.com/john/doc/MODES.shtml

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏【转载】DRF+Vue+Mysql_生鲜超市系统

七、用户登录与手机注册

转载原文:https://cloud.tencent.com/developer/article/1097993

99510
来自专栏优启梦

nginx反向代理http和https共同使用 双存在

不能自适应协议,也不支持协议变量,各种百度啊,两个钟头,测试了各种,都不适用宝塔,

19160
来自专栏bdcn

CoreOS配置Docker API TLS认证 顶

我们经常会利用Portainer来管理docker环境,也经常会用Jenkins来自动构建和部署docker,远程管理都会使用到Docker API,通常我们只...

25620
来自专栏大内老A

[WCF安全系列]实例演示:TLS/SSL在WCF中的应用[HTTPS]

上一篇演示的是绑定类型为NetTcpBinding情况下基于TLS/SSL的Transport安全模式的实现,接下来我们改用另外一种绑定:WS2007HttpB...

30680
来自专栏python爬虫实战之路

12306自动刷票下单-登录篇

12306网站推出图片验证码以后,对于抢票软件就提出了更高的要求,本篇并不涉及自动识别验证码登录(主要是博主能力所限),提供一个途径-打码平台,这个几乎是可以破...

17640
来自专栏魏艾斯博客www.vpsss.net

Winscp 密钥登录服务器配置过程 提高 SFTP 连接安全性

Winscp 是常用的 SFTP 软件,用来连接 Linux 服务器上传下载文件用的。前面魏艾斯博客说过Xshell 用 SSH 密钥登录服务器的配置过程,当你...

45420
来自专栏james大数据架构

Validation of viewstate MAC failed 解决办法

大部分人都说是在页里或web.config里加EnableEventValidation="false" EnableViewStateMac="false" ...

287100
来自专栏张善友的专栏

ASP.NET 2.0加密Web.config 配置文件

可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码、数据库连接字符串和加密密钥)。对配置信息进行...

26860
来自专栏小狼的世界

SMTP的相关命令

邮件的发送,主要是通过SMTP协议来实现的。SMTP协议最早在RFC 821(1982年)中定义,最后更新是在RFC 5321(2008年)中,更新中包含了扩展...

23420
来自专栏有趣的django

Django REST framework+Vue 打造生鲜超市(六) 七、用户登录与手机注册

七、用户登录与手机注册 7.1.drf的token (1)INSTALL_APP中添加 INSTALLED_APPS = ( ... 'rest...

2.9K80

扫码关注云+社区

领取腾讯云代金券