Tag: ntlm

C#NTLM哈希计算器

我最近开始学习C#。 我尝试用这种语言生成一个NTLM哈希,但我找不到一个函数来为我做这个。 在python 3.x中,我将导入hashlib并使用hashlib.new(“md4”, “Hello, World!”.encode(“utf-16le”))计算它hashlib.new(“md4”, “Hello, World!”.encode(“utf-16le”)) 。 我在C#中搜索对象浏览器但没有找到任何内容,最接近的是Windows NTLM身份validation类。 我还搜索了微软的文档并发现了哈希计算器,但仅适用于sha1和md5。 有没有办法在C#中计算NTLM哈希? 你能告诉我一个如何做的例子,我宁愿用一个简短的方法来保持简单。 谢谢。

如何强制.net WCF客户端在basicHttpBinding中使用NTLM?

现在我的安全节点定义如下: 我得到以下错误: HTTP请求未经授权使用客户端身份validation方案“Negotiate”。 从服务器收到的身份validation标头是“NTLM”。

如何以另一个用户la / netonly启动Internet Explorer进程?

我正在尝试从我们的WPF应用程序启动Internet Explorer作为另一个用户,这样当我们的用户访问(内部)网站时,他们通过集成Windows身份validation进行静默身份validation。 我们不希望将iexplore.exe作为其他用户启动,因为在计算机上首次启动进程时会出现奇怪的部署/环境问题,并且它首次尝试设置IE7 / 8。 但是,如果你有一个如何在每台机器上静音每个IE安装程序的解决方案,我很乐意听到它。 回到我想要的问题。 我可以使用runas从命令提示符中获取我想要的IE模拟行为*(感谢https://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password ): c:\> runas /noprofile /netonly /user:MyDomain\MyUser iexplore.exe *注意:由于很多原因,我不能在我们的WPF应用程序中使用runas ,但最终结果是我想要的。 无论如何,我想要运行runas /noprofile /netonly iexplore.exe的C#等效代码。 我在CreateProcessWithLogonW P / Invoke中途。 这就是我所拥有的: uint LOGON_NETCREDENTIALS_ONLY = 2; var lpStartupInfo = new CreateProcessWithLogonW_PInvoke.STARTUPINFO(); CreateProcessWithLogonW_PInvoke.PROCESS_INFORMATION processInformation; CreateProcessWithLogonW_PInvoke.CreateProcessWithLogonW( userName, domain, pw, LOGON_NETCREDENTIALS_ONLY, null, commandLine, 0, null, null, ref lpStartupInfo, out processInformation); 这成功启动了Internet Explorer,但似乎根本没有模仿用户。 我能够通过runas命令模拟用户,所以我98%确定validation失败不是IE /区域/密码/ […]

通过NTLM模拟用户

我有一个内部应用程序,它有两个安全级别。 FormsAuthentication用于面向客户端的应用程序和NTLM集成身份validation用于管理界面。 我可以通过使用FormsAuthentication类的方法创建正确的.ASPXAUTH cookie来轻松模拟客户端。 但是,到目前为止,为NTLM生成HTTP身份validation标头已超出我的范围。 当我发现这篇文章( http://msdn.microsoft.com/en-us/library/ms998358.aspx#paght000025_usingimpersonation )时,我有了希望,但后来我意识到它只创建一个上下文来运行代码一段时间请求。 我想切换整个会话,使服务器认为我正在使用另一个域登录。 我对我的帐户拥有管理权限,因此不是为了搞砸或窃取域密码。 它甚至可能吗? 谢谢。

使用HTTP Web请求发送HTTP标头以进行NTLM身份validation

我想登录到一个Sharepoint门户,它会显示一个登录对话框,但是正在使用NTLM身份validation。 如何修改C#中的HTTP标头以成功登录请求? 我假设我需要对门户网站登录部分中的页面进行HTTPWebRequest,并将HTTP标头集合与此一起发布?

如何支持NTLM身份validation与ASP.NET MVC中的回退forms?

如何在ASP.NET MVC应用程序中实现以下内容: 用户打开内联网网站 如果可能,用户将进行静默身份validation 如果NTLM身份validation没有成功,请向用户显示登录表单 用户指示登录密码,并从预定义域列表中选择域 user使用AD在代码中进行身份validation 我知道如何实现4和5,但无法找到有关如何组合NTLM和表单的信息。 因此,永远不会显示NTLM本机登录/密码对话框 – 透明身份validation或外观漂亮的登录页面。 该怎么办? 是否应该询问用户登录名和密码? 可以使用她当前的凭据(域用户名)而无需输入登录名和密码吗? 更新这些,调查相同的问题: 当我问这个时,我并不完全理解NTLM身份validation如何在内部工作。 这里需要了解的重要一点是,如果用户的浏览器不能正确支持NTLM,或者用户禁用了NTLM支持,那么服务器永远不会有机会解决这个问题。 Windows身份validation的工作原理: 客户端向服务器发送常规HTTP请求 服务器响应HTTP状态401并指示必须使用NTLM身份validation来访问资源 客户端发送NTLM Type1消息 服务器使用质询响应NTLM Type2消息 客户端发送Type3消息以响应challenge 服务器响应请求的实际内容 如您所见,不支持NTLM的浏览器不会转到步骤(3),而是会向用户显示IIS生成的错误401页面。 如果用户没有凭据,则在取消NTLM身份validation后,弹出对话框窗口浏览器也不会继续(3)。 因此,我们没有机会自动将用户重定向到自定义登录页面。 这里唯一的选择是有一个“网关”页面,我们决定用户是否应该支持NTLM,如果是,请重定向到受NTLM保护的主页。 如果没有,请显示登录表单并通过手动输入登录名和密码进行身份validation。 通常通过匹配IP范围或通过检查预定义IP表来基于用户的IP地址和/或主机名做出决定。

在Windows 7上调用IPrincipal.IsInRole

我们在应用程序中使用NTLM auth来确定用户是否可以执行某些操作。 我们使用当前Windows登录的IPrincipal (在WinForms应用程序中),调用IsInRole来检查特定的组成员身份。 要检查用户是否是计算机上的本地管理员,我们使用: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); … bool allowed = Thread.CurrentPrincipal.IsInRole(@”Builtin\Administrators”) 如果当前用户是Administrator用户,或者是Builtin\Administrators组成员的另一个用户,则Builtin\Administrators 。 在我们对Windows 7的测试中,我们发现它不再按预期工作。 Administrator用户仍然可以正常工作,但作为Builtin\Administrators组成员的任何其他用户对IsInRole调用返回false。 什么可能导致这种差异? 我有一种直觉,默认设置在某处发生了变化(可能在gpedit中),但找不到任何看起来像罪魁祸首的东西。