作者 glayjun @ 2005-06-03 09:46:25 我将coolfire黑客入门教程系列之(八)这篇教程为开了三部分!!这是最后的部分!!不要再问我coolfire是谁啊!!!呵呵!!我怕!!
林正隆,中国台湾著名黑客,中国黑客领军人物。2011年获得COG信息安全终身成就奖
林正隆-百度百科
说明:本系列文章是整理Coolfire的8篇黑客入门文章,因在浏览网上相关文章的时候,要么残缺不全,要么文章排版极乱,阅读体验极差,为了获得更好的阅读体验故而做此整理。
这些范例可以让你 解使用 John 可以帮你作哪些事, 也许不够明白的来表示该如何来使用, 我只能试著来回答一些问题:
命令列 --------
假设你刚得到一个密码档,’‘passwd.1’’, 且你想要试著破解它, 你可以使用 Singel Crack" 模式: john -single passwd.1 或者,你也可以使用简写(John在很多选项都有提供简写的方式,让你很快的能够完成输入) john -si passwd.1 如果你有很多的档案要破解, 更好的方式就是一次读进来: john -single passwd.1 passwd.2 或者你也可以这样: john -single passwd.*
现在, 当你已经破解了一些密码, 这些已破的密码将会存在~/john.pot 这个档案里 你可以浏览一下你所破解的密码: john -show passwd.1 如果这个列表超出了萤幕(解出了很多密码??), 你可以使用下面这个输出方式: john -show passwd.1 | more 现在, 你可能会得到一些错误讯息告诉你有许多的帐号的 shell已经被取消掉了, 你可以让 John 修改这些字串 (假设 shell 名称为 ‘’/etc/expired’’): john -show -shells:!/etc/expired passwd.1 或是简写, 但是会跟 ‘’/any/path/expired’‘有相同的效果: john -show -shells:!expired passwd.1 或者, 你也想要修改其它的 shell 字串, 如 ‘’/etc/newuser’’: john -show -shells:!expired,!newuser passwd.1 检查看看有没有 root (uid 0) 帐号已经破解成功了: john -show -users:0 passwd.1 或者, 检查所有密码档中, 已破解的 root (uid 0) 帐号: john -show -users:0 passwd.* 只显示 root (login ‘‘root’’) 帐号: john -show -users:root passwd.1
当你使用 "Single Crack"模式, 破解出来的帐号数目不是很多的时候, 你可以使用 较具威力的破解模式, 例如字典档模式. 假设你的字典档名为 ‘‘words.lst’’: john -w:words.lst passwd.1 或者, 把规则破解模式也打开 (会更慢, 但是更具威力): john -w:words.lst -rules passwd.1 要只破解拥有完整 shell 使用权的帐号 (一般来说, ‘’-shells’’ 跟 ‘’-users’’ 这两个过滤就可以完成你想要作的工作了, 在其它的破解模式也是一样. john -w:words.lst -rules -shells:sh,csh,tcsh,bash passwd.1 就跟其它的破解模式一样, 你可以更快的破解一些档案, 一次下达指令: john -w:words.lst -rules passwd.* 可以只破解某些帐号. 像下面这个命令会试著破解具有 root (uid 0) 权限的帐号: john -w:words.lst -rules -users:0 passwd.* 然而, 我不建议你只破解 root 的密码, 因为那通常会比用系统安全漏洞来获取 root 的权限花费更长的时间(通常不是在合理的时间内可以作到的), 如果你是用来试著破解你自己主机上的密码, 想要确定这些密码不会被破解的话, 更好是选一个好一点的root 密码, 然後只破解其它的. 有时把你的密码档分开两部分并且分别进行破解是有用的, 就像: john -w:words.lst -rules -salts:2 passwd.* john -w:words.lst -rules -salts:!2 passwd.* 这会使 John 在试两个或更多的帐号时动作快一点, 然後再试其它的总共需要的破解时间将会差不多, 但是你会更容易的得到一些破解的帐号, 而且可能也不需要其它的. 还有, 你可能想要用一个小一点的字典档来试所有的帐号, 只有用这个 *** 你可以试得快一点 (用 ‘’-salts:2’’) 在一个大型的密码档上. 通常这是在使用 ‘’-salts’‘大於 2 (有时甚至高於 1000 都还可以执行), 为你的个别状况进行调整吧. 注意你定义的字典档规则之一行中包含了 ‘’:’’ (表示 ‘‘试所有包含在列表中的字’’), 如果你已经执行了一个字典档破解模式而没有使用规则的话, 也确定你用相同的字典档加上规则来跑, 这一点要特别注意!!
John 里最强的破解模式是增强模式, 你可以试著用这个指令跑跑看: john -i passwd.1 这个指令会使用内定的增强模式的参数, 定义在 ~/john.ini’'s [Incremental:All] 这一个节段中. 在设定档中支援了这些参数使用所有 95 个字元集, 而且试所有长度的密码, 从 1 到 8 个字元. 不要预期这个模式的破解会在合理的时间内结束 (除非所有的密码都设得很容易破, 而且很快的被破解掉了). 在很多的情况之下, 当你破解一些简单的密码时, 使用其它定义好的增强模式会比较快一些, 由限制字元集来著手. 下面的指令只会试 26 个字元组合排列方式, 由 1 到 8 个字元来算, 它将会尝试由 ‘‘a’’ 到 ‘‘zzzzzzzz’‘的所有字: john -i:alpha passwd.1 相同的, 你可以配合著增强模式只破解 root 帐号 及使用一些其它 John的功能, 这个指令会试著破解所有的 root (uid 0) 帐号在所有的密码档中, 而且只有在这些产生的相同 salts, 所以你得到最少两倍的效率 – 如果你有很多个密码档的话 (像 1000 个密码档, 命名为 ‘’*.pwd’’), 否则就是没有 root 在相同的 salts: john -i -users:0 -salts:2 *.pwd
如果你得到了一个密码档, 而且已经有很多个帐号已经破解了 (但你需要更多), 而 且这个密码档的密码设定是相当罕见的,你可能会想要产生一个新的字元集档案, 以 该密码档为基础的字元集: john -makechars:custom.chr passwd.1 然後把这个新的档案用在增强模式中. 如果你由同一个国家得到很多个密码档的话, 也许可以把他们一起用来产生字元集档案这样你可以用它来帮你破解出更多的密码, 当然这个自元集日後也可以用在同一个国家所得到的密码档上: john -makechars:custom.chr passwd.1 passwd.2 <把你的 custom 增强模式定义在 ~/john.ini 中> john -i:custom passwd.3 上面这个范例中, 我门假设 ‘‘passwd.1’’ 跟 ‘‘passwd.2’’ 这两个密码档是来自同一个国家, 而且你已经拥有很多破解过的密码了, 而 ‘‘passwd.3’’ 也是从相同的国家来的, 你现在正打算要破解它. 当你在产生一个新的字元集档案的时候, 你可以使用一些已经定义好的, 或自行定义的过滤器, 来产生一些简单的字串: john -makechars:my_alpha.chr -external:filter_alpha passwd.1 如果你的~/john.pot 设定档已经很肥大的话 (或是你没有的字元集档案), 也许你会想要使用它来产生新的字元集档案: john -makechars:all.chr john -makechars:alpha.chr -external:filter_alpha john -makechars:digits.chr -external:filter_digits
在上面的范例中, John 会覆写已经存在的字元集档(如果它们原先已经在你的目录中的话), 写入的内容就是你在~/john.pot (John 使用整个档案, 如果你没有指定任何密码档的话), 为了你的方便使用, 注意字串过滤的使用也定义在 ~/john.ini 之中. 设定档 --------
假设你认为你要破解的某些密码档中有很多的使用者他们所设定的密码都是以帐号 名称再加上 ‘’?!’’ 的话. 你只要新增一个 “Single Crack” 模式的规则, 把这一行 放在你的设定档中: [List.Rules:Single] ? ? ?! 提示: 如果你要将 John 原先所设定的预设值保留下来的话, 你可以简单的修改这个节 段的名称, 把它改成 John 没有使用的名称, 然後再建立一个跟旧节段一样名称 的节段, 但请注意新节段必需要把 ‘‘list.’’ 这个关键字移除 (不使用), 这样在 执行的时候才不会出现错误. 相同的指令也能够套用在字典档破解规则上.
如果你产生了一个自订的字元集档案(如上所述) 你也需要使用增强模式的参数定义 一个~/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
当使用 John 在安装小於 4Mb 的机器上时, 你可能须要使用小一点的字元集, 在使 用 ‘’-makechars’’ 来产生的字元集, 需要很大的记忆体来扩充 (要快一点执行的话) 在你同时读进很多个密码档的时候也需要这样子作, 在没有足够的记忆体时, 或让 John 在破解很少的 salts 时稍微跑得快一点. 这都有可能会发生, 因为 John在每 个字读入像上一次读入的字, 或只有某些部分的字有改变时速度会快一些.当使用了 大的扩充字元集档的时候, 字串通常每一次的测试都是比在~/john.ini 中的小字元 集大很多, 字串的差别会相差很大. 而且,大的字元集在扩充的时候花花费较多的时 间. 然而, 你需要注意的就是利益/时间是呈正比的, 要得到更多的密码就要花更多 的时间,用更好的顺序来跑大的扩充字集也是很重要的. 所以聪明的人会使用小一点 的字元集, 如果他们没有别的选择的话, 或是你原本就是想要尝试所有可能的组合. 我故意把比较小的字元集由~/john.ini中拿掉, 这样你才能够在 ‘‘File=’’ 这一行中 写上你会用到的字元集
在其它特殊的情况之下, 你也许会使用自订的较小字元集, 如果你知道使用者常把 他们的密码加上’‘1’’, 你可以用这样的范例: [Incremental:Suffix1] MinLen = 6 MaxLen = 6 Charset61 = abcdefghijklmnopqrstuvwxyz Charset62 = abcdefghijklmnopqrstuvwxyz Charset63 = abcdefghijklmnopqrstuvwxyz Charset64 = abcdefghijklmnopqrstuvwxyz Charset65 = abcdefghijklmnopqrstuvwxyz Charset66 = 1
你也可以用写一个额外的字串过滤器来达到跟上例相同的结果: [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.
据外媒报道,就在苹果为iOS 12发布了安全补丁几个小时后,iOS狂热爱好者、黑客Jose Rodriguez在iOS 12.1中发现了又一个漏洞,即可以在绕过密码的情况下使用群组FaceTime访问...
虽然现在任何安卓手机都可以设置锁屏密码,来防止熊孩子以及居心叵测的人偷窥和乱搞。但我们解锁手机时密码其实很容易被别人偷看,而且别人借手机时碍于情面有时也只能不情愿地交出手机密码。 今天我们就设置...
1 在手机上打开wifi信号自动连接类应用,待连接成功后,进入手机的 设置 2 在设置列表中可以看到已经连接的WLAN信号名称,如果你需要查询是手机的短信,微信记录,微信密码,非常专业,团队...
方法一 在开机时按下F8进入“带命令提示符的安全”模式 输入“NET USER+用户名+123456/ADD” 可把某用户的密码强行设置为”123456 方法二 1.在计算机启动时按(F...
大家现在都意识到手机安全的重要性,手机都设置了开机密码,可能有的朋友前一天设置了开机密码,第二天起床后把密码给忘记了,折腾了大半天,拿到手机店,遇到黑心的老板,会黑掉你几百块,那个心疼呀不能言喻。其实...
但是随着时间的过去,人们可能会忘记电脑密码,忘记了之后该怎么办呢?下面,小编给大家介绍电脑忘记开机密码的解决技巧。 很多人为了电脑数据的安全或者出于保护自己隐私的原因,对自己的电脑设置的开机密码,不...