=========================
John the Ripper 简介
=========================


John the Ripper 是 什 么 东西? 如 果 直 译 其 名 字 的 话 就 是: JOHN 的撕 裂 者(工 具)。 翻 译 的 很 难 听 吧。 实 际上 它 是 一 个 工 具 软 件, 用 于 在 已 知 密文 的 情 况 下 尝 试 破 解 出 明 文 的 破 解 密码 软 件。目 前 的 最 新 版 本 是 JOHN 1.4 版, 主要 支 持 对 DES、 MD5 两 种 加 密 方式 的 密 文 进行 破 解 工 作。 它 可 以 工 作 于 多 中不 同 的机 型 以 及 多 种 不 同 的 操作 系 统 之 下, 目前 已 经 测 试 过能 够 正 常 运 行 的 操 作 系统 有: Linux x86, FreeBSD x86, Solaris 2.x SPARC, OSF/1 Alpha, DOS, WinNT/Win95。 在 1998 年 年 初,JOHN1.4 已 经针 对 INTEL 的 MMX 处 理 器 进 行 了 针 对 性 的优化, 速 度 可 快 30% 左 右。 如 果 你 想 了 解最新 的 动 态, 请 访 问: http://www.false.com/security/john, 这 里 是 JOHN 的 窝 点。


------------------------------
使 用 预 览
------------------------------


以 下 快 速 入 门 针 对 PC 用 户。
假 设 你 已 经 取 得 了 某 个 SHADOW 文 件, 并 且被 存 为 SHADOW.TXT 文 件。 在 你 的 硬 盘 中 建 一个 新 的 目 录, 如 HACK 进 入 这 个 目 录, 将 JOHN1.4 在 此 目 录 中 解 开, 将 SHADOW.TXT 同 样 拷入 此 目 录, 这 样 我 们 就 完 成 了 解 密 的准 备 工 作。


现 在 开 始 进 行 解 密 步 骤:



  1. 先 消 灭 FOOL USER, 就 是 “笨 蛋 用 户”:
    john -single shadow.txt
  2. 再 消 灭 稍 微 聪 明 一 点 的 用 户:
    john -wordfile:password.lst -rules shadow.txt
  3. 最 后 进 行 大 屠 杀:
    john -i:all shadow.txt
    当 然 了, 第 三 步 可 能 要 你 的 电 脑 跑 上 10000 年。

解 释:



  1. 第 一 步 主 要 针 对 笨 蛋 而 进 行 的, 原 理 是 根 据 用 户 的 名 称, 加 上 常 见 的 变 化 而 猜 测 密 码。 一 般 所 谓 的 笨 蛋 是 这 样 的, 比 如 此 用 户 叫 fool, 而 他 的 密 码 是 fool123、 fool1、 loof、 loof123、 lofo...。 这 样 的 用 户 一 般 在 一 分 钟 内 会 被 全 部 消 灭。
  2. 第 二 部 是 使 用 字 典 文 件 来 进 行 解 密, 不 为 什 么, 只 是 因 为 设 置 密 码 的是 人 而 不 是 机 器, 如 人 们 常 用 hello、 superman、 cooler、 asdfgh、 123456 等 作 为 自 己 的 密 码。 而 -rules 参 数 则 在 此 基 础 上 再 加 上 些 变 化, 如 字 典 中 有 单 词 cool, 则 JOHN 还 会 尝 试 使 用 cooler、 CoOl、 Cool 等 单 词 变 化 进 行 解 密。 一 般 视 SHADOW 中 的 用 户 多 少 及 你 的 字 典 大 小、 你 的 机 器 速 度, 解 密 时 间 从 几 小 时 到 几 天 不 等。
  3. 第 三 步 是 纯 粹 的 碰 运 气 解 法, 主 要 原 理 是 遍 历 所 有 可 能 的 密 匙 空 间。 JOHN 会 尝 试 以 95 个 字 母 (因 为 从 键 盘 上 只 能 输 入 95 种 可 能 的 键 值) 进 行 1-8 (8 个 字 母 是 密 码 的 最 长 值, 所 有 密 码 中 8 位 以 后 的 部 分 均 不 会 被 使 用, 目 前 的 DES 加 密 体 系 就 是 这 样 的) 个 长 度 的 所 有 组 合, 这 是 很 漫 长 的 过 程, 我 们 计 算 一 下: 以 仅 攻 击 一 个 用 户 为 例, MMX200 微 机 一 台 (攻 击 速 度 18000 次/秒), 假 设 遍 历 50% 的 密 码 空 间, 需 要 的 时 间 为:



