Найти - Пользователи
Полная версия: Проблем с ntlmaps на Windows компютер - IndexError
Начало » Python для новичков » Проблем с ntlmaps на Windows компютер - IndexError
1
ethernall
Здравствуйте ребята,

Предварительно извиняюсь об не очень хорошии русский - я из Болгарии. Я не Python програмист, но у меня есть проблем с ntlmaps на Винодвс-кой машине. Сервер стартирует хорошо но каждое обращение к него (из броузера или из PuTTy) продуцироет вот какая ошибка:

“Unhandled exception in thread started by
Traceback (most recent call last):
File ”D:\Soft\ntlmaps\ntlmaps-0.9.9/lib\proxy_client.py“, line 152, in run
self.auth_routine() # NTLM authorization
File ”D:\Soft\ntlmaps\ntlmaps-0.9.9/lib\proxy_client.py“, line 683, in auth_ro
utine
self.auth_407()
File ”D:\Soft\ntlmaps\ntlmaps-0.9.9/lib\proxy_client.py“, line 629, in auth_40
7
self.ntlm_auther.proxy_ntlm_authentication(self)
File ”D:\Soft\ntlmaps\ntlmaps-0.9.9/lib\ntlm_auth.py", line 105, in proxy_ntlm
_authentication
msg2 = string.strip(string.split(auth))
IndexError: list index out of range"

А попробал 3 версии ntlmaps и 2 версии Питона - тоже самое. Помогите пожалуйста розобратся с етой щуковиной. У меня есть debug логи - если надо прикачу. Автор прогграме очен занят и суппорт практически нет. Спосибо предваритлеьно:)
Андрей Светлов
Покажи-ка свою auth из lib\ntlm_auth.py", line 105, in proxy_ntlm
_authentication
А заодно - что возвращает wget когда ты без авторизации лезешь. Больше всего интересуют заголовки.
ethernall
Спосибо для ответ:) Вот auth частъ из lib\ntlm_auth.py:

auth = connection.rserver_head_obj.get_param_values('Proxy-Authenticate')
if auth:
msg2 = string.strip(string.split(auth))
connection.logger_auth.log(ntlm_messages.debug_message2(msg2))
nonce = ntlm_messages.parse_message2(msg2)
NTLM_msg3 = ntlm_messages.create_message3(nonce, env)
connection.logger_auth.log(ntlm_messages.debug_message3(NTLM_msg3))
else:
NTLM_msg3 = ''

Про wget - не понимаю что надо сделать - обратится через wget директно к прокси? Если так то вот ответ:

C:\Program Files\GnuWin32\bin>wget http://downloads.sourceforge.net/gnuwin32/wge
t-1.11.4-1-doc.zip
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files\GnuWin32/etc/wgetrc
–2009-03-16 13:39:26– http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1
-doc.zip
Resolving proxy.company.com… 10.201.XX.YYY
Connecting to proxy.company.com|10.201.XX.YYY|:8080… connected.
Proxy request sent, awaiting response… 407 Proxy Authentication Required ( The
ISA Server requires authorization to fulfill the request. Access to the Web Pro
xy filter is denied. )
2009-03-16 13:39:27 ERROR 407: Proxy Authentication Required ( The ISA Server re
quires authorization to fulfill the request. Access to the Web Proxy filter is d
enied. ).

Если надо что-то другое сделать пожалуйста обясните подробное.
Андрей Светлов
Как водится, имел в виду несколько иное.
Исходники библиотеки я и сам скачал.
Про auth можно понять, что это список значений для ‘Proxy-Authenticate’ HTTP заголовка
Т.е. если было
Proxy-Authenticate: 1
Proxy-Authenticate: 2
должно содержать
Я до сих пор видел только один параметр ‘Proxy-Authenticate’ на заголовок. Автор либы, видимо, такого же мнения.
А вот дальше непонятно. Видимо, предполагается, что прийдет
Proxy-Authenticate: NTLM <ntlm text>
Строго говоря это протоколом не оговорено. Ответ другой, программа валится.

Что делать? Влезть в исходники с
print ‘+’*20, auth
и посмотреть, что там на самом деле лежит и что с таким случаем делать.

Когда говорил про wget имел главным образом его полезную опцию –save-headers - чтобы посмотреть на эти самые заголовки.

Сразу говорю - с NTLM дела никогда не имел. Но попробовать можно.
Да, еще: вокруг виндовых машин полно, но прокся ни на одной не стоит. И я не знаю, как ее ставить-настраивать, особенно с вашей спецификой. Так что прийдется вам смотреть все самому. Если уж сильно припечет - что-нибудь придумается.
ethernall
Теперь понял:)

