Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ntlmv1-multi — NTLMv1 多功能工具 | Kitploit
工具/GitHubGitHub/evilmog/ntlmv1-multi
密码破解加密/解密工具密码攻击哈希分析密码学身份验证
GitHubevilmog/ntlmv1-multi

ntlmv1-multi

NTLMv1 多功能工具

查看仓库
6709982个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

NTLMv1 多功能工具

此工具将 NTLMv1 哈希还原为 NTLM,更具体地说,它将 NTLMv1 挑战响应格式化为可以使用 hashcat 模式 14000 破解的格式。

CT3 计算

如果你指定 --ct3,它会为你计算 NTLM 的最后 4 位数字;如果你指定 --json,则隐式启用 --ct3,并会以 pt3 元素的形式返回,例如:

root@kitploit:~
python3 ntlmv1.py --ntlm "DC1$::MOG:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:1122334455667788" --json 

{"ntlmv1": "DC1$::MOG:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:1122334455667788", "user": "DC1$", "domain": "MOG", "challenge": "1122334455667788", "lmresp": "AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E", "ntresp": "AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E", "ct3": "352661ECEF909C5E", "ct3_crack": "ct3_to_ntlm.bin 352661ECEF909C5E 1122334455667788", "pt3": "8c71", "hash1": "AC51EC464A91A35A:1122334455667788", "hash2": "04A862DA3106EC2B:1122334455667788"}

最后,在此更新中,我将函数移入了 main(),这样你就可以直接导入该模块使用。

2020 年 11 月 10 日更新

我新增了两个选项:--hashcat 和 --hcutils,它们分别设置你的 hashcat 和 hashcat-utils 路径,这样你可以直接从工具中复制粘贴使用。

如果你的 hashcat 目录位于 ~/git/hashcat,hashcat-utils 目录位于 ~/git/hashcat-utils,你可以这样运行该工具:

root@kitploit:~
python3 ./ntlmv1.py --ntlm "SERVER1$::MOG:9DE7F41D81C1207400000000000000000000000000000000:DE766A98B60D1C911DCFFFDBB3E521314B2CE34EAB63CC7B:1122334455667788" --hashcat "~/git/hashcat" --hcutils "~/git/hashcat-utils"

2019 年 12 月 10 日更新

是的,这应该是兼容 Python 3 的,我还合并了 ntlmv1 和 ntlmv1-ess。

ntlmv1-multi

NTLMv1 多功能工具

此工具修改 NTLMv1/NTLMv1-ESS/MSCHAPv2 哈希,使其可以通过 hashcat 中的 DES 模式 14000 进行破解。

此工具基于 Hashcat 团队 atom 的工作 https://hashcat.net/forum/thread-5832.html

同时也基于 https://hashcat.net/forum/thread-5912.html 和 https://www.youtube.com/watch?v=LIHACAct2vo

安装

使用 uv 将 ntlmv1_nextgen.py 下一代工具安装为全局 ntlmv1-multi 命令:

root@kitploit:~
uv tool install .
ntlmv1-multi --ntlmv1 "hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788"

或者不安装,直接从仓库运行:

root@kitploit:~
uv run ntlmv1_nextgen.py --ntlmv1 "hashcat::DUSTIN-5AA37877:..."

该项目附带 pyproject.toml(要求 Python 3.14+,依赖 pycryptodome),因此 uv 会为你解析所有依赖;原始 ntlmv1.py 仍可在任何 Python 3 解释器下独立运行。

下一代工具(ntlmv1_nextgen.py)

ntlmv1_nextgen.py(安装为 ntlmv1-multi 命令)是现代解析器。它接受 NTLMv1、$99$ blob 和 MSCHAPv2,自动处理 ESS,并且可以从已破解的 potfile 一步完成完整的 NTLMv1 -> NTLM 转换。可用选项:

用法

不带 ESS 的 NTLMv1

要捕获,请使用带 --lm 标志的 responder;如果不使用 --lm,将启用 ESS,这会导致破解时间更长。另外还有一个新标志 --disable-ess,它会尝试禁用 ESS 并强制降级。请先尝试 --disable-ess,如果失败,请尝试 --lm。如果使用 --disable-ess 或 --lm,请确保你的客户端挑战值为 1122334455667788 以使用 FPGA,但这可能会触发一些网络 IDS/IPS 防护,如果它们检测到该流量。

捕获结果如下所示。