(95^8+95^7+95^6+95^7+95^6+.....+95^1)/2/18000
=6.7047809E15/18000
=3.7248783E11秒
=10346884.19小时
=4311201.745天
=11811.5年


还 好 在 JOHN 可 以 进 行 自 动 预设 取 值。 所 以 这 样 破 解 密 码 还 是 可 能的, 一 般 的 经 验 是 20 个 小 时 可 能 破 解 一个, 可 能 什 么 都 没 有。


本 文 后 面 介 绍 的 经 验 可 以 帮 助 你 尽快 地 进 行 破 解。


--------------------------
详 细 功 能 说 明
--------------------------


John the Ripper 1.4 是 目 前比 较 好 的 破 解 密 码 工 具, 在 解 密 过 程中 会 自 动 定 时 存 盘, 你 也 可 以 强 迫 中 断解 密 过 程 (用 ctrl+c), 下 次 还 可 以 从 中 断的 地 方 继 续 进 行 下 去 (john -restore), 任 何时 候 敲 击 键 盘, 你 就 可 以 看 到 整 个 解密 的 进 行 情 况, 所 有 已 经 被 破 解 的 密码 会 被 保 存 在 当 前 目 录 下 的 JOHN.POT 文 件中, SHADOW 中 所 有 密 文 相 同 的 用 户 会 被 归成 一 类, 这 样 JOHN 就 不 会 进 行 无 谓 的 重复 劳 动 了。 在 程 序 的 设 计 中, 关 键 的 密码 生 成 的 条 件 被 放 在 JOHN.INI 文 件 中, 你可 以 自 行 修 改 设 置, 不 仅 支 持 单 词 类型 的 变 化, 而 且 支 持 自 己 编 写 C 的 小 程序 限 制 密 码 的 取 值 方 式。 唯 一 的 遗 憾是: 在 自 动 产 生 密 码 的 遍 历 解 密 方 法中 不 支 持 -rules 选 项。 不 过 还 好 有 方 法 可以 克 服。


命令行的参数功能解释
-----------------------


命令行方式: john [-功能选项] [密码文件名]


功 能 选 项 (所 有 的 选 项 均 对 大 小 写 不敏 感, 而 且 也 不 需 要 全 部 输 入, 只 要 在保 证 不 与 其 他 参 数 冲 突 的 前 提 下 输 入即 可, 如 -restore 参 数 只 要 输 入 -res 即 可):



-pwfile:[,..] 用 于 指 定 存 放 密 文 所 在 的 文 件 名,(可 以 输 入 多 个, 文 件 名 一 我 “,” 分 隔, 也 可 以 使 用 * 或 者 ? 这 两 个 通 配 符 引 用 一 批 文 件)。 也 可 以 不 使 用 此 参 数, 将 文 件 名 放 在 命 令 行 的 最 后 即 可。


-wordfile:<字典文件名> -stdin 指 定 的 用 于 解 密 用 的 字 典 文 件 名。 你 也 可 以 使 用 STDIO 来 输 入, 就 是 在 键 盘 中 输 入。


-rules 在 解 密 过 程 中 使 用 单 词 规 则 变 化 功 能。 如 将 尝 试 cool 单 词 的 其 他 可 能, 如 COOLER、 Cool 等, 详 细 规 则 可 以 在 JOHN.INI 文 件 中 的 [List.Rules:Wordlist] 部 分 查 到, 我 们 在 下 面 详 细 解 释。


-incremental[:<模式名称>] 使 用 遍 历 模 式, 就 是 组 合 密 码 的 所 有 可 能 情 况, 同 样 可 以 在 JOHN.INI 文 件 中 的 [Incremental:*****] 部 分 查 到, 我 们 在 下 面 详 细 解 释。


