分类:
2010-11-18 23:31:04
1.ntlm是什么
早期smb协议在网络上传输明文口令。后来出现 lan manager challenge/response 验证机制,简称lm,它是如此简单以至很轻易就被破解。微软提出了windowsnt挑战/响应验证机制,称之为ntlm。现在已经有了更新的ntlmv2以及kerberos验证体系。ntlm是windows早期安全协议,因向后兼容性而保留下来。ntlm是nt lan manager的缩写,即nt lan管理器。ntlm 是为没有加入到域中的计算机(如独立服务器和工作组)提供的身份验证协议。
具体说明可以参考下面资源:
2.ntlm验证答应windows用户使用当前登录系统的身份进行认证,当前用户应该是登陆在一个域(domain)上,他的身份是可以自动通过浏览器传递给服务器的。它是一种单点登录的策略,系统可以通过ntlm重用登录到windows系统中的用户凭证,不用再次要求用户输入密码进行认证。
下面是.net的实现方式,如下:
static void
{
try
{
credentialcache mycredentialcache = new credentialcache();
mycredentialcache.add(new uri("****.com /default.aspx"), "ntlm", new networkcredential("carysun", "****", "******"));
httpwebrequest req;
req = (httpwebrequest)httpwebrequest.create("****.com /default.aspx ");
req.method = "get";
req.keepalive = true;
req.credentials = mycredentialcache;
//保存cookie
cookiecontainer cc = new cookiecontainer();
req.cookiecontainer = cc;
httpwebresponse res;
res = (httpwebresponse)req.getresponse();
console.writeline(res.statuscode);
if (res.statuscode == httpstatuscode.ok)
{
//验证成功
console.writeline(res.statuscode);
}
}
catch (exception ex)
{
//验证失败
}
console.readline();
}
python-ntlm(官网地址:)是一个用来访问ntlm认证网址的module。下面是借助该module的实现代码。
import urllib2
from urlparse import urlparse, urlunparse
from ntlm import httpntlmauthhandler
from urllib2 import request, urlopen, urlerror, httperror
user = '*****\\carysun'
password = "********"
url = "*****.com/default.aspx"
passman = urllib2.httppasswordmgrwithdefaultrealm()
passman.add_password(none, url, user, password)
# create the ntlm authentication handler
auth_ntlm = httpntlmauthhandler.httpntlmauthhandler(passman)
# create and install the opener
opener = urllib2.build_opener(auth_ntlm)
urllib2.install_opener(opener)
req = urllib2.request(url)
try:
response = urllib2.urlopen(req)
except httperror,e:
print 'error code:',e.code
except urlerror,e:
print 'reason:',e.reason
else:
print (response.read())
chinaunix网友2010-11-19 15:16:10
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com