John the Ripper
2012-08-31 19:34
459 查看
=========================
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 同 样 拷入 此 目 录, 这 样 我 们 就 完 成 了 解 密 的准 备 工 作。
现 在 开 始 进 行 解 密 步 骤:
先 消 灭 FOOL USER, 就 是 “笨 蛋 用 户”:
john -single shadow.txt
再 消 灭 稍 微 聪 明 一 点 的 用 户:
john -wordfile:password.lst -rules shadow.txt
最 后 进 行 大 屠 杀:
john -i:all shadow.txt
当 然 了, 第 三 步 可 能 要 你 的 电 脑 跑 上 10000 年。
解 释:
第 一 步 主 要 针 对 笨 蛋 而 进 行 的, 原 理 是 根 据 用 户 的 名 称, 加 上 常 见 的 变 化 而 猜 测 密 码。 一 般 所 谓 的 笨 蛋 是 这 样 的, 比 如 此 用 户 叫 fool, 而 他 的 密 码 是 fool123、 fool1、 loof、 loof123、 lofo...。 这 样 的 用 户 一 般 在 一 分 钟 内 会 被 全 部 消 灭。
第 二 部 是 使 用 字 典 文 件 来 进 行 解 密, 不 为 什 么, 只 是 因 为 设 置 密 码 的是 人 而 不 是 机 器, 如 人 们 常 用 hello、 superman、 cooler、 asdfgh、 123456 等 作 为 自 己 的 密 码。 而 -rules 参 数 则 在 此 基 础 上 再 加 上 些 变 化, 如 字 典 中 有 单 词 cool, 则 JOHN 还 会 尝 试 使 用 cooler、 CoOl、 Cool 等 单 词 变 化 进 行 解 密。 一 般 视 SHADOW 中 的 用 户 多 少 及 你 的 字 典 大 小、 你 的 机 器 速 度, 解 密 时 间 从 几 小 时 到 几 天 不 等。
第 三 步 是 纯 粹 的 碰 运 气 解 法, 主 要 原 理 是 遍 历 所 有 可 能 的 密 匙 空 间。 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 中 起 头 为 # 的 行 为 注 释 行, 程序 在 遇 到 此 行 时 自 动 跳 过。
“:[:cl]” 此 行 表 示 使 用 用 户 名 自 身 作 为 密 码 进 行 尝 试, 即 fool, 而 “[:cl]” 在 保 持 原 字 母 不 变 的 前 提 下, 首 先 强 制 第 一 个字 母 大 写 “c”, 其 余 字 母 均 变 为 小 写 “l”, 即: Fool, 也 就 是 说 此 行 导 致 john 尝 试 使 用 fool 和 Fool 两 个 单 词 进 行 解 密。
“>6x06” 表 示 当 用 户 名 大 于 6 个 字 符 的 时 候, 从 第 0 个 算 起, 截 断 至 第 5 个, 则 共 保 留 下 6 个 字 母, 其 余 丢 弃 不 用。 如: 用 户 名 为 foolers, 则 会 产 生 如 下 被 尝 试 的 密 码: 即 fooler。
“>7lx07” 和 上 面 相 同, 此 行 对 于 >7 的 用 户 名, 截 断 至 7 个 字 母, 而 且 使 用 “l” 强 制 使 用 小 写 字 母。
“>6/?ulx06” 表 示 对 于 长 度 >6 的 用 户 名, 截 断 至 6 个, 强 制 小 写, “/?u” 则 表 示 只 有 在 用 户 名 中包 含 小 写 字 母 “u” 才 有 效, 否 则 跳 过 整 条 规 则,不 进 行 尝 试。 例 如 对 于 “foolers” 此 规 则 不 起 作 用, 因 为 “foolers” 中 不 包 含 小 写 字 母 “u”。
“>5x05” 和 上 几 个 例 子 相 同, 不 用 解 释 了。
其 余 部 分 自 己 参 考 john.ini, 具 体 参 数解 释 如 下:
john.ini中的每一行均由“条件指令”+“规则指令”组成。
位 于 起 始 部 分 的 “条 件 指 令”:
: 表示保持字母不变。
>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 个 的 单 词。 具 体 的 例 子 就 不 列 举 了, 上 面 已 经 谈 过 了。
以 下 是 一 些 用 于 字 母 变 化 的 命 令:
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 开 始 计。
“字 母 组” 的 定 义 如 下:
?? 等 于 字 母 “?”。
?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 就 表 示“所 有 非 数 字 的”。
以 下 是 一 些 附 加 的 指 令:
{ 单 词 循 环 左 移 一 位: “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”。
针 对 “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”。
批 处 理 规 则:
你 可 以 使 用 “[]” 来 使 用 一 批 字 符, 如 “[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” 模式 --- 即“字典解密模式”
此 解 密 模 式 需 要 用 户 指 定 一 个 字 典 文 件, 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
和 “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
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 同 样 拷入 此 目 录, 这 样 我 们 就 完 成 了 解 密 的准 备 工 作。
现 在 开 始 进 行 解 密 步 骤:
先 消 灭 FOOL USER, 就 是 “笨 蛋 用 户”:
john -single shadow.txt
再 消 灭 稍 微 聪 明 一 点 的 用 户:
john -wordfile:password.lst -rules shadow.txt
最 后 进 行 大 屠 杀:
john -i:all shadow.txt
当 然 了, 第 三 步 可 能 要 你 的 电 脑 跑 上 10000 年。
解 释:
第 一 步 主 要 针 对 笨 蛋 而 进 行 的, 原 理 是 根 据 用 户 的 名 称, 加 上 常 见 的 变 化 而 猜 测 密 码。 一 般 所 谓 的 笨 蛋 是 这 样 的, 比 如 此 用 户 叫 fool, 而 他 的 密 码 是 fool123、 fool1、 loof、 loof123、 lofo...。 这 样 的 用 户 一 般 在 一 分 钟 内 会 被 全 部 消 灭。
第 二 部 是 使 用 字 典 文 件 来 进 行 解 密, 不 为 什 么, 只 是 因 为 设 置 密 码 的是 人 而 不 是 机 器, 如 人 们 常 用 hello、 superman、 cooler、 asdfgh、 123456 等 作 为 自 己 的 密 码。 而 -rules 参 数 则 在 此 基 础 上 再 加 上 些 变 化, 如 字 典 中 有 单 词 cool, 则 JOHN 还 会 尝 试 使 用 cooler、 CoOl、 Cool 等 单 词 变 化 进 行 解 密。 一 般 视 SHADOW 中 的 用 户 多 少 及 你 的 字 典 大 小、 你 的 机 器 速 度, 解 密 时 间 从 几 小 时 到 几 天 不 等。
第 三 步 是 纯 粹 的 碰 运 气 解 法, 主 要 原 理 是 遍 历 所 有 可 能 的 密 匙 空 间。 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 中 起 头 为 # 的 行 为 注 释 行, 程序 在 遇 到 此 行 时 自 动 跳 过。
“:[:cl]” 此 行 表 示 使 用 用 户 名 自 身 作 为 密 码 进 行 尝 试, 即 fool, 而 “[:cl]” 在 保 持 原 字 母 不 变 的 前 提 下, 首 先 强 制 第 一 个字 母 大 写 “c”, 其 余 字 母 均 变 为 小 写 “l”, 即: Fool, 也 就 是 说 此 行 导 致 john 尝 试 使 用 fool 和 Fool 两 个 单 词 进 行 解 密。
“>6x06” 表 示 当 用 户 名 大 于 6 个 字 符 的 时 候, 从 第 0 个 算 起, 截 断 至 第 5 个, 则 共 保 留 下 6 个 字 母, 其 余 丢 弃 不 用。 如: 用 户 名 为 foolers, 则 会 产 生 如 下 被 尝 试 的 密 码: 即 fooler。
“>7lx07” 和 上 面 相 同, 此 行 对 于 >7 的 用 户 名, 截 断 至 7 个 字 母, 而 且 使 用 “l” 强 制 使 用 小 写 字 母。
“>6/?ulx06” 表 示 对 于 长 度 >6 的 用 户 名, 截 断 至 6 个, 强 制 小 写, “/?u” 则 表 示 只 有 在 用 户 名 中包 含 小 写 字 母 “u” 才 有 效, 否 则 跳 过 整 条 规 则,不 进 行 尝 试。 例 如 对 于 “foolers” 此 规 则 不 起 作 用, 因 为 “foolers” 中 不 包 含 小 写 字 母 “u”。
“>5x05” 和 上 几 个 例 子 相 同, 不 用 解 释 了。
其 余 部 分 自 己 参 考 john.ini, 具 体 参 数解 释 如 下:
john.ini中的每一行均由“条件指令”+“规则指令”组成。
位 于 起 始 部 分 的 “条 件 指 令”:
: 表示保持字母不变。
>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 个 的 单 词。 具 体 的 例 子 就 不 列 举 了, 上 面 已 经 谈 过 了。
以 下 是 一 些 用 于 字 母 变 化 的 命 令:
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 开 始 计。
“字 母 组” 的 定 义 如 下:
?? 等 于 字 母 “?”。
?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 就 表 示“所 有 非 数 字 的”。
以 下 是 一 些 附 加 的 指 令:
{ 单 词 循 环 左 移 一 位: “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”。
针 对 “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”。
批 处 理 规 则:
你 可 以 使 用 “[]” 来 使 用 一 批 字 符, 如 “[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” 模式 --- 即“字典解密模式”
此 解 密 模 式 需 要 用 户 指 定 一 个 字 典 文 件, 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
和 “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
相关文章推荐
- 著名密码破解利器John the Ripper使用方法详解
- John The Ripper Hash Formats
- 使用John the ripper工具来尝试破解Linux密码
- John The Ripper to crack the Password (UNIX/LINUX)
- John the Ripper password cracker
- 超好用弱口令扫描工具John the Ripper 图解使用教程
- John the Ripper 1.8.0 发布,密码破解工具
- john the ripper
- John the Ripper password cracker
- Crack Password with John the Ripper on Ubuntu 9.10
- John the Ripper
- John the Ripper
- 史上最牛的密码破解软件John the Ripper中文说明
- 使用John the ripper工具来尝试破解Linux密码
- 破解之---john the ripper
- John the Ripper 1.7.8-jumbo-5发布
- John the Ripper
- 【转】John The Ripper附图教程
- 运营商渗透测试John the ripper
- John the Ripper password cracker试用