-single 使 用 单 一 模 式 进 行 解 密, 主 要 是 根 据 用 户 名 产 生变 化 来 猜 测 解 密, 可 以 消 灭 笨 蛋 用 户。 其 组 合 规 则 可 以 在 JOHN.INI 文 件 中 的 [List.Rules:Single] 部 分 查 到, 我 们 在 下 面 详 细 解 释。


-external:<模式名称> 使 用 自 定 义 的 扩 展 解 密 模 式, 你 可 以 在 john.ini 中 定 义 自 己 需 要 的 密 码 组 合 方 式。 JOHN 也 在 INI 文 件 中 给 出 了几 个 示 例, 在 INI 文 件 的 [List.External:******] 中 所 定 义 的 自 订 破 解 功 能。


-restore[:<文件名>] 继 续 上 次 的 破 解 工 作, JOHN 被 中 断 后, 当 前 的 解 密 进 度 情 况 被 存 放 在 RESTORE 文 件 中, 你 可 以 拷 贝 这 个 文 件 到 一 个 新 的 文 件 中。 如 果 参 数 后 不 带 文 件 名, J O H N 默 认 使 用 RESTORE 文 件。


-makechars:<文件名> 制 作 一 个 字 符 表, 你 所 指 定 的 文 件 如 果 存 在, 则 将 会 被 覆 盖。 JOHN 尝 试 使 用 内 在 规 则 在 相 应 密 匙 空 间 中 生 成 一 个 最 有 可 能 击 中 的 密 码 组 合, 它 会 参 考 在 JOHN.POT 文 件 中 已 经 存 在 的 密 匙。


-show 显 示 已 经 破 解 出 的 密 码, 因 为 JOHN.POT 文 件 中 并 不 包 含 用 户 名, 同 时 你 应 该 输 入 相 应 的 包 含 密 码 的 文 件 名, JOHN 会 输 出 已 经 被 解 密 的 用 户 连 同 密 码 的 详 细 表 格。


-test 测 试 当 前 机 器 运 行 JOHN 的 解 密 速 度, 需 要 1 分 钟, 它 会 得 出 在 当 前 的 情 况 下 解 密 的 各 种 可 能 情 况 下 相 应 的 解 密 速 度, 如 同 时 解 密 100 个 用 户 时 的 平 均 速 度, 使 用 遍 历 法 解 密 模 式 时 解 密 的 速 度。 salts 指 用 户 个 数, 如 果 给 出 的 对 于 100 个 用 户 解 密 的 平 均 速 度 为 18000 次/秒, 那 么 表 明 同 时 对 100 个 用 户 解 密, 解 密的 速 度 为 每 个 180 次/秒。 因 为 绝 大 多 数 的 时 间 被 用 于 密 匙 比 较 过 程 中 了。 所 以 应 该 对 用 户 进 行 挑 选。


-users:[,..] 只 破 解 某 类 型 的 用 户 或 者 属 于 某 个 组 的 用 户。 如 果 得 到 的 PASSWD 文 件 没 有 包 含 密 文, 那 么 在 得 到 SHADOW 后 应 该 进 行 组 合, JOHN 的 附 带 程 序 UNSHADOW.EXE 可 以 完 成 这 一 过 程, 当 然 了, 你 也 可 以 手 工 做。 一 般 的 能 够 进 入 CSH 的 用 户 都 是 解 密 的 首 选 对 象。 也 可 以 要 UID=0 的 ROOT 级 别 的 用 户。


-shells:[!][,..] 和 上 面 的 参 数 一 样, 这 一 选 项 可 以 选 择 对 所 有 可 以 使 用 shell 的 用 户 进 行 解 密, 对 其 他 用 户 不 予 理 睬。 “!” 就 是 表 示 不 要 某 些 类 型 的 用 户。 例 如: “ -shells:csh”。


-salts:[!] 只 选 择 解 密 用 户 大 于 的 帐 号, 可 以 使 你 得 到 选 择 的 权 利, 尽 快 的 得 到 所 需 要 的 用 户 的 PASS。


-lamesalts 指 定 用 户 中 密 码 所 使 用 的 cleartext。 (我 不 大 清 楚 此 功 能 的 作 用)。


