Соединение через прокси: NTLM аутентификация

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Marmot
Сообщения: 5
Зарегистрирован: 05 авг 2009, 14:01
Откуда: Россия, Нижний Новгород
Контактная информация:

Все Привет)

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

Как можно сделать так чтобы моя программа могла спокойно "пообщевшись" с проксей выйти дальше в просторы иинтернета (логин и пароль для авторизации на проксе у меня есть)?
то етсь по сути хочу просто узнать, знает ли кто нибудь способы реализации работы интернет-коннекции через непрозрачный http'шный прокси сервер? как пройти NTLM авторизацию? (на сколько я понял там используются алгоритмы md5, isn't it?)

Для тех кто хочет помочь - вот то, что обычно мне сообщает доблестная прокся когда я пытаюсь уломать ее выпусть меня в тырнеты:
GET http://www.google.com:80/index HTTP/1.1

HTTP/1.0 407 Proxy Authentication Required
Server: squid
Date: Wed, 05 Aug 2009 05:43:17 GMT
Content-Type: text/html
Content-Length: 1095
X-Squid-Error: ERR_LIMIT_DENIED 0
Proxy-Authenticate: NTLM
Proxy-Authenticate: Basic realm="MERA proxy-caching web server"
X-Cache: MISS from proxy.te.mera.ru
X-Cache-Lookup: NONE from proxy.te.mera.ru:8080
Via: 1.0 proxy.te.mera.ru:8080 (squid)
Connection: close
:D заранее спасибо всем откликнувшимся ;)
Marmot
Сообщения: 5
Зарегистрирован: 05 авг 2009, 14:01
Откуда: Россия, Нижний Новгород
Контактная информация:

что, неужели никто не может ничем помочь? О_о
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

С авторизацией через прокси по NTLM помочь не могу, сам когда-то копал-недокопал в эту тему. Вопрос, зачем тебе это понадобилось? Если надо вытянуть файл из интернет через прокси, а при этом у тебя настроен для работы через прокси браузер IE (в Свойствах обозревателя), то могу посоветовать тебе использовать API
URLDownloadToFile - один вызов и файл скачан через прокси без знания процесса авторизации.
На заказ: VBA, Excel mc-black@yandex.ru
Marmot
Сообщения: 5
Зарегистрирован: 05 авг 2009, 14:01
Откуда: Россия, Нижний Новгород
Контактная информация:

зачем оно мне надо? - дык это очень просто, просто решил я вдруг сам накалякать какую-нить штуку типа аськи, вроде бы просто, но вот на работе прокся стоит (squid), и просто так в нет не пускает, а как писать аську если невозможно к еёному серверу приконнектиться? ;)
как я понял на горьком опыте обычная авторизация что-то не работает на этой проксе, ибо пароли и хеши мои (по алгоритмы base64) отвергает нафиг(

а есть люди знакомые с библиотеками по md5 и которые могу в кратце обьяснить как с этой штукой работать принято? (мне именно под винду желательно) (8
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

по md5 ты кучу всего готового в Google найдешь, на wasm.ru есть даже код на ассемблере))) Главное - это понять: что и с чем кушать.

squid - open source, если не ошибаюсь - можешь изучать код. На NTLM есть документация на оф. сайте Microsoft.
На заказ: VBA, Excel mc-black@yandex.ru
Marmot
Сообщения: 5
Зарегистрирован: 05 авг 2009, 14:01
Откуда: Россия, Нижний Новгород
Контактная информация:

эх.. найти-то нашел... даже понял какие надо сообщения слать.. только походу не понял КАК их надо слать...
вот например цитатка с офф сайта
This message contains the host name and the NT domain name of the client.

struct {
byte protocol[8]; // 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'
byte type; // 0x01
byte zero[3];
short flags; // 0xb203
byte zero[2];

short dom_len; // domain string length
short dom_len; // domain string length
short dom_off; // domain string offset
byte zero[2];

short host_len; // host string length
short host_len; // host string length
short host_off; // host string offset (always 0x20)
byte zero[2];

byte host[*]; // host string (ASCII)
byte dom[*]; // domain string (ASCII)
} type-1-message
вопрос - как мне все это отослать? прям структуру такую завести и ее отсылать, или как лучше? или можно все поочереди загнать в char* и там уже послать?
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Да как угодно, хоть char, хоть байтовый массив, хоть указанную структуру заполни, хоть раздели ее на несколько структур. Все что воспримет прокси от клиента - это набор n байт какой-то информации, которая как ожидается будет соответствовать по размеру и по содержимому представленной структуре.
На заказ: VBA, Excel mc-black@yandex.ru
Marmot
Сообщения: 5
Зарегистрирован: 05 авг 2009, 14:01
Откуда: Россия, Нижний Новгород
Контактная информация:

Спасибо, щас попробуемс чего-нить придумать)
Ответить