On 3/9/07, sean nakasone <seannakasone / yahoo.com> wrote:
> Can someone please provide me with a simple ntlm example?

The following chunk of code works in my environment: IIS 6.0, ruby
1.8.5 [i386-cygwin], and non-standard rubyntlm 0.1.1.

http://rubyforge.org/projects/rubyntlm/

----
require 'socket'
require 'net/ntlm'

$user = "koheik"
$passwd = "password"

$host = "www"
$port = 80

def header(s, host, msg)
   s.print "GET / HTTP/1.1\r\n"
   s.print "Host: #{host}\r\n"
   s.print "Authorization: NTLM " + msg + "\r\n"
   s.print "\r\n"
end

client = TCPSocket.new($host, $port)

# client -> server
t1 = Net::NTLM::Message::Type1.new()
header(client, $host, t1.encode64)

# server -> client
msg = ''
while(line = client.gets)
   if /^WWW-Authenticate: (NTLM|Negotiate) (.+)\r\n/ =~ line
      msg = $2
   end
   break if /^\r\n/ =~ line
end

if(msg)
   t2 = Net::NTLM::Message.decode64(msg)
   t3 = t2.response({:user => $user, :password => $passwd}, {:ntlmv2 => true})
   header(client, $host, t3.encode64)
end

client.shutdown(1)
response=client.readlines
puts response
client.close
----

Thanks,
Kohei