|
@@ -46,26 +46,63 @@ namespace SMBLibrary.Authentication.NTLM
|
|
|
context = new AuthContext(negotiateMessage.Workstation, serverChallenge);
|
|
|
|
|
|
challengeMessage = new ChallengeMessage();
|
|
|
- challengeMessage.NegotiateFlags = NegotiateFlags.UnicodeEncoding |
|
|
|
- NegotiateFlags.TargetNameSupplied |
|
|
|
- NegotiateFlags.NTLMSessionSecurity |
|
|
|
- NegotiateFlags.TargetTypeServer |
|
|
|
- NegotiateFlags.ExtendedSessionSecurity |
|
|
|
- NegotiateFlags.TargetInfo |
|
|
|
- NegotiateFlags.Version;
|
|
|
+
|
|
|
+ challengeMessage.NegotiateFlags = NegotiateFlags.TargetTypeServer |
|
|
|
+ NegotiateFlags.TargetInfo |
|
|
|
+ NegotiateFlags.TargetNameSupplied |
|
|
|
+ NegotiateFlags.Version;
|
|
|
+
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.NTLMSessionSecurity;
|
|
|
+
|
|
|
+ if ((negotiateMessage.NegotiateFlags & NegotiateFlags.UnicodeEncoding) > 0)
|
|
|
+ {
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.UnicodeEncoding;
|
|
|
+ }
|
|
|
+ else if ((negotiateMessage.NegotiateFlags & NegotiateFlags.OEMEncoding) > 0)
|
|
|
+ {
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.OEMEncoding;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((negotiateMessage.NegotiateFlags & NegotiateFlags.ExtendedSessionSecurity) > 0)
|
|
|
+ {
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.ExtendedSessionSecurity;
|
|
|
+ }
|
|
|
+ else if ((negotiateMessage.NegotiateFlags & NegotiateFlags.LanManagerKey) > 0)
|
|
|
+ {
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.LanManagerKey;
|
|
|
+ }
|
|
|
+
|
|
|
if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Sign) > 0)
|
|
|
{
|
|
|
|
|
|
|
|
|
challengeMessage.NegotiateFlags |= NegotiateFlags.Sign;
|
|
|
}
|
|
|
- if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Use56BitEncryption) > 0)
|
|
|
+
|
|
|
+ if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Seal) > 0)
|
|
|
{
|
|
|
- challengeMessage.NegotiateFlags |= NegotiateFlags.Use56BitEncryption;
|
|
|
+
|
|
|
+
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.Seal;
|
|
|
}
|
|
|
- if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Use128BitEncryption) > 0)
|
|
|
+
|
|
|
+ if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Sign) > 0 ||
|
|
|
+ (negotiateMessage.NegotiateFlags & NegotiateFlags.Seal) > 0)
|
|
|
{
|
|
|
- challengeMessage.NegotiateFlags |= NegotiateFlags.Use128BitEncryption;
|
|
|
+ if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Use56BitEncryption) > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.Use56BitEncryption;
|
|
|
+ }
|
|
|
+ if ((negotiateMessage.NegotiateFlags & NegotiateFlags.Use128BitEncryption) > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ challengeMessage.NegotiateFlags |= NegotiateFlags.Use128BitEncryption;
|
|
|
+ }
|
|
|
}
|
|
|
challengeMessage.TargetName = Environment.MachineName;
|
|
|
challengeMessage.ServerChallenge = serverChallenge;
|