-timeout:<几分钟> 指 定 解 密 持 续 的 时 间 是 几 分 钟, 到 时 间 JOHN 自 动 停 止 运 行。


-list 在 解 密 过 程 中 在 屏 幕 上 列 出 所 有 正 在 尝 试 使 用 的 密 码, 建 议 不 要 使 用, 它 会 将 大 部 分 时 间 浪 费 在 显 示 上, 极 大 地 拖 慢 解 密 速 度。 一 般 只 是 适 用 于 重 定 向 输 出 到 文 件 后, 检 验 你 所 设 定 的 某 些 模 式 是 否 正 常。


-beep -quiet 当 解 密 出 密 码 时 是 否 要 让 PC 喇 叭 叫 一 下, 以 提 醒 你。


-noname -nohash 不 使 用 内 存 来 保 存 “用 户 名” 等 内 容。


-des -md5 指 定 使 用 的 解 密 方 式 是 解 DES 还 是 MD5, 对 于 解 密 DES 密 码 不 用 理 会 这 一 选 项。



 

 

---------------------------
john 解 密 模 式 详 解
---------------------------


一、“Single Crack” 模式 --- 即“简单解密模式”


这 一 模 式 是 “john” 的 独 到 的 地 方, 主要 原 理 是 根 据 用 户 名 猜 测 其 可 能 的 密码, 当 然 了, 解 密 者 是 计 算 机 而 不 是人, 所 以 需 要 人 为 定 义 相 应 的 模 式 内容。 其 模 式 的 定 义 在 john.ini 中 的 [List.Rules:Single] 部 分, 我 们 选 取 前 几 行 给大 家 做 一 个 解 释, 假 设 有 一 用 户 名 为 fool:



[List.Rules:Single]
###
# Single crack mode rules, extended Crack syntax
###
# Simple rules come first...
:[:cl]-----------------------------------注释1
# These were not included in crackers I've seen, but are pretty efficient
# so I include them near the beginning
>6x06------------------------------------注释2
>7lx07-----------------------------------注释3
>6/?ulx06--------------------------------注释4
>5x05------------------------------------注释5


在 john.ini 中 起 头 为 # 的 行 为 注 释 行, 程序 在 遇 到 此 行 时 自 动 跳 过。



  1. “:[:cl]” 此 行 表 示 使 用 用 户 名 自 身 作 为 密 码 进 行 尝 试, 即 fool, 而 “[:cl]” 在 保 持 原 字 母 不 变 的 前 提 下, 首 先 强 制 第 一 个字 母 大 写 “c”, 其 余 字 母 均 变 为 小 写 “l”, 即: Fool, 也 就 是 说 此 行 导 致 john 尝 试 使 用 fool 和 Fool 两 个 单 词 进 行 解 密。
  2. “>6x06” 表 示 当 用 户 名 大 于 6 个 字 符 的 时 候, 从 第 0 个 算 起, 截 断 至 第 5 个, 则 共 保 留 下 6 个 字 母, 其 余 丢 弃 不 用。 如: 用 户 名 为 foolers, 则 会 产 生 如 下 被 尝 试 的 密 码: 即 fooler。
  3. “>7lx07” 和 上 面 相 同, 此 行 对 于 >7 的 用 户 名, 截 断 至 7 个 字 母, 而 且 使 用 “l” 强 制 使 用 小 写 字 母。
  4. “>6/?ulx06” 表 示 对 于 长 度 >6 的 用 户 名, 截 断 至 6 个, 强 制 小 写, “/?u” 则 表 示 只 有 在 用 户 名 中包 含 小 写 字 母 “u” 才 有 效, 否 则 跳 过 整 条 规 则,不 进 行 尝 试。 例 如 对 于 “foolers” 此 规 则 不 起 作 用, 因 为 “foolers” 中 不 包 含 小 写 字 母 “u”。
  5. “>5x05” 和 上 几 个 例 子 相 同, 不 用 解 释 了。