root@kitploit:~
[SMB] NTLMv1 Client   : 184.64.60.62
[SMB] NTLMv1 Username : DUSTIN-5AA37877\hashcat
[SMB] NTLMv1 Hash     : hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
[*] Skipping previously captured hash for DUSTIN-5AA37877\hashcat

哈希部分如下所示:

root@kitploit:~
hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788

因此像这样使用多工具(它同样兼容 Python 2):

root@kitploit:~
python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788

它将输出以下数据,而不会修改服务器挑战等内容:

root@kitploit:~
['hashcat', '', 'DUSTIN-5AA37877', '76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D', '727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595', '1122334455667788']

Hostname: DUSTIN-5AA37877
Username: hashcat
Challenge: 1122334455667788
LM Response: 76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D
NT Response: 727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595
CT1: 727B4E35F947129E
CT2: A52B9CDEDAE86934
CT3: BB23EF89F50FC595

To Calculate final 4 characters of NTLM hash use:
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788

To crack with hashcat create a file with the following contents:
727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788

To crack with hashcat:
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1

本例中使用的密码是 "password",我们可以用以下命令验证 NTLM 哈希:

root@kitploit:~
echo -n password | iconv -f utf8 -t utf16le | openssl dgst -md4
(stdin)= 8846f7eaee8fb117ad06bdd830b7586c

借助 atom 编写的 hashcat utils 中的 ct3_to_ntlm.bin,你可以根据工具输出的 NTLMv1 挑战计算出 NTLM 哈希的最后 4 个字符:

root@kitploit:~
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788
586c

这与 NTLM 哈希的末尾一致,因此我们可以继续。下一步是使用 hashcat 破解哈希,所以我们需要创建一个 hashes.txt 文件,内容如下:

root@kitploit:~
727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788

要使用 hashcat 破解此文件,请使用:

root@kitploit:~
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1

一个重要的注意事项:hashcat 返回的是 DES 密钥,而不是 NTLM 密钥。你需要使用 Hashcat Utils 中的 deskey_to_ntlm.pl 转换为 NTLM,可以通过以下命令完成:

root@kitploit:~
./deskey_to_ntlm.pl [cracked des key 1]
./deskey_to_ntlm.pl [cracked des key 2]

然后你将两个 NTLM 密钥与密码的第三部分组合起来。第三部分通过以下命令计算(即工具输出的内容):

root@kitploit:~
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788

将这 3 个部分组合在一起,就可以得到完整的 NTLM 哈希了。

使用 DES 转换器进行测试

如果你只是在测试我的代码,并且已经知道密码,可以使用 DES 转换器:

root@kitploit:~
python ntlm-to-des.py --ntlm b4b9b02e6f09a9bd760f388b67351e2b
DESKEY1: b55d6d04e67926
DESKEY2: bcba83e6895b9d

echo "$HEX[b55d6d04e67926]">>des.cand
echo "$HEX[bcba83e6895b9d]">>des.cand

基本上你需要执行以下操作:

root@kitploit:~
echo "$HEX[b55d6d04e67926]">>des.cand
echo "$HEX[bcba83e6895b9d]">>des.cand
root@kitploit:~
./hashcat -m 14000 -a 0 hashes.txt des.cand

然后你应该能得到一些反转后的哈希。

带 ESS 的 NTLMv1

ESS 会改变服务器挑战。如果你在 responder 中看到 ESS,是因为你没有使用 --lm,或者客户端被设置为不发出 LM 响应,此时 ESS 会被启用。另外,--disable-ess 会尝试强制关闭 ESS,但这需要较新版本(2021 年 8 月或更新)的 impacket 和 responder。

ESS 输出如下所示:

root@kitploit:~
[SMB] NTLMv1-SSP Client   : 184.64.60.62
[SMB] NTLMv1-SSP Username : DUSTIN-5AA37877\hashcat
[SMB] NTLMv1-SSP Hash     : hashcat::DUSTIN-5AA37877:85D5BC2CE95161CD00000000000000000000000000000000:892F905962F76D323837F613F88DE27C2BBD6C9ABCD021D0:1122334455667788

实际的哈希如下所示:

root@kitploit:~
hashcat::DUSTIN-5AA37877:85D5BC2CE95161CD00000000000000000000000000000000:892F905962F76D323837F613F88DE27C2BBD6C9ABCD021D0:1122334455667788

要使用该工具,请运行(它兼容 python3):

