oclhashcat:离线hash密码破解工具官方文档(中文版)

无聊中,就把hashcat的官方文档稍微翻译了下,方便初学的朋友查看。至于oclhashcat,它是一个离线的hash密码破解工具,与hashcat不同,它支持GPU破解,速度更快,并且支持更多的hash算法!

GPU驱动要求:

AMD users require AMD drivers 14.9 or later (recommended 15.12 exact) Intel users require Intel OpenCL Runtime 14.2 or later (recommended 16.1 or later) NVidia users require NVidia drivers 346.59 or later (recommended 367.27 or later)

优点:

世界上最快的密码破解软件,不过经不严谨测试(虚拟里面使用CPU和物理机使用GPU对比:速度快了244倍) (来自官方文档…) 免费,开源 跨系统 (Linux, Windows and OSX) 跨平台 (CPU, GPU, DSP, FPGA, etc., everything that comes with an OpenCL runtime) 支持多种hash算法(可在下面的参数手册查看,多到超出想象…) (可在同时破解多种hash) 支持多种驱动器 (可在同一系统多种设备中生效) 支持多种驱动器类型 (可在同一系统混合使用多种不同的设备) 支持分布式破解 支持暂停/重新开始 支持会话与恢复 支持从密码文件读取hash值或是直接输入 支持16进制字符集(包括盐) 支持自动性能调优 支持markov-chains 內建标杆测试 集成热watchdog 等等

总之,是离线破解单向密码的好工具(第一选择是网络,但是网上不支持一些“小众”的密码类型,就只能使用它来碰碰运气咯)!

它支持的攻击模式:

Brute-Force Attack

所有攻击中最简单的一种,指定字符集和密码长度范围即可。

Mask Attack

尝试所有被给的来自键盘空间的字符组合(就像是暴力破解,只是需要指定得更加清楚)

相对于Brute-Force的优点

他不像传统的暴力破解,减少了排列的可能性,例如破解这个密码:Julia1984

在传统的暴力破解中,它是9位,每一位可能是大小写或是数字,也就是 “mixalpha-numeric”字符集。于是可迭代出62^9 (13.537.086.546.263.552)种可能,以100M/s的速率破解,需要超过4年的时间。

但是在mask attack攻击中,因为传统都只是首字母大写,为了缩短长度,可以在每一位指定特定类型的字符,于是就是52*26*26*26*26*10*10*10*10 (237.627.520.000)种组合,同样的速度就只需要40分钟。没有缺点。。。

Masks(掩码)

每一个密码位都需要一个掩码占位,例如密码有8位,就需要8个掩码(就像正则表达式里面的通配符)。

一个mask是一个被配置给密码破解引擎使用的占位字符串。 这个占位符可以是定制的字符集,內建字符集,或者是纯字符(字符本身) 一个变量(跟在一个?后面代表一个字符集),例如內建的(?l,?u,?s,?a,?d)和定制的(?1,?2,?3,?4) 注意,如果想要表示?这个纯字符,就需要使用??

输出

由于反向算法优化,输出将是如下这种顺序(就是并非简单的字母序):

aaaaaaaa aaaabaaa aaaacaaa . . . aaaaxzzz aaaayzzz aaaazzzz baaaaaaa baaabaaa baaacaaa . . . baaaxzzz baaayzzz baaazzzz . . . zzzzzzzz

內建字符集

?l = abcdefghijklmnopqrstuvwxyz ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ ?d = 0123456789 ?s = «space»!”#$%&’()*+,-./:;<=>?@[\]^_`{|}~ ?a = ?l?u?d?s ?b = 0×00 – 0xff

自定义字符集

所有的hashcat衍生版都有四个命令行参数用来自定义字符集

–custom-charset1=CS –custom-charset2=CS –custom-charset3=CS –custom-charset4=CS

你可以直接在命令行中使用-1,-2,-3,-4来指定字符集并且直接使用?1,?2,?3,?4来调用,也可以在配置文件(***.hcchr)中指定。在指定时,可以直接使用內建字符集组合,也可以使用纯字符组合甚至是混合的组合。

例如

指定?1代表的字符时,可以使用下面这些方式(他们效果一样):

-1 abcdefghijklmnopqrstuvwxyz0123456789 -1 abcdefghijklmnopqrstuvwxyz?d -1 ?l0123456789 -1 ?l?d -1 loweralpha_numeric.hcchr # file that contains alldigits + chars (abcdefghijklmnopqrstuvwxyz0123456789)

