HTTP HTTP GET HTTP Basic auth HTTP NTLM auth NTLM flaky timing-dependent # Server-side HTTP/1.1 401 Need Basic or NTLM auth Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: NTLM WWW-Authenticate: Basic realm="testrealm" This is a bad password page! HTTP/1.1 401 Need Basic or NTLM auth (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 27 WWW-Authenticate: NTLM WWW-Authenticate: Basic realm="testrealm" This is not the real page! HTTP/1.1 401 NTLM intermediate (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 33 WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAACGgAEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg= This is still not the real page! HTTP/1.1 200 Things are fine in server land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page! Data connection 0: 228 Data connection 1: 228 Data connection 2: 402 # Client-side NTLM SSL !SSPI http libntlmconnect NTLM connection mapping http://%HOSTIP:%HTTPPORT/%TESTNUMBER # Verify data after the test has been "shot" GET /%TESTNUMBER0100 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= Accept: */* GET /%TESTNUMBER0100 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= Accept: */* GET /%TESTNUMBER0200 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* GET /%TESTNUMBER0200 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04= Accept: */*