哈希的破解

#江南的江

#每日鸡汤:记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。

——塞林格《麦田守望者》

HASH

一、什么是hash?

在计算机中hash是由哈希函数的逻辑算法所推算出来的一种由各种各样的数字、字母、符号所组成的值。

那么为什么要有hash,在计算机应用中哈希值的用途非常的广他就像人们的指纹,赋予给计算机数据的一个特殊的定义,那么人们为了方便就创建了hash表, hash表又叫散列表,是一种根据码值key 来进行获取数据的数据结构。

二、常见的hash算法

在一般的使用hash中通常是ASCII码值转换的,还有MD5 SHA1 SHA2-256等

三、hash算法的碰撞

在hash的运用中输入数据的长度是不固定的,输出的哈希值是固定的,那么就不能保证一对一的哈希值,那么就会发生碰撞。

所以这也是哈希密码爆破的原理

那么聪明的人们就想到了对数据进行“加盐”

那么什么的加盐

四、加盐

加盐,其实就像他的名字一样,对我要加强哈希的数据在其中添加一些随机的不相干的数值,在添加先存放这些数值到专门的地方,再对加过料的数据完整的进行哈希算法,这样既加强了数据的强度,又不会因记不得盐值而无法获取数据还大大提升了破解的难度。

***熟悉了hash的基本知识,那么现在介绍的是他们的破解软件,建议使用kali

在kali中有两个我常用的哈希破解软件

哈希的破解_第1张图片John the Ripper

简介

John是一个开源的暴力密码破解器,他支持的加密算法是DES  MD4  MD5等

他的强大理论上只要你的时间是充足的那么95%的密码都可以破解

John模式的选择:

John支持4种模式

1、字典模式,就是通过用户提供的字典来进行爆破

2、单一爆破模式,是作者推荐的模式,这个会通过用户名、全名、等字典来进行爆破

3、递增模式,在此模式下John会发疯似的组合所有可能的密码,也是最强的一个,不过要足够的时间

4、外部模式,但要创建文件提供给john

在john的help帮助手册中的解析:

–single

single crack 模式,使用配置文件中的规则进行破解

–wordlist=FILE–stdin

字典模式,从 FILE 或标准输入中读取词汇

–rules

打开字典模式的词汇表切分规则

–incremental[=MODE]

使用增量模式

–external=MODE

打开外部模式或单词过滤,使用 [List.External:MODE] 节中定义的外部函数

–stdout[=LENGTH]

不进行破解,仅仅把生成的、要测试是否为口令的词汇输出到标准输出上

–restore[=NAME]

恢复被中断的破解过程,从指定文件或默认为 $JOHN/john.rec 的文件中读取破解过程的状态信息

–session=NAME

将新的破解会话命名为 NAME ,该选项用于会话中断恢复和同时运行多个破解实例的情况

–status[=NAME]

显示会话状态

–make-charset=FILE

生成一个字符集文件,覆盖 FILE 文件,用于增量模式

–show

显示已破解口令

–test

进行基准测试

–users=[-]LOGIN

UID[,…]

–groups=[-]GID[,…]

对指定用户组的账户进行破解,减号表示反向操作,说明对列出组之外的账户进行破解。

–shells=[-]SHELL[,…]

对使用指定 shell 的账户进行操作,减号表示反向操作

–salts=[-]COUNT

至少对 COUNT 口令加载加盐,减号表示反向操作

–format=NAME

指定密文格式名称,为 DES/BSDI/MD5/BF/AFS/LM 之一

–save-memory=LEVEL

设置内存节省模式,当内存不多时选用这个选项。 LEVEL 取值在 1~3

在john 自带一个字典 位于/usr/share/john/password.lst

或者是wordlists中的一个压缩文件中的rockyou.txt.gz里面是赠送的一个密码字典

用gzip –d 解压他

当然也可以自己去网上找字典

下面是实际操作:

首先将你的哈希值给填入文件中,不需要进行任何改动username:XXX:1123123232132132133:1312321321321321321:::类似于这个例子

我们把他

John –-format=NT –-wordlist=/usr/share/wordlists/rockyou XXXX (XXXX)是你要进行破解的哈希值文件

就可以进行破解了(注意:测试时密码不要设置太复杂不然他的字典中没有就破解不出来)

哈希的破解_第2张图片

HASTCAT

简介

HASTCAT是和John实力相当的两个哈希值破解器

Hashcat号称宇宙最强密码破解工具,其是一款开源软件,有针对Windows、Mac和Linux的版本,支持CPU、GPU、APU、DSP和FPGA等多种计算核心,支持多种hash散列算法,支持对rar、office、pdf、windows账户、wifi等多种密码的破解。

hashcat常用命令

-m                           指定哈希类型

-a                            指定破解模式

-V                            查看版本信息

-o                            将输出结果储存到指定文件

--force                     忽略警告

--show                    仅显示破解的hash密码和对应的明文

--remove                 从源文件中删除破解成功的hash

--username             忽略hash表中的用户名

-b                             测试计算机破解速度和相关硬件信息

-O                            限制密码长度

-T                            设置线程数

-r                             使用规则文件

-1                             自定义字符集  -1 0123asd     ?1={0123as}

-2                             自定义字符集  -2 0123asd    ?2={0123asd}

-3                             自定义字符集  -3 0123asd    ?3={0123asd}

-i                              启用增量破解模式

--increment-min       设置密码最小长度

--increment-max      设置密码最大长度

hashcat破解模式介绍

0    straight                                           字典破解

1    combination                                    将字典中密码进行组合(1 2>11 22 12 21)

3    brute-force                                      使用指定掩码破解

6    Hybrid Wordlist + Mask                  字典+掩码破解

7    Hybrid Mask  + Wordlist                 掩码+字典破解

hashcat集成的字符集

?l                代表小写字母

?u              代表大写字母

?d              代表数字

?s              代表特殊字符

?a              代表大小写字母、数字以及特殊字符 

?b               0x00-0xff

那么他不像John 一样会自己检查hash值的属性(当然John有时也会出错)

那么如何大概的确定一个hash值的属性呢?

哈希的破解_第3张图片

这个是hash值检测软件,用法很简单就是把你的纯哈希值放进去

哈希的破解_第4张图片

可以看到这个hash可能是MD5

Least possible Hashs 是小可能的是一般很难判断

再回到HASHCAT

查询HASH的代数

hash --help

里面有想要的id 配合 -m 参数使用

你可能感兴趣的:(KALI,安全,网络)