下面是在指定“0123456789abcdef”这个字符集时:

-1 ?dabcdef

下面是指定7位ASCII码全字符(“mixalpha-numeric-all-space”)时:

-1 ?l?d?s?u

下面是指定为特殊语言字符集时:

-1 charsets/special/Russian/ru_ISO-8859-5-special.hcchr

例如

下面的命令是创建如下的密码(-a 3表示暴力破解攻击):

command: -a 3 ?l?l?l?l?l?l?l?l keyspace: aaaaaaaa – zzzzzzzz command: -a 3 -1 ?l?d ?1?1?1?1?1 keyspace: aaaaa – 99999 command: -a 3 password?d keyspace: password0 – password9 command: -a 3 -1 ?l?u ?1?l?l?l?l?l19?d?d keyspace: aaaaaa1900 – Zzzzzz1999 command: -a 3 -1 ?dabcdef -2 ?l?u ?1?1?2?2?2?2?2 keyspace: 00aaaaa – ffZZZZZ command: -a 3 -1 efghijklmnop ?1?1?1 keyspace: eee – ppp

密码长度增量

默认情况下,使用8位的掩码只能破解8位的密码,不能破解低于8位更不能破解高于8位的,但可以使用increment来实现破解低于8位的(他可以设置最小位数和最大位数,但最大位数不能超过掩码位数)

?l ?l?l ?l?l?l ?l?l?l?l ?l?l?l?l?l ?l?l?l?l?l?l ?l?l?l?l?l?l?l ?l?l?l?l?l?l?l?l

字符集文件

可以将常用的字符集保存为***.hcchr格式的纯文本文件,以后就可以直接调用(像上面例子中使用的charsets/special/Russian/ru_ISO-8859-5-special.hcchr一样)回顾用法:

-1 charsets/standard/German/de_cp1252.hcchr

(可以使用iconv或类似的工具将文件转换到指定语言编码 )

掩码文件

同样可以将掩码直接保存为一个文件,以后使用时直接调用,它是一行一行的纯文本文件,以.hcmask为扩展名,格式如下:

[?1,][?2,][?3,][?4,]mask

本来在命令行中,我们要使用自定义的字符集,需要使用如下格式:

-1 ?l?s -2 ?dhjg -3 ?u?d -4 ?s987 ?1?2?3?4?s?l

那么在掩码文件中就可以直接这样写:

?l?s,?dhjg,?u?d,?s987, ?1?2?3?4?s?l

当然,在没有使用自定义字符集时就不需要前面的部分了,直接写掩码即可,使用方法如下:

-a 3 hash.txt mask_file.hcmask

其他:

- 可以在每一行的开头使用#来注释掉那一行,可以写入多行,每一行互相独立 - 当掩码中存在 ,(逗号)时,需要\,来转义 - 同样,掩码文件也可以支持增量参数

Example

下面是些例子,看看能不能看懂是什么意思

?d?l,test?1?1?1 abcdef,0123,ABC,789,?3?3?3?1?1?1?1?2?2?4?4?4?4 company?d?d?d?d?d ?l?l?l?l?d?d?d?d?d?d

16进制字符

可以使用“–hex-charset”参数

Combinator Attack

给定两个字典文件,他们将会组合成一个字典来进行破解:

./hashcat64.bin -m 0 -a 1 hash.txt dict1.txt dict2.txt

这里例如

Dict1.txt:

Hia Hiaa Hiaaa

Dict2.txt:

Bb Cc

结果为:

HiaBbHiaCcHiaaBbHiaaCcHiaaaBbHiaaaCc

可以使用参数来对某个字典进行“在开始出添加字符”,“在结尾处添加字符”的操作:

-j, –rule-left=RULE 左边添加 -k, –rule-right=RULE 右边添加

Dictionary Attack

即straight mode,使用字典攻击

Hybrid Attack

混合攻击,即用暴力攻击来修饰字典文件,分为:

mask + dict    即掩码在字典前
dict + mask    掩码在字典后

例如

字典文件是example.dict:

password hello

命令为:

$ … -a 6 example.dict ?d?d?d?d

生成的字典是:

password0000 password0001 password0002 . . . password9999 hello0000 hello0001 hello0002 . . . hello9999

另一种情况,命令是:

$ … -a 7 ?d?d?d?d example.dict

生成的字典是:

