package com.zdw;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;
import jcifs.ntlmssp.NtlmFlags;
import jcifs.ntlmssp.Type1Message;
import jcifs.ntlmssp.Type2Message;
import jcifs.ntlmssp.Type3Message;
import jcifs.util.Base64;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScheme;
import org.apache.http.auth.AuthSchemeFactory;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.NTCredentials;
import org.apache.http.auth.params.AuthPNames;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.AuthPolicy;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.auth.NTLMEngine;
import org.apache.http.impl.auth.NTLMEngineException;
import org.apache.http.impl.auth.NTLMScheme;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.junit.Test;
public class LoginTest5
{
private String cookieVal;
/**
* GET /DynamicsCRM/main.aspx HTTP/1.1
Connection: keep-alive
Accept:
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2288.6 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
* TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGA4AlAAAADw==
* TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGA4AlAAAADw==
* TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGA4AlAAAADw==
* TlRMTVNTUAABAAAABbIIoAoACgAgAAAACgAKACoAAABDUk0uNTguQ09NQ1JNLjU4LkNPTQ==
* TlRMTVNTUA==
* TlRMTVNTUA==
* @throws Exception
*/
public static final class JCIFSEngine implements NTLMEngine
{
final int TYPE_1_FLAGS = NtlmFlags.NTLMSSP_NEGOTIATE_56 | NtlmFlags.NTLMSSP_NEGOTIATE_128 | NtlmFlags.NTLMSSP_NEGOTIATE_NTLM2 | NtlmFlags.NTLMSSP_NEGOTIATE_ALWAYS_SIGN | NtlmFlags.NTLMSSP_REQUEST_TARGET;
@Override
public String generateType1Msg(String domain, String workstation)throws NTLMEngineException
{
Type1Message message = new Type1Message(TYPE_1_FLAGS,domain,workstation);
System.out.println(Base64.encode(message.toByteArray()));
return Base64.encode(message.toByteArray());
}
@Override
public String generateType3Msg(String username, String password, String domain,
String workstation, String challenge) throws NTLMEngineException
{
Type2Message type2Message;
try {
type2Message = new Type2Message(Base64.decode(challenge));
} catch (final IOException exception) {
throw new NTLMEngineException("Invalid NTLM type 2 message", exception);
}
final int type2Flags = type2Message.getFlags();
final int type3Flags = type2Flags
& (0xffffffff ^ (NtlmFlags.NTLMSSP_TARGET_TYPE_DOMAIN | NtlmFlags.NTLMSSP_TARGET_TYPE_SERVER));
final Type3Message type3Message = new Type3Message(type2Message, password, domain,
username, workstation, type3Flags);
return Base64.encode(type3Message.toByteArray());
}
}
public static final class NTLMSchemeFactory implements AuthSchemeFactory
{
@Override
public AuthScheme newInstance(HttpParams params) {
// TODO Auto-generated method stub
return new NTLMScheme(new JCIFSEngine());
}
}
public static void fun(String w) throws Exception
{
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH);
httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
CredentialsProvider provider = httpclient.getCredentialsProvider();
String userName = "";
String password = "";
String workstation = w;
String domain = "";
provider.setCredentials(AuthScope.ANY, new NTCredentials(userName, password, workstation, domain));
List<String> authpref = new ArrayList<String>();
authpref.add(AuthPolicy.NTLM);
httpclient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF, authpref);
CookieStore cookieStore = new BasicCookieStore();
//创建一个本地上下文信息
HttpContext localContext = new BasicHttpContext();
//在本地上下问中绑定一个本地存储
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
//设置请求的路径
String url= "";
HttpGet httpget = new HttpGet(url);
//传递本地的http上下文给服务器
httpget.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2288.6 Safari/537.36");
httpget.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
httpget.setHeader("Accept-Encoding", "");
httpget.setHeader("Accept-Language", "zh-CN,zh;q=0.8");
HttpResponse response = httpclient.execute(httpget, localContext);
//获取本地信息
HttpEntity entity = response.getEntity();
System.out.println(response.getStatusLine());
System.out.println();
if (entity != null)
{
System.out.println("Response content length: " + entity.getContentLength());
InputStream in = entity.getContent();
GZIPInputStream gzin = new GZIPInputStream(in);
InputStreamReader isr = new InputStreamReader(gzin, "utf-8");
java.io.BufferedReader br = new java.io.BufferedReader(isr);
StringBuffer sb = new StringBuffer();
String tempbf;
while ((tempbf = br.readLine()) != null) {
sb.append(tempbf);
sb.append("\r\n");
}
isr.close();
gzin.close();
System.out.println(sb.toString());
}
}
public static void main(String[] args) throws Exception
{
String s = "abcdefghijklmnopqrstuvwsyz0123456789&*()-=+!@#$%^,<>/?'';";
String s1,s2;
for(int i=0;i<0;i++)
{
s1 = s.substring(i, i+1);
for(int j=0;j<s.length();j++)
{
s2 = s.substring(j, j+1);
fun(s1+s2);
System.out.println(i+" "+s1+" "+j+" "+s2);
}
}
fun("//");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
ntlm验证Java代码
共12个文件
jar:11个
java:1个
4星 · 超过85%的资源 需积分: 50 101 下载量 15 浏览量
2015-04-17
13:01:11
上传
评论 3
收藏 2.95MB ZIP 举报
温馨提示
里面有ntlm验证的demo 修改一下你url username passwrod 等内容应该就可以使用了 如果不可以 请抓包核查一下
资源推荐
资源详情
资源评论
收起资源包目录
auto.zip (12个子文件)
lib2
httpclient-4.4.jar 702KB
httpmime-4.4.jar 40KB
httpclient-cache-4.4.jar 155KB
jna-4.1.0.jar 893KB
httpcore-4.4.jar 314KB
httpclient-win-4.4.jar 17KB
jna-platform-4.1.0.jar 1.4MB
fluent-hc-4.4.jar 30KB
commons-logging-1.2.jar 60KB
commons-codec-1.9.jar 258KB
lib
jcifs-1.3.18.jar 387KB
LoginTest5.java 7KB
共 12 条
- 1
资源评论
- LIULIUCHAO2017-09-14虽然没有用上,但提供了思路,谢谢!!
- gucg03072018-04-19只有客户端的代码,没有服务端的
hello在么
- 粉丝: 1
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功