其 余 部 分 自 己 参 考 john.ini, 具 体 参 数解 释 如 下:
john.ini中的每一行均由“条件指令”+“规则指令”组成。



  1. 位 于 起 始 部 分 的 “条 件 指 令”:

    : 表示保持字母不变。
    >n 表 示 满 足 条 件 的 是 字 符 长 度 >n 的 单 词, n 的 取 值 范 围 为 0-9。
    ^x 表 示 在 某 单 词 前 部 添 加 字 母 “x”。
    $y 表 示 在 某 单 词 尾 部 加 上 一 个 字 母“y”。
    l 强 制 整 个 单 词 全 为 小 写 字。
    u 强 制 整 个 单 词 全 为 大 写 字。
    c 强 制 单 词 第 一 个 字 为 大 写 (单 词 的 其 余 部 分 不 受 到 影 响)
    r 将 单 词 反 序 排 列: 如 “fool” -> “loof”。
    d 进 行 单 词 加 倍: 如 “fool” -> “foolfool”。
    f 进 行 单 词 加 倍,后 部 单 词 反 向 写: 如 “fool” -> “foolloof”。
    p 以 一 个 字 母 为 限 度, 在 保 持 单 词 不 变 的 前 提 下, 尝 试 单 词 的 所 有 组 成 字 母 的 大 小 写 组 合, 如 (“fool” -> “Fool”、 “fOol”、 “foOl”、 “fooL)”。
    onx 从 某 单 词 的 第 n (由 0 开 始 计 数) 个 字 母 开 始, 将 原 来 的 字 母 取 代 为 字 母 “x”。 例 如: “o1A” 则 对 于 “fool” 则 产 生 “fAol”。
    inx 从 某 单 词 的 第 n (由 0 开 始 计 数) 个 字 母 开 始, 在 字 母 前 插 入 以 字 母 “x”。 例 如: “i1A” 则 对 于 “fool” 则 产 生 “fAool”。备 注:如 果 指 定 的 值 n> 单 词 总 长 度, 则 相 应 的 插 入 字 符 将 会 添 加 到 单 词的 尾 部。
    xnm 从 单 词 的 第 n 位 开 始, 将 单 词 截 成 最 长 度 为 m 个 的 单 词。 具 体 的 例 子 就 不 列 举 了, 上 面 已 经 谈 过 了。
  2. 以 下 是 一 些 用 于 字 母 变 化 的 命 令:

    sxy 字 母 替 换, 将 某 单 词 中 的 所 有 为 “x” 的 字 母 替 换 成 字 母 “y”。
    s?cy 用 字 母 “y” 来 替 换 单 词 中 的 所 有 包 含 于 “c 字 母 组” 中 的 字 母。 关 于“字 母 组” 下 面 讨 论。
    @x 删 除 单 词 中 所 有 “x” 字 母。
    @?c 删 除 单 词 中 所 有 包 含 于 “c 字 母 组” 中 的 字 母。
    !y 跳 过 所 有 包 含 含 有 字 母 “y” 的 单 词。
    !?c 跳 过 所 有 包 含 含 有 “c 字 母 组” 中 字 母 的 单 词。
    /x 包 含 字 母 “x” 的 单 词 有 效。
    /?c 包 含 在 “c 字 母 组” 中 字 母 的 单 词 为 有 效。
    =nx 所 有 指 定 位 置 n 的 字 母 为 “x” 的 单 词 才 有 效。
    =n?c 所 有 指 定 位 置 n 的 字 母 包 含 于 “c 字 母 组” 的 单 词 才 有 效。备 注: 和 上 面 一 样, 起 始 字 母 位 数 从 0 开 始 计。
  3. “字 母 组” 的 定 义 如 下:

    ?? 等 于 字 母 “?”。
    ?v 等 于 所 有 的 元 音 字 母 “aeiouAEIOU”。
    ?c 等 于 所 有 的 辅 音 字 母 “bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ”。
    ?w 等 于 “白 色 空 格” 符 号: “ ”;
    (原 文 的 whitespace 不 晓 得 如 何 解 释 好, 好 象 可 以 解 释 为 “空 格” 或 者 是 “EOF 结 尾 符”。)
    ?p 等 于 所 有 标 点 符 号 “.,:;'"?!`”。
    ?s 等 于 特 殊 符 号 “$%^&*()-_+=|/<>[]{}#@/~”。
    ?l 等 于 所 有 26 个 小 写 字 母 (“a” 到 “z”)。
    ?u 等 于 所 有 26 个 大 写 字 母 (“A” 到 “Z”)。
    ?d 等 于 10 个 阿 拉 伯 数 字 (“0” 到 “9”)。
    ?a 包 括 所 有 26 个 字 母 的 大 小 写 形 式 (“a” 到 “z” + “A” 到 “Z”)。
    ?x 包 括 26 个 字 母 大 小 写 + 10 个 阿 拉 伯 数 字 (“a-z”+“A-Z”+“0-9”)。

    备 注: 组 名 可 以 用 大 小 写 的 区 别 来 表 示 “逻 辑 非” 的 关 系, 小 写 表 示 肯 定, 大 写 表 示 否 定。例 如: 用 ?d 可 以 表 示 “所 有 数 字”, 而 大 写 ?D 就 表 示“所 有 非 数 字 的”。
  4. 以 下 是 一 些 附 加 的 指 令:

    { 单 词 循 环 左 移 一 位: “fool” -> “oolf”, 当 然 要 左 移 动 两 位 就 表 示 为 “{{”, 以 下 同。
    } 单 词 循 环 右 移 一 位: “fool” -> “lfoo”。
    Dn 删 除 n 位 的 字 母 (由 0 开 计), 切 开 的 右 面 的 单 词 部 分 自 动 接 上, 不 会 流 下 空 格。
    P “crack” -> “cracked”, 使 用 单 词 的 过 去 式, 只 针 对 小 写 单 词 有 效。
    G “crack” -> “cracking”, 使 用 单 词 的 现 在 进 行 式, 同 样 只 针 对 小 写 单 词 有 效。
    ~i 根 据 键 盘 的 排 列 规 则, 转 换 为 “shift 键” + “对 应 键” 所 得 到 的 单 词, 如 “12345” -> “!@#$%”。
    ~I 进 行 字 母 大 小 写 转 换, 不 影 响 数 字 及 非 字 母 的 其 他 值, 如 “Fool123” -> “fOOL123”。
    ~v 将 单 词 中 所 有 元 音 字 母 转 为 小 写, 如 “Crack96” -> “CRaCK96”。
    ~> 根 据 键 盘 的 排 列 方 式 将 所 有 的 字 母 右 移 一 格。 例 如 我 们 可 以 看 到 键 盘 字 母 “c” 键 的 右 边 是 “v” 键, 则 “Crack96” -> “Vtsvl07”。
    ~< 和 上 一 个 一 样, 不 过 是 左 移, 如 “Crack96” > “Xeaxj85”。
  5. 针 对 “single crack” 模 式 的 专 用 指令

    专 用 指 令 有 双 字 串 支 援, 控 制 这 些 指 令 要 套 用 指 令 时 需 要 用 到 下 列 的 命 令:

    1 对 第 一 个 单 词 的 规 则
    2 对 第 二 个 单 词 的 规 则
    + 对 于 完 成 以 上 1、 2 规 则 变 换 后 所 得 到 的 单 词 再 进 行 其 他 的 变 换。
    (要 求 “+” 必 需 只 用 在 “1” 或 “2” 之 後, 也 就 是 1+2 或 2+1)
    (Chinaroot 备 注: 以 下 一 段 我 不 太 明 白, 所 以 英 文 照 抄, 天 晓 得 “GECOS” 是 什 么 东 西, !@$#$%&%$)
    If you use some of the above commands in a rule, it will only process word pairs (full names, from the GECOS information), and reject single words.A '+' is assumed at the end of any rule that uses some of these commands,unless you specify it manually. For example, '1l2u' will convert the first word to lowercase, the second one to uppercase, and use the concatenation of both. The use for a '+' might be to apply some more commands: '1l2u+r'will reverse the concatenation of both words, after applying some commands to them separately.
    (根 据 本 人 开 始 的 猜 测, 估 计 应 该 是 将 规 则 按 你 要 求 的 顺 序 执 行, 后 来 发 现 猜 错 了, 现 在 终 于 明 白 了。 我 们 已 经 知 道 “l” 命 令 将 字 母 转 为 小 写, 而 “u” 命 令 将 字 母 转 为 大 写, “r” 命 令 将 字 母 的 顺 序 颠 倒, 所 以 对 于 以 下 的 shadow, 进 行 尝 试 的 结果 如 下:
    首 先 是 shadow 部 分:
    root:!2dR3.pEo6#Q:0:1:Super-User:/:/bin/csh
    foolers:% dY).p*12Ver:0:1:AppleUser:/:/bin/csh
    abc:QkzL@4%68tGHI:201:200::/home1/ahb:/bin/csh
    最 后 得 到 如 下 两 个 结 果:
    “1l2u” ------------ “superUSE”、 “userSUPE”
    现 在 终 于 明 白 了, 原 来 此 命 令 只 使 用 shadow 中 的 用 户 注 解 名 (GECOS) 而 非 用 户 名, 而 且 只 对 于 可 区 分 的 由 两 个 单 词 组 成 的 词 组 才 有 效, 如 上 例 的 “Super-User”, 由 于 其 中 间 使 用 了 连 词 符 号 “-”, 被 区 分 为 “Super” + “User”, 系 统 自 动 进 行 “左 结 右” 和 “右 接 左” 的 单 词 组 合, 组 合 后 超 过 8 位 的 部 分 被 截 断; 而 “AppleUser”、 “ahb” 却 未 被 使 用。所 以 基 于 同 样 的 原 理, 以 下 命 令 可以 得 到 的 结 果 如 下:
    “1l2u+r” ---------- “RESUrepu”、“REPUSres”。
  6. 批 处 理 规 则:

    你 可 以 使 用 “[]” 来 使 用 一 批 字 符, 如 “[0-9]” 则 表 示 “0-9” 这 10 个 数 字, 你 也 可 以 混 合 使 字 母 列 表 加 批 量 的 格 式, 如 “[aeiou1-9]” 则 表 示 包 括 所 有 的 元 音 字 母 + “0-9” 十 个 数 字。 简 单 的 例 子 还 有 “[A-Z]”、 “[a-z]”、 “[A-Z0-9]”。 比 方 说: 我 们 加 入 一 行 如: “l$[0-9]”, 则 表 示 强 制 使 用 小 写 字 母, 并 且 在 每 个 字 母 后 面 加 入 “0-9” 这 十 个 数 字, 即: 如 果 用户 名 为 fool, 则 john 尝 试 使 用 fool0、 fool1、 fool2、 ...... fool9, 尝 试 进 行 解 密。

二、 “Wordlist Crack” 模式 --- 即“字典解密模式”



  1. 此 解 密 模 式 需 要 用 户 指 定 一 个 字 典 文 件, john 读 取 用 户 给 定 的 字 典 文 件 中 的 单 词 尝 试 进 行 解 密。 原 理 是: 用 户 经 常 使 用 象 hello、 superman、 computer、 ... 之 类 的 有 意 义 单 词 作 为 自 己 的 密 码。 john 中 自 己 带 了 一 个 字 典, 文 件 名 为: password.lst, 里 面 包 含 了 一 些 常 被 用 来 作 为 密 码 的 单 词。 以 下 给 出 几 个:

     

     

    12345、abc123、passwd、123456、Hockey、asshole、newpass、internet、Maddock、newuser、12345678、computer
    00、Horses、Internet、duck2、Mickey、Cowboys、fiction



     

     

    当 然 了 所 带 的 字 典 比 较 小, 如 果 你 觉 得 不 够 用, 可 以 到 ftp://coast.cs.purdue.edu/pub/dict 里 找, 可 以 找 到 好 几 十 兆 的 大 字 典 文 件。 使 用 方 法 很 简 单, 假 设 字 典 文 件 名 为: password.lst, shadow 为 shadow.txt, 则 命 令 为:
    john -word:password.txt shadow.txt

  2. 和 “single mode” 一 样, 使 用 “字 典 解 密 模 式” 时, 也 可 以 使 用 “规 则”, 具体 规 则 的 定 义 在 john.ini 中 的 [List.Rules:Wordlist] 部 分, 以 下 抽 取 其 中 的 一 小 段:


 

 


[List.Rules:Wordlist]
###
# Wordlist mode rules (use -rules to enable)
###
# Try words as they are
:
# Lowercase every pure alphanumeric word
!?Xl
# Capita