0000password 0001password 0002password . . . 9999password 0000hello 0001hello 0002hello . . . 9999hello

(可以使用规则模式来创建混合攻击)

Toggle-Case Attack

尝试所有的大小写组合:

例如pass1234会产生:

pass1234 Pass1234 pAss1234 PAss1234 paSs1234 PaSs1234 pASs1234 PASs1234 pasS1234 PasS1234 pAsS1234 PAsS1234 paSS1234 PaSS1234 pASS1234 PASS1234

Rule-based Attack

这是功能最强大,也最复杂的一种模式,就像变成一样设置密码规则!他的语法很多部分和john和passwordPro互通,这里是语法:

  • * 当N超过9就用A-Z表示
  • + 表示只在hashcat里面有效
  • # 版本升级后出现的:oclHashcat v1.37 → v1.38 and hashcat v0.51 → v0.52

下面是拒绝规则,即密码符合规则才执行,否则跳过:

这是hashcat特有的语法:

生成规则的方式:

使用专门的软件:Using maskprocessor to create rules.

使用随机规则:

规则文件里面已有一些规则,使用

–generate-rules=NUM 创造NUM个随机的规则

–generate-rules-func-min=NUM 指定规则中函数的最小个数(默认一个)

–generate-rules-func-max=NUM 指定规则中函数的最大个数(默认四个)

下面是命令帮助文件(若有疑问请查阅英文原版):

下面使用几个例子:

cudaHashcat64.exe -a 3 -m 1000b4b9b02e6f09a9bd760f388b67351e2b ?a?l?l?l?l?l?l

可以用来破解WPA、WPA2的密码:

首先对aircrack等抓下来的包含握手包的***.cap文件进行清洗(可使用在线清洗,最简单,不放心可以本地清洗,也有脚本。。。)得到***.hccap包

cudaHashcat64.exe -m 2500 -a 0 C:\Users\Beta\Desktop\hashcat.hccap G:\渗透工具\密码破解\WPA破解工具\字典\WPA字典\WPA.txt

显示破解失败…955Mb的字典,跑完用了32分钟。其他的类似就不做示例了。

如果想要做练习,可以使用官方提供的测试hash: https://hashcat.net/wiki/doku.php?id=example_hashes

如果使用过程中遇到什么问题可以在这里看看有没有说明:https://hashcat.net/wiki/doku.php?id=frequently_asked_questions

* 参考来源:hashcat,Beta_Mao编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2016-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑

摘要: Teamwork团队在去年写了近20万行Go代码,建造了一堆速度奇快的小型HTTP服务,本文列出了他们总结的9条经验教训。 为什么选择Go语言?Go...

3686
来自专栏我是攻城师

浅谈ElasticSearch的嵌套存储模型

3806
来自专栏JackieZheng

Nutch源码阅读进程3---fetch

走了一遍Inject和Generate,基本了解了nutch在执行爬取前的一些前期预热工作,包括url的过滤、规则化、分值计算以及其与mapreduce的联系紧...

2245
来自专栏wOw的Android小站

[设计模式]之五:职责链模式

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

1532
来自专栏FreeBuf

Frida在爆破Windows程序中的应用

谈到爆破,相信大部分网络安全从业者都并不陌生,爆破爆破,就是暴力破解嘛。通过枚举尝试尽可能多的可能解,再进行验证判断是否正确。在进行web的爆破时,我们通常会使...

1782
来自专栏腾讯Bugly的专栏

小萝莉说Crash(一):Unrecognized selector sent to instance xxxx

大家好,我是来自Bugly Crash实验室的小萝莉(害羞ing),很高兴能和大家一起讨论关于移动终端App的Crash问题及解决方法。 在上次的“精神哥讲Cr...

7934
来自专栏java思维导图

值得收藏!Redis五大数据类型应用场景(二)

Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数...

1552
来自专栏偏前端工程师的驿站

JS读书心得:《JavaScript框架设计》——第12章 异步处理

一、何为异步                                 执行任务的过程可以被分为发起和执行两个部分。 同步执行模式:任务发起后必须等待直...

2117
来自专栏Ldpe2G的个人博客

ScalaMP ---- 模仿 OpenMp 的一个简单并行计算框架

这个项目是一次课程作业,要求是写一个并行计算框架,本人本身对openmp比较熟,

2096
来自专栏吉浦迅科技

DAY35:阅读流程控制语句

1464

扫码关注云+社区

领取腾讯云代金券