Из wget не успел, но вот инфо из дебаг инфо из ntlm:

*** Connecting to remote server…(10.201.XX.YYY:8080)…Done.
*** Sending client request header to remote server…Done.
*** Got remote server response header.
*** Remote server header:
=====
HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. )
Via: 1.1 CWPPRX02
Proxy-Authenticate: Negotiate
Proxy-Authenticate: Kerberos
Proxy-Authenticate: NTLM
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 4115

*** Server ‘Content-Length’ found to be 4115.
*** Authentication routine started.
*** Got Error 407 - “Proxy authentication required”.
*** Authentication methods allowed: Negotiate, Kerberos, NTLM
*** Using NTLM authentication method.
*** Authorization in progress…
*** Closing connection to the remote server…Done.
*** Building environment for NTLM.
*** Using custom NTLM flags: 06820000
*** NTLM version with LM response only.
*** NTLM Domain/Host/User: DDD/UUUUUUUUU/
*** NTLM hashed passwords found.
*** Environment has been built successfully.
*** Connecting to remote server…(10.201.XX.YYY:8080)…Done.
*** Resetting remote server status…Done. (Server buffer - 2193 bytes)
*** Remote server buffer flushed.
*** Fake NTLM header with Msg1:

Видно что есть 3 ряда Proxy-Authenticate:
Proxy-Authenticate: Negotiate
Proxy-Authenticate: Kerberos
Proxy-Authenticate: NTLM

Может бьит ето же проблем?
Андрей Светлов
Похоже на то.
Можно попробовать патчик типа
#msg2 = string.strip(string.split(auth[0])[1])
for name, rest in auth.split(None, 2):
if name.lower() == 'ntlm':
msg2 = rest.strip()
ethernall
Болшое спосибо Андрей:) IndexError болше нет. Теперь другой проблем которой больше непонятной для меня:

Unhandled exception in thread started by <bound method proxy_HTTP_Client.run of
<proxy_client.proxy_HTTP_Client instance at 0x00B78DA0>>
Unhandled exception in thread started by <bound method proxy_HTTP_Client.run of
<proxy_client.proxy_HTTP_Client instance at 0x00B78F30>>

Any idea?
Андрей Светлов
Да какие тут идеи? Поток получил exception и не знает как с ним быть. Вот и завершается аварийно без всякой дополнительной информации.

Завернуть proxy_client.proxy_HTTP_Client.run в try-except блок. В except сказать (для отладки сойдет) import traceback;traceback.print_exc()

И опять посмотреть, что не нравится библиотеке.

Как я вижу, либа не очень строго сделана и на ошибки реагирует неадекватно. Но если гербовой бумаги нет - пишут на пипифаксе. Или программисты создают свой новый тип гербовой бумаги.
ethernall
Извините, проблем же что я не програмист. Я столкнулся с етой программе как нормальной юзер. У меня хорошая база знании об компютрах вообще, но от прогрмирование я не понимаю. Поетому я и спрашишаю глупье вопрось. Проблем немножко академичной сейчас потомучто я нашел другой софт которой сроботал идеально. Но я продолжаю с ето потому что етот софт очень полезной и так же единствоной бессплатной. Хорошо бьi бьiло если смогли бьiт разрешит етот частной случай что'б помогли другие люди которьiе встрчают етото проблем.
Андрей Светлов
Я не в упрек вам. Извините, если слова были поняты неправильно.

Ситуация с моей стороны выглядит так:
- вижу явную ошибку в коде
- догадываюсь, почему она случилась
- воспроизвести ситуацию не могу, но могу подсказать
- прошу дальнейших ответов на мои подсказки

Повторяю, таких прокси в доступных мне конфигурациях нет. Приведете пример - просто отлично.
Если вам все еще интересно, могу попробовать довести до ума эту библиотеку если буду иметь воспроизводимую ошибку. Просто потому, что мне тоже стало интересно.

Похоже, ваш проблемный прокси не доступен снаружи и я не смогу воспроизвести это через коннект на 10.201.XX.YYY:8080

Для решения мне нужна именно воспроизводимая ситуация. Если я не не могу делать это со своей стороны - мы будем очень долго переписываться (я шлю вам предложения - вы в ответ получившиеся логи).

Если я смогу получить коннект с ответом от вашего (или похожего) прокси - попытаюсь библиотеку починить. С предоставлением необходимого патча.

P.S. Обещать не могу. Для меня ваша проблема - по разряду хобби. Из спортивного интереса готов помочь, но результат не гарантирую.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB