coolfire黑客入门教学文章八(C)

1. 假设你认为你要破解的某些密码档中有很多的使用者他们所设定的密码都是以帐号
名称再加上 ‘?!’ 的话. 你只要新增一个 “Single Crack” 模式的规则, 把这一行
放在你的设定档中:
[List.Rules:Single]
$?$!
提示: 如果你要将 John 原先所设定的预设值保留下来的话, 你可以简单的修改这个节
段的名称, 把它改成 John 没有使用的名称, 然後再建立一个跟旧节段一样名称
的节段, 但请注意新节段必需要把 ‘list.’ 这个关键字移除 (不使用), 这样在
执行的时候才不会出现错误.
相同的指令也能够套用在字典档破解规则上.
2. 如果你产生了一个自订的字元集档案(如上所述) 你也需要使用增强模式的参数定义
一个~/john.ini 的节段. 最简单的情况之下看起来会像下面这样 (‘Custom’所指的
可以是其它的档案, 用你所喜欢的名称来命名):
[Incremental:Custom]
File = custom.chr
这会让 John 只使用你用该密码所制作出来的字元集, 如果你想要用所有 95 个字元的
话, 你也需要加入这一行:
CharCount = 95
加入这一行会告诉 John 扩充你的字元集档, 如果 95个字元(ASCII codes 32 to 126)
中的某些字元没有出现在你的字元集档中, 字元加入的次序为: a-z, A-Z, 1-9, 0, 及
其它.
你也可以使用 CharCount 来限制 John 使用不同的字元数:
CharCount = 25
如果你在产生字元集档时没有使用任何的过滤器, 设定较低的 CharCount会剃除一些罕
见的字元, 能够让 John 更容易尝试较复杂, 较长的密码
要让 John 只尝试某些长度的密码, 可以加入下面这几行:
MinLen = 6
MaxLen = 8
把 ‘MinLen’ 设定的长一点, 就像上面的范例一样, 在机器有限制使用者密码长度的时
候是很合理的 (然而, 注意 root 通常可以为使用者设定任何长度的密码而不受此限).
相反的, 如果你觉得密码应该不会是很长的, 你可能会想要把 ‘MaxLen’设定得小一点.
当只使用字母字元(alphabetical)的时候, 也许开启简单的内见过滤器会很有用, 如果
很多密码设定得很简单:
[Incremental:Wordlike]
CharCount = 26
MinLen = 3
Wordlike = Yeah
File = alpha.chr
3. 当使用 John 在安装小於 4Mb 的机器上时, 你可能须要使用小一点的字元集, 在使
用 ‘-makechars’ 来产生的字元集, 需要很大的记忆体来扩充 (要快一点执行的话)
在你同时读进很多个密码档的时候也需要这样子作, 在没有足够的记忆体时, 或让
John 在破解很少的 salts 时稍微跑得快一点. 这都有可能会发生, 因为 John在每
个字读入像上一次读入的字, 或只有某些部分的字有改变时速度会快一些.当使用了
大的扩充字元集档的时候, 字串通常每一次的测试都是比在~/john.ini 中的小字元
集大很多, 字串的差别会相差很大. 而且,大的字元集在扩充的时候花花费较多的时
间. 然而, 你需要注意的就是利益/时间是呈正比的, 要得到更多的密码就要花更多
的时间,用最好的顺序来跑大的扩充字集也是很重要的. 所以聪明的人会使用小一点
的字元集, 如果他们没有别的选择的话, 或是你原本就是想要尝试所有可能的组合.
我故意把比较小的字元集由~/john.ini中拿掉, 这样你才能够在 ‘File=’ 这一行中
写上你会用到的字元集
4. 在其它特殊的情况之下, 你也许会使用自订的较小字元集, 如果你知道使用者常把
他们的密码加上’1′, 你可以用这样的范例:
[Incremental:Suffix1]
MinLen = 6
MaxLen = 6
Charset61 = abcdefghijklmnopqrstuvwxyz
Charset62 = abcdefghijklmnopqrstuvwxyz
Charset63 = abcdefghijklmnopqrstuvwxyz
Charset64 = abcdefghijklmnopqrstuvwxyz
Charset65 = abcdefghijklmnopqrstuvwxyz
Charset66 = 1
5. 你也可以用写一个额外的字串过滤器来达到跟上例相同的结果:
[List.External:Filter1]
void filter() {
int i;
i = 0;
while (word[i] && word[i] >= ‘a’ && word[i] <= ‘z’) i++;
if (word[i] != ‘1’ || word[i + 1]) word = 0;
}
这个过滤器只会把有相同字元且结尾是 ‘1’的滤除. 你可以把它用在其它不同的破解模
式中, 但是都会变得很慢, 因为大部分的字都会被滤掉. 最好是使用它来产生字元集然
後再来使用, (如果你已经有很多密码已经破解了, 会跳过过滤器).
如果你在某些情况下无法使用频率表(没有找到规则), 你可以在额外破解模式中用相同
的程式:
[List.External:Suffix1]
int len, current[9];
void init() {
int i;
current[len = 6] = 0; current[i = len – 1] = ‘1’;
while (i–) current[i] = ‘a’;
}
void generate() {
int i;
i = len + 1;
while (i–) word[i] = current[i];
i = len – 2;
while (++current[i] > ‘z’)
if (i) current[i–] = ‘a’; else current = -1;
}
void restore() {
int i;
i = len + 1;
while (i–) current[i] = word[i];
}
========
F.A.Q.
========
Q: 为甚么要命名为 “John”?
A: 为甚么不?
Q: 为甚么命名中有 “the Ripper” 这个字?
A: 那是 Lost Soul 的主意. 问他吧!
Q: John the Ripper 有比 Cracker Jack 还要好用吗?
A: 我觉得比较好. John 支援了所有 Cracker Jack 所提供的功能, 而且也多了很多新
的功能. 还有, John 在 Pentium 上跑得 Jack 还快, 甚至在有些 486 机器上也比
Jack 快很多.
Q: John the Ripper 比 Crack 还好用吗??
A: 看你自己. John 是有比较快, 而且有一些 Crack 没有的功能. 但是 Crack 也是一
个不错的程式.
Q: 为甚么 John 不能在我的旧 386 上跑得比较快?
A: John 是在 486 以上的机器作最佳化的. 如果要为 386 的机器作最佳化要花很多的
时间. 如果你只有 386 机器的话, 你最好能在 InterNet 上找一台快一点的机器来
跑 John. (对啦! 就是不出 386 版本了! 当然, 386 面临淘汰了嘛!)
Q: John 有针对 Pentium 进行最加化的版本吗?
A: John 已经针对 Pentium 级的机器进行过最佳化了!
Q: 我要怎么样测试 John 的 crypt() 函式是否工作正常呢?
A: John 在每次执行的时後都会自己测试一次, 你不需自己测试.
Q: 我要怎么样使用 John 的 “single crack” 模式? 他好像不能使用字典档.
A: 没错, John 跟 Cracker Jack 的 “single crack” 模式有很大的不同. RTFM.
Q: 为甚么你不把 “single crack” 改良得跟 Jack 一样好?
A: Jack 的 “single crack” 模式不是最好的, 它比 John 来要差. 我很高兴有人会提
出这个问题… 也许是因为 Jack 的模式看起来比较复杂而令你有这样的错觉吧.
Q: 可不可以把 Jack 的 JPP.EXE, 改成可以在 Windows 95 上面跑?
A: 你不需要它了. 但是你大概真的须要再读一下这篇文章中 “使用者字订”这个章节,
有关於字点档规则的部分. 而且, 我认真的建议你不要在 Windows 95 上作任何的
工作.
Q: 我要怎么看已经破解的密码? 在 CJack 中有 JACKPOT.EXE 这个档呀.
A: 在命令列上使用 ‘-show’ 这个指令.
Q: 为甚么 John 不读入我的密码档呢? 它只显示 ‘Loaded 0 passwords’.
A: 你的密码档大概是 shadow 过的吧. 你需要抓到密码档跟 Shadow档, 把它们组合在
一起, 然後再来使用 John. 当然, 如果你的密码档格式没有被 John 支援的话也会
出现相同的讯息.
Q: 我要如何解开 shadow?
A: 你大概是说不须要 root 权限就拿到 shadow 档吧. 嗯,这里有一些小诡计, 但最好
你还是需要 root. 很抱歉, 我不是在提这些事, 或是告诉你该如何 “hack” root.
这不是这个 FAQ 的原意.
Q: 为甚么 John 在增强模式不显示进度指示呢?
A: 你真的想要一直看著 0%吗? 如果你再问一次这个问题, 你大概需要再读一次这份文
件了(增强模式方面的说明).
Q: 为甚么 John 显示的是无意义的 c/s 数值而不是秀出每秒的 crypt() 进度?
A: John 显示出来的数值表示每秒组合 (login 及 password) 而不是每秒crypt(). 如
果你只想要试试编码的速度的话, 使用’-test’这个选项. 注意破解中所显示的 c/s
数值并不是无意义的– 它表示你在个别密码档的实际破解速度, 而且可能可以在你
用 ‘-salts’ 功能调整速度的时候.
Q: 使用增强破解模式时, 我查觉到 c/s 值小於其它的破解模式很多, 甚至跟 John 1.0
版比起来也少了很多, 这是怎么回事呢?
A:你可能只有执行 John 几分钟吧. 新的增强模式每次在 John 切换到不同的密码长度
时, 使用需要扩充的较大字元集. 这个长度转换需要花费一点时间, 所以才造成 John
每一秒尝试的密码组合会更少. 很幸运的, 这是只有在 John破解了一段时间, 切换到
一个新的密码长度, 重新开始执行破解工作时才会有这种情形, 我想你没有必要在这
个密码档上使用. 总之, 如果你不喜欢这个新的方式, 你可以不要用这么大的字元集
(把’file=’这一行由 ~/john.ini 中移除) .
Q: John 有支援平行处理吗?
A:我有一个像你所讲的, 可以在网路上分开(逐步)处理的 Cracker 计画 (很快就会完
成). John 并不能支援真正的平行处理, 但你仍然能够以自订字元集的方式设定每台
机器跑不同的字元集, 你也可以在增强破解模式加上字串过滤来达到相同的效果.
Q: John 内定的字元集是怎么来的(在 ~/john.ini 跟 *.chr 档的) 它的基础来源?
A: 我参考了一个由世界上的不同机器超过六万五千个真正密码的列表, 我要谢谢这些
使用者帮忙设定他们的密码.
Q: 我要到哪里取得字典档?
A: 你可以在
ftp://sable.ox.ac.uk/pub/wordlists. 找到一些.
Q: 我要如何跟作者取得连络?
A: 你可以在这个文件最後的地方看到.
=========
感 谢
=========
在发展 John 的时候, 我使用了其它破解同好的方法及建议:
– Crack by Alec Muffett —
字典档规则语法;
– Cracker Jack by Jackal —
使用者介面;
– Star Cracker by The SOrCErEr —
证明了一个很大的字元表也有执行的价值.
crypt() 编码函式所使用的是 Alec Muffett 写的, 跟 Crack v4.1 是同一个.
只有一些设定初始化函式没有改写, 其它的部分已经由我自己的想法改写了新的
crypt() 来使用 (事实上, 目前的这个编码函式使用了许多不同的运算方式).
特别感谢 Roman Rusakov 提供了 x86 组合语言版本的 crypt() 编码函式, 这个
函式已经放在目前的版本中, 他的最佳化方式是最棒的!
DOS 版本是用 DJGPP v2 by DJ Delorie 及 GCC 2.7.2 (
http://www.delorie.com)
编译的, DPMI 伺服程式是使用 Charles W Sandmann (
sandmann@clio.rice.edu; 1206
Braelinn, Sugar Land, TX 77479), 原始程式在
ftp://ftp.simtel.net/pub/simtelnet/
gnu/djgpp/v2misc/csdpmi3s.zip.
Cygnus Developer’s Kit (
http://www.cygnus.com/gnu-win32) 用来编译 Win32 版本.
================
如何与作者连络
================
发 E-mail 到
solar@ideal.ru 或 2:5020/398.9, 或者是在 EFnet IRC, 也可以找得到作
者, 作者在 IRC 的昵称为 Solar_Diz.
在你还没有完全看完这份文件以前, 请你不要随便的提出你的问题, 而且也不要寄给作者一
些密码档, 作者并不提供破解密码的服务 (CoolFire 亦有同感).
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
**** CoolFAQ ****
CoolFAQ 是最後一次出现在 CoolHC 中了,以後因为我不再由信件回答网友的问题,所
以日後的 CoolFAQ 将以 CoolHC相同的方式呈现给大家,我会将网友交流版中的精华加
以整理成为 CoolFAQ,然後再以文件的方式放置在首页上供大家取阅。
Q1: John the Ripper…….
A1: 任何有关 John the Ripper 的问题请参考 CoolHC#8 中的中文使用说明或 John内
所附的原文说明.
咦?! 没啦?! 对!! 没了…. 因为如果要作者抽空写的话。这份文件的推出日期就要再
继续的延後下去了,有很多人之前已经先看过了这份文件的 PreView 版,可能发现并
没有多很多的东西,没办法… 没时间…
我只希望大家能多利用网路上的 MailList 或我们的留言版来讨论,很多的问题透过大
家的讨论通常都会有很令人满意的答案出现、
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
**** 後语 ****
** 所有的资讯都是”免费” 的, 所以你没有权利要求任何的 “售後服务”, 该给各位的我会
放在首页上, 任何的讨论也都再首页上进行, 不要再来信要求破解某些站台, 或是寄一
些密码档来要求我帮忙跑. 甚至再来信询问一些软体破解的相关问题 (你需要的是取得
一套 News Client 软体, 订阅 tw.bbs.comp.hacker) 当然我希望真的有心要讨论系统
安全的网友来信讨论.
** 不要 Crack 这个首页的 ISP!!!! 否则 FETAG Sofeware’s Hacking Page 将会完全关
闭, 再也不寻找其它的地方来放置, 希望给你的是使用电脑的 “知识”, 不要利用它来
夺取任何的”权利”, 本首页著重的是教育, 而不是一 的教导攻击的方法, 希望大家
对於政府机关(org.tw) 或教育机构 (edu.tw) 不要作任何的破坏!! 还有我的 ISP.:D
谢谢大家的支持~
** 工作室成立了一家科技公司,将在北投为大家服务,当然服务的内容不外乎是电脑
相关硬体、软体及网路相关的问题,将会在明年年初左右开幕,详情请於明天参考
工作室首页
http://www.showtower.com.tw/~fetag
当然以後大家也就会更忙碌了,也就是说首页维护的时间就更少了,不过我们还是
希望能提供给大家更多的资讯,所以如果以後有任何新的资讯,我们会在首页上公
布,尽量不以写文章的方式,这样可以节省下很多编辑的时间。
——
再次重申, Crack 别人站台之後不要破坏别人站台中的资料, 此篇文章仅作为教育目的,
不主张你随便入侵他人主机. 请勿将这类技术使用於破坏上 (又… 如果第三次世界大战
开打, 你可以任意破坏敌国的电脑网路… 我全力支持), 最严重的情况(如果你真的很讨
厌该主机的话)… 就将它 Shut Down…. 好了! 别太暴力了!
E-Mail:
fetag@ms1.showtower.com.tw (工作室)
away@ms4.accmail.com.tw (亦崴科技)
ICQ UNI: 1444687
URL:
http://fetag.company.com.tw (Big-5 中文)
http://www.showtower.com.tw/~fetag (Big-5 中文)
http://www.ab.net.tw/~fetag (Big-5 中文)
http://www.nease.net/~fetag (GB-Code 中文)
http://hut.stanford.edu/dips/fetag (工作室主机 big-5 中文)