root@kitploit:~
python3 ntlmv1.py --ntlmv1 "hashcat::DUSTIN-5AA37877:85D5BC2CE95161CD00000000000000000000000000000000:892F905962F76D323837F613F88DE27C2BBD6C9ABCD021D0:1122334455667788"

该工具将输出:

root@kitploit:~
Hashfield Split:
['hashcat', '', 'DUSTIN-5AA37877', '85D5BC2CE95161CD00000000000000000000000000000000', '892F905962F76D323837F613F88DE27C2BBD6C9ABCD021D0', '1122334455667788']

Hostname: DUSTIN-5AA37877
Username: hashcat
LM Response: 85D5BC2CE95161CD00000000000000000000000000000000
NT Response: 892F905962F76D323837F613F88DE27C2BBD6C9ABCD021D0
Client Challenge: 1122334455667788
SRV Challenge: b36d2b9a8607ea77

To Calculate final 4 characters of NTLM hash use:
./ct3_to_ntlm.bin 2BBD6C9ABCD021D0 1122334455667788 85D5BC2CE95161CD00000000000000000000000000000000

To crack with hashcat create a file with the following contents:
892F905962F76D32:b36d2b9a8607ea77
3837F613F88DE27C:b36d2b9a8607ea77

To crack with hashcat:
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1

现在,本例中我们使用的密码是 password,其 NTLM 哈希为 b4b9b02e6f09a9bd760f388b67351e2b

root@kitploit:~
echo -n password | iconv -f utf8 -t utf16le | openssl dgst -md4
(stdin)= 8846f7eaee8fb117ad06bdd830b7586c

因此,为了计算我们的 NTLMv1-ESS 挑战对应的 NTLM 哈希的最后 4 个字符,我们使用工具输出中的以下命令来获取 586c

root@kitploit:~
./ct3_to_ntlm.bin 2BBD6C9ABCD021D0 1122334455667788 85D5BC2CE95161CD00000000000000000000000000000000

根据工具提示,我们必须创建一个包含以下内容的哈希文件,其中包含了处理 ESS 所需的修改后的 SRV 挑战:

root@kitploit:~
892F905962F76D32:b36d2b9a8607ea77
3837F613F88DE27C:b36d2b9a8607ea77

根据工具提示,我们使用以下命令通过 hashcat 破解:

root@kitploit:~
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1

一个重要的注意事项:hashcat 返回的是 DES 密钥,而不是 NTLM 密钥。你需要使用 Hashcat Utils 中的 deskey_to_ntlm.pl 转换为 NTLM,可以通过以下命令完成:

root@kitploit:~
./deskey_to_ntlm.pl [cracked des key 1]
./deskey_to_ntlm.pl [cracked des key 2]

现在,假设我们事先已经知道了该场景中的 NTLM 哈希(因为它是我们生成的),并且想要验证工具,我们使用以下命令:

root@kitploit:~
python ntlm-to-des.py --ntlm b4b9b02e6f09a9bd760f388b67351e2b

这将为我们输出一些数据:

root@kitploit:~
DESKEY1: b55d6d04e67926
DESKEY2: bcba83e6895b9d

echo "$HEX[b55d6d04e67926]">>des.cand
echo "$HEX[bcba83e6895b9d]">>des.cand

这里重要的部分是:

root@kitploit:~
echo "$HEX[b55d6d04e67926]">>des.cand
echo "$HEX[bcba83e6895b9d]">>des.cand

现在我们可以使用以下命令通过 hashcat 进行破解,而无需等待 8 天:

root@kitploit:~
./hashcat -m 14000 -a 0 hashes.txt des.cand

用于数据验证测试的 NTLM 哈希转 DES 密钥转换器

root@kitploit:~
python ntlm-to-des.py  --ntlm 8846f7eaee8fb117ad06bdd830b7586c
root@kitploit:~
DESKEY1: b55d6d05e6792652
DESKEY2: bdba82e6895a9d6a

echo "$HEX[b55d6d05e6792652]">>des.cand
echo "$HEX[bdba82e6895a9d6a]">>des.cand

JSON 支持

该工具现在支持 JSON 输出,设置 --json 标志后,它将输出 JSON 格式的结果:

