0

我正在开发一个需要使用 SMB 访问网络共享的应用程序。有人告诉我,如果安全检测到使用 NTLM v. 1 进行的身份验证尝试,那么相应的防火墙规则将被撤销。

因此,我需要确保SMBJ(我可能会使用它)支持 NTLM v. 2 并默认使用它。

SMBJ 是否支持 NTLM v. 2?它是否默认使用它?

我自己的尝试

在 SMBJ 的源代码中,我发现了以下片段:

byte[] serverChallenge = challenge.getServerChallenge();
byte[] responseKeyNT = ntlmFunctions.NTOWFv2(String.valueOf(context.getPassword()), context.getUsername(), context.getDomain());
byte[] ntlmv2ClientChallenge = ntlmFunctions.(challenge.getTargetInfo());
byte[] ntlmv2Response = ntlmFunctions.getNTLMv2Response(responseKeyNT, serverChallenge, ntlmv2ClientChallenge);

名称getNTLMv2ClientChallengegetNTLMv2Response建议可以使用 NTLM v. 2。

此外,JCIFS 主页声称SMBJ 是后续项目:

幸运的是,有多个新的开源 SMB Java 项目可供尝试,其中包括:

jcifs-codelibs jcifs-ng smbj

根据其常见问题解答,JCIFS 自 1.3.0 版以来一直在使用 NTLM v. 2。

如果

  1. JCIFS 支持 NTLM v. 2 并默认使用它,
  2. SMBJ 基于 JCIFS,

那么 SMBJ 应该支持 NTLM v. 2 并默认使用它。

4

1 回答 1

2

是的,SMBJ 使用 NTLMv2 或 SPNEGO 进行身份验证。您可以配置要使用哪一个。它不使用 NTLMv1。

于 2020-10-19T07:42:48.477 回答