{ "info": { "author": "Jordan Borean", "author_email": "jborean93@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "ntlm-auth\n=========\n\n`Build Status `__\\ `Build\nstatus `__\\ `Coverage\nStatus `__\n\nAbout this library\n------------------\n\nThis library handles the low-level details of NTLM authentication for\nuse in authenticating with a service that uses NTLM. It will create and\nparse the 3 different message types in the order required and produce a\nbase64 encoded value that can be attached to the HTTP header.\n\nThe goal of this library is to offer full NTLM support including signing\nand sealing of messages as well as supporting MIC for message integrity\nand the ability to customise and set limits on the messages sent. Please\nsee Features and Backlog for a list of what is and is not currently\nsupported.\n\nFeatures\n--------\n\n- LM, NTLM and NTLMv2 authentication\n- NTLM1 and NTLM2 extended session security\n- Set the The NTLM Compatibility level when sending messages\n- Channel Binding Tokens support, need to pass in the SHA256 hash of\n the certificate for it to work\n- Support for MIC to enhance the integrity of the messages\n- Support for session security with signing and sealing messages after\n authentication happens\n\nInstallation\n------------\n\nntlm-auth supports Python 2.6, 2.7 and 3.3+\n\nTo install, use pip:\n\n::\n\n pip install ntlm-auth\n\nTo install from source, download the source code, then run:\n\n::\n\n python setup.py install\n\nUsage\n-----\n\nAlmost all users should use\n`requests-ntlm `__ instead of\nthis library. The library requests-ntlm is a plugin that uses this\nlibrary under the hood and provides an easier function to use and\nunderstand.\n\nIf you are set on using ntlm-auth directly to compute the message\nstructures this is a very basic outline of how it can be done. The code\nexamples are psuedocode and should be adapted for your purpose.\n\nWhen initliasing the ntlm context you will have to supply the NTLM\ncompatibility level. The key difference between the different auth\nlevels are the ntlm_compatibility variable supplied when initialising\nNtlm. An overview of what each sets is below; \\* ``0`` - LM Auth and\nNTLMv1 Auth \\* ``1`` - LM Auth and NTLMv1 Auth with Extended Session\nSecurity (NTLM2) \\* ``2`` - NTLMv1 Auth with Extended Session Security\n(NTLM2) \\* ``3`` - NTLMv2 Auth (Default Choice) \\* ``4`` - NTLMv2 Auth\n\\* ``5`` - NTLMv2 Auth\n\nLevel 3 to 5 are the same from a client perspective but differ with how\nthe server handles the auth which is outside this project\u2019s scope. This\nsetting is set independently on that server so choosing 3, 4 or 5 when\ncalling Ntlm will make no difference at all. See\n`LmCompatibilityLevel `__\nfor more details.\n\nExtended Session Security is a security feature designed to increase the\nsecurity of LM and NTLMv1 auth. It is no substitution for NTLMv2 but is\nbetter than nothing and should be used if possible when you need NTLMv1\ncompatibility.\n\nThe variables required are outlined below; \\* ``username`` - The\nusername to authenticate with, should not have the domain prefix,\ni.e.\u00a0USER not DOMAIN\\USER \\* ``password`` - The password of the user to\nauthenticate with \\* ``domain`` - The domain of the user, i.e.\u00a0DOMAIN.\nCan be blank if not in a domain environment \\* ``workstation`` - The\nworkstation you are running on. Can be blank if you do not wish to send\nthis \\* ``cbt_data`` - (NTLMv2 only) The\n``gss_channel_bindings.GssChannelBindingsStruct`` used to bind with the\nauth response. Can be None if no binding needs to occur\n\nLM Auth/NTLMv1 Auth\n^^^^^^^^^^^^^^^^^^^\n\nLM and NTLMv1 Auth are older authentication methods that should be\navoided where possible. Choosing between these authentication methods\nare almost identical expect where you specify the ntlm_compatiblity\nlevel.\n\n.. code:: python\n\n import socket\n\n from ntlm_auth.ntlm import NtlmContext\n\n username = 'User'\n password = 'Password'\n domain = 'Domain' # Can be blank if you are not in a domain\n workstation = socket.gethostname().upper() # Can be blank if you wish to not send this info\n\n ntlm_context = NtlmContext(username, password, domain, workstation, ntlm_compatibility=0) # Put the ntlm_compatibility level here, 0-2 for LM Auth/NTLMv1 Auth\n negotiate_message = ntlm_context.step()\n\n # Attach the negotiate_message to your NTLM/NEGOTIATE HTTP header and send to the server. Get the challenge response back from the server\n challenge_message = http.response.headers['HEADERFIELD']\n\n authenticate_message = ntlm_context.step(challenge_message)\n\n # Attach the authenticate_message ot your NTLM_NEGOTIATE HTTP header and send to the server. You are now authenticated with NTLMv1\n\nNTLMv2\n^^^^^^\n\nNTLMv2 Auth is the newest NTLM auth method from Microsoft and should be\nthe option chosen by default unless you require an older auth method.\nThe implementation is the same as NTLMv1 but with the addition of the\noptional ``server_certificate_hash`` variable and the\n``ntlm_compatibility`` is not specified.\n\n.. code:: python\n\n import base64\n import socket\n\n from ntlm_auth.gss_channel_bindings import GssChannelBindingsStruct\n from ntlm_auth.ntlm import NtlmContext\n\n username = 'User'\n password = 'Password'\n domain = 'Domain' # Can be blank if you are not in a domain\n workstation = socket.gethostname().upper() # Can be blank if you wish to not send this info\n\n # create the CBT struct if you wish to bind it with the auth response\n server_certificate_hash = '96B2FC1EC30792619286A0C7FD62863E81A6564E72829CBC0A46F7B1D5D92A18'\n certificate_digest = base64.b16decode(server_certificate_hash)\n cbt_data = GssChannelBindingsStruct()\n cbt_data[cbt_data.APPLICATION_DATA] = b'tls-server-end-point:' + certificate_digest\n\n ntlm_context = NtlmContext(username, password, domain, workstation, cbt_data, ntlm_compatibility=3)\n negotiate_message = ntlm_context.step()\n\n # Attach the negotiate_message to your NTLM/NEGOTIATE HTTP header and send to the server. Get the challenge response back from the server\n challenge_message = http.response.headers['HEADERFIELD']\n\n authenticate_message = ntlm_context.step(challenge_message)\n\n # Attach the authenticate_message ot your NTLM_NEGOTIATE HTTP header and send to the server. You are now authenticated with NTLMv1\n\nSigning/Sealing\n^^^^^^^^^^^^^^^\n\nAll version of NTLM supports signing (integrity) and sealing\n(confidentiality) of message content. This function can add these\nimprovements to a message that is sent and received from the server.\nWhile it does encrypt the data if supported by the server it is only\ndone with RC4 with a 128-bit key which is not very secure and on older\nsystems this key length could be 56 or 40 bit. This functionality while\ntested and conforms with the Microsoft documentation has yet to be fully\ntested in an integrated environment. Once again this has not been\nthoroughly tested and has only passed unit tests and their expections.\n\n.. code:: python\n\n import base64\n import socket\n\n from ntlm_auth.ntlm import NtlmContext\n\n username = 'User'\n password = 'Password'\n domain = 'Domain' # Can be blank if you are not in a domain\n workstation = socket.gethostname().upper() # Can be blank if you wish to not send this info\n\n # create the CBT struct if you wish to bind it with the auth response\n server_certificate_hash = '96B2FC1EC30792619286A0C7FD62863E81A6564E72829CBC0A46F7B1D5D92A18'\n certificate_digest = base64.b16decode(server_certificate_hash)\n cbt_data = GssChannelBindingsStruct()\n cbt_data[cbt_data.APPLICATION_DATA] = b'tls-server-end-point:' + certificate_digest\n\n ntlm_context = NtlmContext(username, password, domain, workstation, cbt_data, ntlm_compatibility=3)\n negotiate_message = ntlm_context.step()\n\n # Attach the negotiate_message to your NTLM/NEGOTIATE HTTP header and send to the server. Get the challenge response back from the server\n challenge_message = http.response.headers['HEADERFIELD']\n\n authenticate_message = ntlm_context.step(challenge_message)\n\n # Attach the authenticate_message ot your NTLM_NEGOTIATE HTTP header and send to the server. You are now authenticated with NTLMv1\n\n # Encrypt the message with the wrapping function and send the message\n enc_message = ntlm_context.wrap(\"Message to send\", encrypt=True)\n request.body = msg_data\n request.send\n\n # Receive the response from the server and decrypt\n response_msg = response.content\n response = ntlm_context.unwrap(response_msg)\n\nBacklog\n-------\n\n- Automatically get windows version if running on windows, use default\n if not that case\n- Add param when initialising the ntlm context to throw an exception\n and cancel auth if the server doesn\u2019t support 128-bit keys for\n sealing\n- Add param when initialising the ntlm context to not send the MIC\n structure for older servers\n- Add param to independently verify the target name returned from the\n server and the value passed in\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jborean93/ntlm-auth", "keywords": "authentication auth microsoft ntlm lm", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ntlm-auth", "package_url": "https://pypi.org/project/ntlm-auth/", "platform": "", "project_url": "https://pypi.org/project/ntlm-auth/", "project_urls": { "Homepage": "https://github.com/jborean93/ntlm-auth" }, "release_url": "https://pypi.org/project/ntlm-auth/1.4.0/", "requires_dist": [ "ordereddict ; python_version<\"2.7\"", "cryptography (<2.2) ; (python_version<\"2.7\") and extra == 'cryptography'", "cryptography ; (python_version>=\"2.7\") and extra == 'cryptography'" ], "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "Creates NTLM authentication structures", "version": "1.4.0" }, "last_serial": 5696640, "releases": { "1.0.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "813e56bc4d467750da891b74e3003543", "sha256": "2f50cee8b1f498968db2ed76be176b2cfa1c6bf857641bdfef9369fcfd58eba4" }, "downloads": -1, "filename": "ntlm_auth-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "813e56bc4d467750da891b74e3003543", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33275, "upload_time": "2016-08-29T00:13:26", "url": "https://files.pythonhosted.org/packages/bd/59/e5aa57f6283b698b32ac15a90f4f63314520a7dd5971679a52f16bec5884/ntlm_auth-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2940f8df0d3c86c1d5c895546c38a70", "sha256": "66f713644450bc491ba91db9fd2cf14db6a3bc679944cfdb219e114c4cfbdb01" }, "downloads": -1, "filename": "ntlm-auth-1.0.1.zip", "has_sig": false, "md5_digest": "f2940f8df0d3c86c1d5c895546c38a70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33745, "upload_time": "2016-08-29T00:13:28", "url": "https://files.pythonhosted.org/packages/73/f2/b7d2534faff338ee121f5afa52ff944b78d8c4cf46b4c3f404580db66aec/ntlm-auth-1.0.1.zip" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "b58b04a470d42c6c65475c38d9655a8d", "sha256": "98e85fe982ed34c109759cccf32a4773a48fb8713d84e6898daeb8d905d17379" }, "downloads": -1, "filename": "ntlm_auth-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b58b04a470d42c6c65475c38d9655a8d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33292, "upload_time": "2016-08-29T03:32:31", "url": "https://files.pythonhosted.org/packages/55/b7/639bd6d15f4db06f815566c5521c3b72c23e7de15a8025547fcf42c16449/ntlm_auth-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87e5325975c641bc6fbacca496e96748", "sha256": "06b8d587c757c050ec4dce75057f41d519dfae42b09686387463290826ffda63" }, "downloads": -1, "filename": "ntlm-auth-1.0.2.zip", "has_sig": false, "md5_digest": "87e5325975c641bc6fbacca496e96748", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33770, "upload_time": "2016-08-29T03:32:35", "url": "https://files.pythonhosted.org/packages/ac/99/5183cbb714537e0bd31dd266f2bad894f17112f862bb5c65fd6a5367dd2b/ntlm-auth-1.0.2.zip" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "3590fd9b3e825730fe1a2f4ca69c457c", "sha256": "314d289bcf4ee6f2bb2fbb5fc9f9a3edd9c191b6e1c5046e32ce8097ba172489" }, "downloads": -1, "filename": "ntlm_auth-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3590fd9b3e825730fe1a2f4ca69c457c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39006, "upload_time": "2017-04-28T03:43:54", "url": "https://files.pythonhosted.org/packages/9b/38/bd3697b538d8a4fc7638335e9b737fc2da4f5b446c594df1687b5a594011/ntlm_auth-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58136d2d4fff4bb2f690b4538709acc1", "sha256": "e55a7bf96fae7d1aecc859c66e80d7fb5097bd369e3ddf6038f3bd09be10ad95" }, "downloads": -1, "filename": "ntlm-auth-1.0.3.tar.gz", "has_sig": false, "md5_digest": "58136d2d4fff4bb2f690b4538709acc1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25638, "upload_time": "2017-04-28T03:43:56", "url": "https://files.pythonhosted.org/packages/77/20/ae5c919f5306002036e1de7bbdf3e670ae6c826de86fa1c36d890947cd19/ntlm-auth-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "ca87761a966352a0a9c8d40fd8a51d30", "sha256": "fbc8c916c6b0ef66ae631307f1d41a6d2fd8aa380d4b7a659dc0beaf4a440f2d" }, "downloads": -1, "filename": "ntlm_auth-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ca87761a966352a0a9c8d40fd8a51d30", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39024, "upload_time": "2017-05-30T11:10:54", "url": "https://files.pythonhosted.org/packages/47/a8/93ad0f75f2e9e8e55eacea9190595dd548eed4f7ac84c13581572af2c10a/ntlm_auth-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "758b1cd16bc4b6b8889d456fa467d040", "sha256": "3d411413f1309fcd443095d57ab169b637e5b57ce701ac7ae8dbf572cb3533c0" }, "downloads": -1, "filename": "ntlm-auth-1.0.4.tar.gz", "has_sig": false, "md5_digest": "758b1cd16bc4b6b8889d456fa467d040", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25581, "upload_time": "2017-05-30T11:10:56", "url": "https://files.pythonhosted.org/packages/99/97/082579bf448e78f799f7fd48f257210b1dd2e448585e10bd165c1b13d7be/ntlm-auth-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "44c1009adc9f6a00a402c15cdcd61b49", "sha256": "42998e8915ef26a9d4112e4dd7e97382faf1ffb07f2da12490af83a5bb0b1355" }, "downloads": -1, "filename": "ntlm_auth-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "44c1009adc9f6a00a402c15cdcd61b49", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39132, "upload_time": "2017-06-22T10:47:46", "url": "https://files.pythonhosted.org/packages/58/72/bb905af4a94e369b68af113e884e07fac073eae5f4af4577a679c7d9a11a/ntlm_auth-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d199aefd7891dfc55a47a0109700cee5", "sha256": "ae20b5050169410a6a2225c3db8b7e4771165bb35f95f6f64c24ec935e8c9fdf" }, "downloads": -1, "filename": "ntlm-auth-1.0.5.tar.gz", "has_sig": false, "md5_digest": "d199aefd7891dfc55a47a0109700cee5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25684, "upload_time": "2017-06-22T10:47:49", "url": "https://files.pythonhosted.org/packages/36/75/9f1a15858fe3047822deacfb298e9a7b932cfa760f620c60af5aab44343a/ntlm-auth-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "e84fdd728fbaeeeb74ce6704ff181131", "sha256": "07e79b7695deaf3fd17abfbe181382cf42afaa61d2eac3a87eee67b6544a5f75" }, "downloads": -1, "filename": "ntlm_auth-1.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e84fdd728fbaeeeb74ce6704ff181131", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39595, "upload_time": "2017-10-17T21:02:02", "url": "https://files.pythonhosted.org/packages/6d/ac/40df272d335418e6a7d8da1eff962e556ecc98f04de126e3c21bdd7686dc/ntlm_auth-1.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7cfe8edd3e381707280dbb7aeddf95e", "sha256": "86d1d55562bfc57c539dba6c81c4e22f1db9860a0f778dd11fa72e7ae99a0c14" }, "downloads": -1, "filename": "ntlm-auth-1.0.6.tar.gz", "has_sig": false, "md5_digest": "a7cfe8edd3e381707280dbb7aeddf95e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29747, "upload_time": "2017-10-17T21:02:06", "url": "https://files.pythonhosted.org/packages/4e/46/e93bed510b7b22f2c3fd3e1555ddc4b0c41e8ed120e9f2472df97bf231ae/ntlm-auth-1.0.6.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "165cd49ce0b459d7107b973f009e0e64", "sha256": "3e5c0d07652e81f14b9627139949fd7052a04178b314b57577db957855d3b989" }, "downloads": -1, "filename": "ntlm_auth-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "165cd49ce0b459d7107b973f009e0e64", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33510, "upload_time": "2018-03-06T22:40:08", "url": "https://files.pythonhosted.org/packages/69/bc/230987c0dc22c763529330b2e669dbdba374d6a10c1f61232274184731be/ntlm_auth-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "923435ae789924e52718a24a5d69730a", "sha256": "d4b21b85cbbf53ec1f16e435898eb9ab80f1e8f1571f0b7e2eb038c0517dd47a" }, "downloads": -1, "filename": "ntlm-auth-1.1.0.tar.gz", "has_sig": false, "md5_digest": "923435ae789924e52718a24a5d69730a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24740, "upload_time": "2018-03-06T22:40:10", "url": "https://files.pythonhosted.org/packages/f4/e5/72bcd01db360de8af903e303ba5ed4a26b95aec6799e4cd36dd7ccf367eb/ntlm-auth-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "2713bf66b0534f9cefc2368f3c912bc4", "sha256": "9b13eaf88f16a831637d75236a93d60c0049536715aafbf8190ba58a590b023e" }, "downloads": -1, "filename": "ntlm_auth-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2713bf66b0534f9cefc2368f3c912bc4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29556, "upload_time": "2018-06-07T07:36:02", "url": "https://files.pythonhosted.org/packages/8e/5b/4047779fb456b0de503c4acb7b166becf2567efb772abb53998440791d3c/ntlm_auth-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9908a0e83d6d5a1e909388beed4f8972", "sha256": "7bc02a3fbdfee7275d3dc20fce8028ed8eb6d32364637f28be9e9ae9160c6d5c" }, "downloads": -1, "filename": "ntlm-auth-1.2.0.tar.gz", "has_sig": false, "md5_digest": "9908a0e83d6d5a1e909388beed4f8972", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24833, "upload_time": "2018-06-07T07:36:04", "url": "https://files.pythonhosted.org/packages/b5/f4/9df9b6713cf3527453d18b2a4567d49893ca1a1c95a566a88baefcb9796e/ntlm-auth-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "5551101f9bbbe6b657abfb14514af623", "sha256": "ce5b4483ed761f341a538a426a71a52e5a9cf5fd834ebef1d2090f9eef14b3f8" }, "downloads": -1, "filename": "ntlm_auth-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5551101f9bbbe6b657abfb14514af623", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 29725, "upload_time": "2019-04-09T20:57:59", "url": "https://files.pythonhosted.org/packages/d5/3d/1c54e92f62bbc747a638da94adb439f99dc2d2f3041fe41a06b0da4f2808/ntlm_auth-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "287b6520f858c6af8cb78dadc3cb2478", "sha256": "bb2fd03c665f0f62c5f65695b62dcdb07fb7a45df6ebc86c770be2054d6902dd" }, "downloads": -1, "filename": "ntlm-auth-1.3.0.tar.gz", "has_sig": false, "md5_digest": "287b6520f858c6af8cb78dadc3cb2478", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 28419, "upload_time": "2019-04-09T20:58:01", "url": "https://files.pythonhosted.org/packages/1d/ae/7227fff7847416671d1e5f63f6d0e084356eca2c8e54614d5dbb7bd1b46b/ntlm-auth-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "78e70967a786b346886e2c2a0ccb333d", "sha256": "11f7a3cec38155b7cecdd9bbc8c37cd738d8012f0523b3f98d8caefe394feb97" }, "downloads": -1, "filename": "ntlm_auth-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "78e70967a786b346886e2c2a0ccb333d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 29642, "upload_time": "2019-08-19T04:23:41", "url": "https://files.pythonhosted.org/packages/50/09/5e397eb18685b14fd8b209e26cdb4fa6451c82c1bcc651fef05fa73e7b27/ntlm_auth-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81d5de9c2223aaa7b3b62236901437c3", "sha256": "350f2389c8ee5517f47db55a36ac2f8efc9742a60a678d6e2caa92385bdcaa9a" }, "downloads": -1, "filename": "ntlm-auth-1.4.0.tar.gz", "has_sig": false, "md5_digest": "81d5de9c2223aaa7b3b62236901437c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 28340, "upload_time": "2019-08-19T04:23:44", "url": "https://files.pythonhosted.org/packages/12/8c/b7b286360a0876c1a4d0a1651eb3c57f471661e126f5c5f097fbad735f40/ntlm-auth-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "78e70967a786b346886e2c2a0ccb333d", "sha256": "11f7a3cec38155b7cecdd9bbc8c37cd738d8012f0523b3f98d8caefe394feb97" }, "downloads": -1, "filename": "ntlm_auth-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "78e70967a786b346886e2c2a0ccb333d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 29642, "upload_time": "2019-08-19T04:23:41", "url": "https://files.pythonhosted.org/packages/50/09/5e397eb18685b14fd8b209e26cdb4fa6451c82c1bcc651fef05fa73e7b27/ntlm_auth-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81d5de9c2223aaa7b3b62236901437c3", "sha256": "350f2389c8ee5517f47db55a36ac2f8efc9742a60a678d6e2caa92385bdcaa9a" }, "downloads": -1, "filename": "ntlm-auth-1.4.0.tar.gz", "has_sig": false, "md5_digest": "81d5de9c2223aaa7b3b62236901437c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 28340, "upload_time": "2019-08-19T04:23:44", "url": "https://files.pythonhosted.org/packages/12/8c/b7b286360a0876c1a4d0a1651eb3c57f471661e126f5c5f097fbad735f40/ntlm-auth-1.4.0.tar.gz" } ] }