root@kitploit:~
python3 ntlmv1.py --ntlmv1 "SERVER1$::MOG:7EF3F506F5EA510E00000000000000000000000000000000:1217169BD7BE0270A033899BD440016D3E6DACAF5894D504:ff81dfd6b12c269d" --json
{"ntlmv1": "SERVER1$::MOG:7EF3F506F5EA510E00000000000000000000000000000000:1217169BD7BE0270A033899BD440016D3E6DACAF5894D504:ff81dfd6b12c269d", "user": "SERVER1$", "domain": "MOG", "challenge": "ff81dfd6b12c269d", "lmresp": "7EF3F506F5EA510E00000000000000000000000000000000", "ntresp": "1217169BD7BE0270A033899BD440016D3E6DACAF5894D504", "ct3": "3E6DACAF5894D504", "srvchallenge": "888f8ee0fa031808", "ct3_crack": "ct3_to_ntlm.bin 3E6DACAF5894D504 ff81dfd6b12c269d 7EF3F506F5EA510E00000000000000000000000000000000", "hash1": "1217169BD7BE0270:888f8ee0fa031808", "hash2": "A033899BD440016D:888f8ee0fa031808", "CRACK_SH": "$NETLM$888f8ee0fa031808$1217169BD7BE0270A033899BD440016D3E6DACAF5894D504"}

重要字段如下:

  • hash1 - 这是 hashcat 模式 14000 的第一个哈希
  • hash2 - 这是 hashcat 模式 14000 的第二个哈希
  • ct3_crack - 这是使用 hashcat utils 破解 ct3 的命令
  • ntlmv1 - 这是原始的 ntlmv1 哈希
  • user - 这是用户字段
  • domain - 这是域字段
  • lmresp - 这是 LM 响应
  • ntresp - 这是 NT 响应
  • challenge - 这是原始挑战字段
  • srvchallenge - 如果是 ESS 哈希,则会填充 srv 挑战

使用 hashcat potfile 一步完成 NTLMv1 到 NTLM 的转换

使用 hashcat 破解 mode 14000 DES 哈希后,破解出的 DES 密钥会以 ct:challenge:key 行的形式写入你的 potfile(由于是原始字节,密钥通常以 $HEX[...] 形式存储)。无需手动通过 --key1/--key2 将密钥复制回去,只需让 ntlmv1_nextgen.py 指向 potfile,它将恢复密钥、对照密文进行验证,并一步完成完整的 NTLMv1 -> NTLM 转换:

root@kitploit:~
python3 ntlmv1_nextgen.py --ntlmv1 "hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788" --potfile ~/.local/share/hashcat/hashcat.potfile

恢复出的 NTLM 哈希将以 NTLM 字段输出(在 --json 中为 ntlm)。--potfile 可与 --ntlmv1、--99 和 --mschapv2 配合使用,能处理 ESS 哈希(根据 MD5 派生的挑战进行匹配),并忽略无关的 potfile 条目。显式指定的 --key1/--key2 仍优先于 potfile 匹配结果。

hashcat 和 rainbowcrackalack 的 potfile 均可接受。破解出的密钥字段可以是 hashcat $HEX[...] blob、裸的可打印字节、裸的 16 位十六进制 8 字节密钥,或裸的 14 位十六进制 7 字节密钥(rainbowcrackalack 输出的形式)——所有这些在使用前都会进行规范化并对照密文重新验证。

致谢 / 许可证

本仓库基于 hashcat 作者 atom 的论坛帖子以及 moxie marlinspike 的研究。由于 atom 的代码主要采用 MIT 许可证,本项目也采用该许可证以保持兼容。本项目不使用 GPL,以便任何实体都可以无限制地将其整合到商业项目中。

下载工具
OptionDescription
--ntlmv1 <hash>Responder 格式的 NTLMv1 哈希(user::host:LM:NT:challenge)。
--99 <blob>$99$ 风格的 base64 blob。
--mschapv2 <hash>John the Ripper 格式的 MSCHAPv2 哈希。
--nthash <hex>32 字符 NTLM 哈希;由此推导 DES 密钥和 hashcat 候选值。
--password <pw>从已知密码推导 --key1/--key2 DES 密钥。
--key1 <hex> / --key2 <hex>直接提供 CT1/CT2 的 16 位十六进制 DES 密钥(优先于 --potfile)。
--potfile <path>已破解 mode 14000 密钥的 hashcat/rainbowcrackalack potfile;自动恢复 key1/key2 以完成 NTLMv1 -> NTLM 转换。
--hashcat输出 CT1/CT2 的 hashcat 格式字符串。
--json仅输出 JSON(隐式启用 CT3 计算)。