一、什么是 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

四、演示视频

利用 John the Ripper 破解用户登录密码的更多相关文章

  1. John the Ripper破解密码

    目录 John the Ripper 破解Linux系统密码 破解Windows系统密码 John the Ripper John the Ripper是一个快速的密码破解工具,用于在已知密文的情况下 ...

  2. 利用MYSQL的函数实现用户登录功能,进出都是JSON(第二版)

    利用MYSQL的函数实现用户登录功能,进出都是JSON(第二版) CREATE DEFINER=`root`@`%` FUNCTION `uc_session_login`( `reqjson` JS ...

  3. MySQL 用户登录密码和远程登录权限问题

    1.mysql数据库,忘记root用户登录密码. 解决如下: a.重置密码 #/etc/init.d/mysqld stop #mysqld_safe --user=mysql --skip-gran ...

  4. opencms忘记Admin用户登录密码解决方案

    不知道现在还有多少人在用opencms: 我今天就是遇到一个问题,很久之前部署的一台opencms服务器,突然忘记密码了,记录下处理方法: 希望对你有帮助: opencms忘记Admin用户登录密码了 ...

  5. 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密

    项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...

  6. 六步破解win2008R2登录密码

    防火墙没有开启,win2008R被当成矿机,只好重新破解密码进去解决问题,试了好多方法,下列方法绝对实用简单. 破解2008登录密码的方法: 1.进入PE2.找到文件:windows\system32 ...

  7. 修改ranger ui的admin用户登录密码踩坑小记

    修改的ranger ui的admin用户登录密码时,需要在ranger的配置里把admin_password改成一样的,否则hdfs的namenode在使用admin时启动不起来,异常如下: Trac ...

  8. 用户登录密码RSA加密后传输的实现,非明文密码传输

    在用户登录页面,用户输入密码后,在传送到服务器端时,为防止在密码传送过程中,被如360这种东东给拦截到, 需要在传送前对密码进行加密,然后再传送! 利用RSA加密,在客户端使用公钥对密码进行加密,在服 ...

  9. 用SamInside破解Windows登录密码

    用小马PE的USB-HDD+格式制作启动优盘: 笔记本启动时按ESC键,选择USB启动: 进入WinPE后,将%SystemRoot%/system32/config全部拷贝出来(WinXP这个文件夹 ...

随机推荐

  1. [20171227]表的FULL_HASH_VALUE值的计算.txt

    [20171227]表的FULL_HASH_VALUE值的计算.txt --//sql_id的计算是使用MD5算法进行哈希,生成一个128位的Hash Value,其中低32位作为HASH VALUE ...

  2. C# MD5 加密

    public static string MD5Encrypt(string clearText) { string result = string.Empty; byte[] byteArray = ...

  3. 怎样让引用类库的类在HelpPage上显示Description

        最近在做 web api 开发的时候遇到这样的问题,即 HelpPage 里只能显示 api 控制器上的注释,对于那些引用了外部类库的类(比如POST提交需要用到的类),就无法显示它们的备注, ...

  4. python 机器学习中模型评估和调参

    在做数据处理时,需要用到不同的手法,如特征标准化,主成分分析,等等会重复用到某些参数,sklearn中提供了管道,可以一次性的解决该问题 先展示先通常的做法 import pandas as pd f ...

  5. 什么是ORM?为啥要是用ORM?

    了解orm,先了解以下概念: 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的数据存储在关系型的数据库中 ...

  6. Github API

    Web API web api是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互,这种请求被称为API调用.请求的数据将以易于处理的格式(如JSON或CSV)返回:依赖于外部数据源的大多 ...

  7. 如何轻松搞定 笔记本搜不到WIFI信号问题

    经常用电脑的同志肯定遇到过:一开机,发现右下角网络图标有个×号,wifi信号也搜不到:或者其他wifi信号能搜到,唯独自家的搜不到,是不是感觉很绝望啊,居然被wifi欺负到身上了,这也太憋屈了吧. 此 ...

  8. WebStorm如何分配运行内存?The IDE is running low on memory...

    vue项目做的后台管理系统做得差不多了,安装的依赖包也越来越大,就在春节放假的前两天,突然发现我的电脑居然带不动WebStorm了,查改一些代码,WebStorm运行迟钝,鼠标滑动严重“掉帧”,让我非 ...

  9. 让zepto支持slideup(),slidedown()

    zepto不支持slideup()和slidedown():使用以下方法可以支持该功能 <div class="slide"> <p> zepto不支持sl ...

  10. 网络编程_UDP协议_发送端与接收端

    创建UDP传输的发送端 : 1.建立udp的socket服务   2.将要发送的数据封装到数据包中   3.通过udp的socket服务 将数据包发送出去   4.关闭socket服务(因为调用了系统 ...