proxy - 为什么 CNTLM 要求输入密码?

标签 proxy ntlm

我已经在 Windows 上配置了 CNTLM 代理授权,配置文件看起来像,

Auth            NTLM
PassNT          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PassLM          YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
PassNTLMv2      ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

Proxy           proxy.xxxx.com:8080

Listen          3130

我使用 localhost:3130作为 LAN 设置中的代理,点击浏览器上的任何 URL,它再次要求输入密码!。如果我输入与生成哈希相同的密码,它就可以工作。只是 Cntlm 的目的被打败了。有人遇到过这种情况吗?这是如何运作的?有没有办法解决这个问题?

最佳答案

< 编辑 > 如果您使用的是 Windows,那么我强烈推荐 px在 Cntlm 上,因为它不需要任何握手机制。

px注意事项:

It is primarily designed to run on Windows systems and authenticates on behalf of the application using the currently logged in Windows user account



< /编辑 >

1) 将 CNTLM 安装到默认目录(在 Windows 上, C:\Program Files (x86)\cntlm\)。

2) 运行 cmd.exe
3) 类型:cd "C:\Program Files (x86)\cntlm\"
4) 类型:cntlm.exe -H -d your_domain -u your_username
它会询问您的密码。输入你的密码,cntlm 会给你一些哈希值。
像这样的东西:
c:\Program Files (x86)\Cntlm>cntlm -H -d your_domain -u your_username
Password:
PassLM          4E9C185900C7CF0B6FFCB2044F81920C
PassNT          6E9F120B83EEA0E875CE8E6F9730EC9A
PassNTLMv2      2A0B7C2457FB7DD8DA4EB737C4FA224F  

现在你有密码散列。将它们保存到文本编辑器。

5) 类型:cntlm -M http://www.google.com
再次输入您的密码。
它会给你这样的东西:
c:\Program Files (x86)\Cntlm>cntlm -M http://www.google.com
Password:
Config profile  1/4... Credentials rejected
Config profile  2/4... OK (HTTP code: 302)
----------------------------[ Profile  1 ]------
Auth            NTLM
PassNT          6E9F120B83EEA0E875CE8E6F9730EC9A
PassLM          4E9C185900C7CF0B6FFCB2044F81920C
------------------------------------------------

现在您看到配置文件 2 已成功。因为它对配置文件 2 说 OK。它可能在您的系统上有所不同。

诀窍是,
  • 如果 Auth 是 NT,那么您必须只使用 PassNT
  • 如果 Auth 是 LM,那么你必须只使用 PassLM
  • 如果 Auth 是 NTLM,那么你必须同时使用 PassNT 和 PassLM
  • 如果 Auth 是 NTLMv2,那么你必须只使用 PassNTLMv2

  • 现在我们得到了我们想要的一切。
    对于我的配置,Auth 表示 NTLM,因此我将在 cntlm.ini 配置文件中同时使用 PassNT 和 PassLM。

    这是一个示例配置文件 NTLM(不是 NTLMv2!):
    #
    # Cntlm Authentication Proxy Configuration File
    #
    
    Username yourusername
    Domain yourdomain
    
    Auth NTLM
    PassNT 6E9F120B83EEA0E875CE8E6F9730EC9A
    PassLM 4E9C185900C7CF0B6FFCB2044F81920C
    
    Workstation yourhostname.yourdomain
    
    # Most probably proxy.yourdomain:8080
    Proxy  yourProxyIP:yourProxyPort
    
    NoProxy  localhost, 127.0.0.*, 10.*, 192.168.*
    
    Listen  3132
    
    Gateway yes
    # end of config
    

    6) 要测试您的配置,请键入:cntlm -c cntlm.ini -I -M http://www.google.com
    7) 要启动 cntlm,请输入:net start cntlm
    现在您可以使用您计算机的 IP 地址和端口 3132 作为代理。

    您可以在此处获取最新的 Cntlm 二进制文件:http://cntlm.sourceforge.net/

    关于proxy - 为什么 CNTLM 要求输入密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401468/

    相关文章:

    通过 LDAP 验证 NTLM 身份验证以检索用户名和域的 Java 方法

    java - Hibernate如何实现代理对象?

    web-services - docker:没有链接的网络

    android - 如何设置 Android 模拟器代理设置

    C 套接字 : forward a request to port 80 and read response

    linux - 在 cntlm 配置文件中填写代理信息

    node.js - NodeJS http 模块与 Nginx 服务器

    带有 NTLM 身份验证的 Perl Mechanize

    python - 使用 AUTH=NTLM 针对 Exchange imap 服务器验证 imaplib.IMAP4_SSL

    node.js - 使用 Web 应用程序 (Express.js) 中的 NTLM 身份验证对本地 (IFD) CRM 进行身份验证