当遇到某个Hash值时,我们当然可以根据每种Hash值的不同特征来识别其可能的Hash类型,但是这一过程是十分耗时和繁琐的,而我们每个人都希望生活向更简单的方向前进。所以也就有了这篇文章。

Hash Algorithm Identifier

使用过Kali Linux或者Backtrack Linux的人,应该都知道一款名为Hash identifier的工具,这是一款十分优秀的工具,没有它,也不会有我这款工具的出现。

但是Hash identifier的代码并不是很有效率,有大量的if-else-if,并且有许多方法构造是重复的,这一切使得它的代码十分冗余。

所以我对其代码进行了重写(165行代码),并扩充了其Hash识别库,目前支持160多种Hash加密方式的识别,以后会更多。

我将这款工具命名为Hash-Algorithm-Identifier。

687474703a2f2f692e696d6775722e636f6d2f797569694346562e706e67.png

下载

你可以在GitHub上获取它。

使用

运行:

python HashIdentifier.py

赋予它可执行权限:

chmod +x HashIdentifier.py

执行它(一旦赋予了可执行权限,你可以通过下面的简单指令直接运行):

./HashIdentifier.py

如果你不明白上面的步骤,不用担心。在GitHub上你会找到一个名为start.sh的文件,直接运行它就可以了。

输入以下指令运行start.sh:

sh start.sh

代码介绍

我使用正则表达式来判断Hash值类型,阅读代码你会很容易发现这一点。使用正则表达式识别Hash类型可以让代码简单并且易于理解。

支持识别的Hash类型:

Adler32

Apache MD5

Blowfish crypt

Blowfish(Eggdrop)

Blowfish(OpenBSD)

CRC-16

CRC-16-CCITT

CRC-32

CRC-32B

CRC-64

CRC-96(ZIP)

Cisco IOS SHA256

Cisco-IOS MD5

DES crypt

DES hash(Traditional)

DES(Oracle)

DES(Unix)

Domain Cached Credentials 2(DCC2)

Domain Cached Credentials(DCC)

ELF-32

FCS-16

FCS-32

FNV-164

FNV-32

Fletcher-32

Fortigate (FortiOS)

FreeBSD MD5

GHash-32-3

GHash-32-5

GOST R 34.11-94

HAVAL-128

HAVAL-128(HMAC)

HAVAL-160

HAVAL-192

HAVAL-224

HAVAL-256

Joaat

Keccak-224

Keccak-256

Keccak-512

LM

Lineage II C4

Lotus Domino

MD2

MD2(HMAC)

MD4

MD4(HMAC)

MD5

MD5 apache crypt

MD5 crypt

MD5(APR)

MD5(Chap)

MD5(Cisco PIX)

MD5(HMAC(WordPress))

MD5(HMAC)

MD5(IP.Board)

MD5(Joomla)

MD5(MyBB)

MD5(Palshop)

MD5(Unix)

MD5(WordPress)

MD5(ZipMonster)

MD5(osCommerce)

MD5(phpBB3)

MSCASH2

MSSQL(2000)

MSSQL(2005)

MSSQL(2008)

Minecraft(Authme)

MySQL 3.x

MySQL 4.x

MySQL 5.x

NSLDAP

NT crypt

NTLM

Netscape LDAP SHA

RAdmin v2.x

RIPEMD-128

RIPEMD-128(HMAC)

RIPEMD-160

RIPEMD-160(HMAC)

RIPEMD-256

RIPEMD-256(HMAC)

RIPEMD-320

RIPEMD-320(HMAC)

SALSA-10

SALSA-20

SAM(LM_Hash:NT_Hash)

SHA-1

SHA-1 crypt

SHA-1(Django)

SHA-1(Hex)

SHA-1(LDAP) Base64

SHA-1(LDAP) Base64 + salt

SHA-1(MaNGOS)

SHA-1(MaNGOS2)

SHA-1(Oracle)

SHA-224

SHA-224(HMAC)

SHA-256

SHA-256 crypt

SHA-256(Django)

SHA-256(HMAC)

SHA-256(Unix)

SHA-3(Keccak)

SHA-384

SHA-384(Django)

SHA-512

SHA-512 crypt

SHA-512(Drupal)

SHA-512(HMAC)

SHA-512(Unix)

SHA3-384

SHA3-512

SSHA-1

Skein-1024

Skein-1024(384)

Skein-1024(512)

Skein-256

Skein-256(128)

Skein-256(160)

Skein-256(224)

Skein-512

Skein-512(128)

Skein-512(160)

Skein-512(224)

Skein-512(256)

Skein-512(384)

Snefru-128

Snefru-128(HMAC)

Snefru-256

Snefru-256(HMAC)

TIGER-160

TIGER-160(HMAC)

TIGER-192(HMAC)

Tiger-128

Tiger-128(HMAC)

Tiger-192

VNC

Whirlpool

XOR-32

substr(md5($pass),0,16)

substr(md5($pass),16,16)

示例输出结果

Hash Identify : MD5: e20d344649524a8dd3f534cf32c290d5

2.png

Hash Identify : MD5(phpBB3):$H$9123456785DAERgALpsri.D9z3ht120

3.png

Hash Identify : MD5(Unix):$1$12345678$XM4P3PrKBgKNnTaqG9P0T/

4.png

Hash Identify : MD5(WordPress): $P$B123456780BhGFYSlUqGyE6ErKErL01

5.png

Hash Identify : SHA-512:6da33f58a9ef00445a387a5227aeb56fda7fc09c13a5f4383b777a8048894a5a2df3f3e27eb3ffb582431cd8e1d1c9a8bb7e4c53e74e802ed829d81ced395f34

6.png

Hash Identify : Tiger-192:f9f37d1da72799ae1a0d73033be6b54560e938a01334818f

7.png